投稿

2014の投稿を表示しています

[Unity]OculusSDK 0.4.3 メモ

イメージ
OculusSDK 0.4.2 -> 0.4.3 (0.4.3.1) で結構大きな変更があったので情報を集めているところです。

週末のOcuJamに向けて重い腰を上げて 0.4.3.1 (Unity) を試しはじめたところで、まだドキュメントも読んでいません…

以下、いつも以上にひどい内容でお送りします。

とりいそぎ追加でこれを (2014/11/29)#OcuJam 向けに0.4.3.1移行ガイド作ろうと思いましたけど、公式 https://t.co/ez03mstqsP の一番下のUnityIntegration全部と上から二番目のUnityIntegrationGuideのp24~、あとヒストリを見ておけば大体よさそう
— ウダサン (@udasan_koubou) 2014, 11月 28 API とか
OVRCameraController -> OVRCameraRig右目/左目が RightEyeAnchor/LeftEyeAnchor に変更NearClip は各カメラの値がそのまま使われるオーディオリスナが右目から中心 (CenterEyeAnchor) に移動FollowOrientation がなくなり、標準で親に追従するようにオフにする場合は多分親の回転を無視するか親なしで移動だけ追従させる処理を Update/LateUpdate/OnPreRender のどれかあたりでやって、TimeWarp をどうにかする感じになる気がしますFollow Orientation in SDK 0.4.3 | Unity Integration | Oculus VR Forums (途中までしか読んでいないです)Texture 関連Scale は粗くすると画質とトレードオフでパフォーマンス稼げるみたいな話だったような…Eye Texture のほうは調べないと…OVRPlayerControllerNeckPosition がなくなった気がしますあまり使っていないので調べていません…
パフォーマンス まだ情報集まっていませんすみません。
TimeWarp + Extended が良くないとか Mirror + Direct が良くないみたいなのを見かける気がします。
互換性 まだ(略)

古い SDK でビルドしたソフトが動かないみたいな話が…

[Unity]OculusDK2 ポジトラでモデルを動かしたかった話

以前の OculusRift 勉強会 OcuBen で発表したスライドです。

どちらかというと Unity のアニメーションブレンディングの話です。

DK2 ポジトラでモデルを動かし た か っ た … from Udasan

[Unity]uVRAudio:OculusRift用オーディオリスナ

uVRAudio は Unity で OculusRift コンテンツを作る際のオーディオリスナの設定を調整するためのスクリプトです。

主にヘッドセットではなくスピーカーを使う場合に、トラッキングによる移動や回転をしないようにします。

詳細はこちらのスライドをご確認ください。

VR コンテンツ作りに役立つオーディオのはなし from Udasan ダウンロードuVRAudio v0.9.1 for SDK 0.4.3.1 (2014/11/29)
uVRAudio v0.9.0 for SDK 0.4.2 (2014/10/25)

使い方 (v0.9.1 for SDK 0.4.3.1)SDK 0.4.3.1 インポート済みプロジェクトに対して、uVRAudio の unitypackage をインポートuVRAudioListener を OVRCameraRig にアタッチヘッドフォンなら isHeadphone を true に、スピーカーなら false に(ヘッドフォンのみなら使う意味はもうないです)forwardDirection はおまけです。通常使わなくてよいです
Examples のデモについて (見るほどのものではないです)音がまだ入っていませんすみません。止まってるオブジェクトや動いてるオブジェクトに適当につけてくださいオーディオとは無関係ですが、DemoManager はプロジェクト初期に放り込んでおくとさんじゅうびょうくらい浮くかもしれません
使い方 (v0.9.0 for SDK 0.4.2)uVRAudioListener を OVRCameraController にアタッチヘッドフォンなら isHeadphone を true に、スピーカーなら false にOVRDevice.ResetOrientation() の代わりに uVRAudioListener の ResetOrientaion() を呼ぶスピーカーの場合は正しい向きを向いてから呼ぶ
補足 (v0.9.0 for SDK 0.4.2)標準だとオーディオリスナは右目の位置なのを顔の中心にオーディオリスナはの位置を調整したいなら earPosition を使うNeckPosition, FollowOrientation, TrackerRotateY の変更にもだいたい…

[OculusRIft]DK2でUnityが落ちる問題の対処法

イメージ
OculusRift DK2 の SDK 0.4.0 と Unity で開発時に、"too many threads" というダイアログが出て Unity が落ちてしまう問題の対処法です。


結論としては DK2 を Extend モードにしてメインディスプレイにすることになります。

ウィンドウが DK2 側に行ってしまい不便ですが、この情報で少し幸せになれました。
DK2な人で拡張モードでウィンドウがDK2側モニタにいっちゃってイライラする時のTIPS Windowsキーを押しながら左右カーソルキーを数回押せばアクティブなウィンドウをメインディスプレイに持ってこれる。
— GOROman (@GOROman) 2014, 8月 2
Game ビューを DK2 で見る場合は、Game ビューを分離して DK2 側に持って行ってがんばって右上の最大化ボタンを押します。fps があまり出ないのと、ウィンドウ枠の分多少表示がずれているかもしれませんが一応見られます。



以下補足です。
私の環境 GALLERIA QF870HE, Windows 8.1, 64bitNVIDIA GeForce GTX 870M + Intel HD Graphics 4600Optimus はグローバル設定で「高パフォーマンス NVIDIA プロセッサ」ビデオカードのドライバは最新(NVIDIA : 340.52, Intal : 15.33.22.64.3621)Unity 4.5.2f1Direct HMD Access from Apps モードは全く映らない
現象 Unity エディタで Oculus の SDK を使うシーンを開いて Play する、または開くだけでも、数秒で "too many threads" というダイアログが出て、OK を押すと Unity が終了する
試したこと Direct モード : NG (映らないし落ちる)DX11 : 落ちないが Game ビューにも映らないUnity の Quality Settings で VSync をオフ : NGOculusConfigUtil 終了 : NGOVRService_x64 終了 : NG (Play するとサービスが復活する?)DK2 を接続しない : 落ちない
その…

[OculusRift]素人がVRソフトを展示しながら考えた、没入体験中の説明のしかたについて

イメージ
OculusRift をはじめとするヘッドマウントディスプレイを使った体験の操作方法等を説明するとき、体験者には画面以外の現実世界が見えないことによる難しさがあります。

さらに、ヘッドフォンを併用する場合には外の音声も聞こえづらくなるため、より難しさが上がります。

また、より高い没入感を実現するためには、コンテンツ内容に合った形での説明が望ましいと考えられます。

本記事では、このように視覚、聴覚に制約のある中で、没入感を損なわない説明のしかたについて思うところを書いていきます。

筆者について 素人です。
OculusRift の体験会 Ocufes で何度かコンテンツを展示し、百名以上の方に目の前で体験いただきました。本記事はほぼこの経験によってのみ書かれたもので、専門的な知識は含まれません。
筆者のコンテンツについて 少し宣伝になってしまいますが、具体例として使うために説明させてください。
見習い空賊と天空の少女 という、映画のような世界で主人公の少年になって少女を救出しに行くフライトアトラクションです。

体験者は OculusRift とヘッドフォンを装着し、背もたれのない椅子に座ります。
VR 空間の中では、体験者は飛行機の後部座席に座っており、序盤~中盤は船長の操縦により少女のいる塔を目指すフライトを体験します(下図左)。
終盤では、少女をキャッチするために上図のような姿勢を体験者が実際にとる必要があり、半回転して後ろを向いた上で足の間から前を見るような動作を行います(下図右)。

操作および操作説明に関係する点をまとめると以下になります。

OculusRift 体験が初めての方を主に想定操作は少なくし、マウス、キーボード等の入力デバイスは使わない飛行機の操縦も自動で、進行に必要な操作は終盤の姿勢変更のみおまけとして、特定の場所を注視するとリアクションが返る展示等で説明員がいる状況を想定ただし、操作説明的には個人でもプレイ可能なものを目指している展示に限っているのは周辺機材が特殊なことと、お借りした MMD モデル/ステージの都合、またオマージュ色が濃い内容のため座ってのプレイを想定現実の姿勢と一致していた方が没入感が高く、説明もしやすいヘッドフォンの利用を想定より没入感を高めるためコンテンツ内の音声による説明をより聞き取りやすくするため
プレイ形態について 説…

[OculusRift]見習い空賊と天空の少女

イメージ
「見習い空賊と天空の少女」は、映画のような世界で主人公の少年になって少女を救出しに行く没入型フライトアトラクションです。

ゴーグルに見立てた最新のヘッドマウントディスプレイ OculusRift を身に付け、子供の頃に誰もが一度は憧れた映画のように、飛行機に乗り込み少女の待つ塔へと向かいます。

クライマックスで少女を助け出すには、飛行機の後ろから身を乗り出す「あの姿勢」をリアルでも取らなくてはいけません。あなたは、無事に彼女を助け出すことができるでしょうか?

ギャラリー【ニコニコ動画】【VR】すり抜けながらかっさらってみた『見習い空賊と天空の少女』 (モバイル表示 / YouTube) ※ネタバレあり
体験者の様子 ※ネタバレ控え目、旧バージョン、HMD 同期ズレは別撮りのため
「4 秒で支度しな!」
風を切って進みます
「…どこ見てるんだい」
「パズお!」「シーたん!」
プレイ時間はたった 2 分ほどですが、テーマパークのストーリーライドのような展開にインタラクション性をプラスした本作で、これまでにないアトラクション体験をお楽しみいただけるのではないかと思います。
出展情報超 Ocufes in ニコニコ超会議 3 (2014/4/26-27)Ocufes in 豊橋 (2014/6/1)Ocufes in 六本木 (2014/6/24)Ocufes in DCExpo 2014 @日本科学未来館 (2014/10/26)東京オッキューランド(仮) in ニコニコ超会議 2015 (2015/4/25, 26)都内某社エントランス (2015/7/30)G-Tune × AMD OcuFes 2015夏 (2015/8/24)その他 VR 関連のイベント、勉強会などに出没します
メディア情報ニコニコ超会議3は「Oculus Rift」祭りでした――護衛艦「しまかぜ」からミクさんと添い寝まで総ざらい! - ねとらぼ「誰でも、どこでもできる」自分の街で Oculus Rift の体験会をー Ocufes in 豊橋レポート - もぐらゲームス
クレジット モデル
女船長 : ナターシャ Ver GA1.0 (CPUX4 氏)シーたん : レア様 (かにひら 氏)ゴーレム & 兵士 : ローポリ雑魚敵素材 (黒胡椒 氏)マップ : ベルカ王国 (フレスベルク …

[Unity]iTweenでのパス移動を使う前に知っておいた方がいいこと

Unity で位置や回転などを簡単にアニメーションさせることができるアセット iTween はよく知られています。

iTween ではパスに沿っての移動もできるのですが、ハードに使うにはあまり向いていない面もあるので事前に知っておくといいかもしれません。

良い点 そこそこいい感じにポイント間のカーブを描いてくれるただし接線は編集できないので、完全に意図通りにするのは難しいeasing オプションがけっこう豊富進行方向に向くように回転するオプション orienttopath がある

困った点 速度の調整が非常に困難speed または time パラメータがあるものの、ポイント間の直線距離に依存する=2点間は近いが生成されたカーブは長い場合に意図通りにならない(ただしうろ覚えです)パス移動中に変更できないカーブの接線が変更できないため、一度カーブした後に特に完全な直線を作るのは難しい前後 2 点までしか影響を受けないようなので、一応点を増やせば直線を作れるが、その前後がふくらんだりする問題の調整に追われる複数のパスを滑らかに接続するのが非常に困難movetopath オプションを使えば線はつながるが、滑らかなカーブにはならないすでに終了している Tween に対して iTween.Stop() すると例外が発生することがあるonComplete を使ってフラグ管理できなくもないが面倒とりあえず try-catch しておけばスクリプトの停止は避けられるiTweenPath でパスはエディタ上で編集できるが、あとで調整はしにくいこれは [Unity]iTweenでパスの編集を便利にする で対処するスクリプトを公開しています
上記を知った上でツールの選択をされるのがよいと思います。

[Unity]uState : スクリプトベースのステートマシン

イメージ
uState は Unity 用のスクリプトベースなステートマシンです。

ダウンロードuState v0.9.1

過去のバージョン
uState v0.9.0
概要 スクリプトの記述を前提としたステートマシンです。


基本 1 ステート 1 ファイル。100% スクリプトだけでも記述可能パラメータ、遷移条件、各状態での動作などは自由に記述可能継承による一部改変が容易 といった色気のなさを特徴としています。
使い方 - はじめに 以下、慣れないうちは Examples/00_Common/Scripts にある TemplateStateMachine.csTemplateState.cs をコピーして編集するのがおすすめです。

また、ある程度 C# スクリプトを書くことに慣れた方であれば、これらのファイルやパッケージ内のサンプルを眺めながら以下の説明を読んでいただいた方が理解が早いかもしれません。

使い方 - ステートマシンとステートの作成 ステートマシン作成
新しい C# スクリプトを作成し、uStateMachine を継承するpublic class MyStateMachine : uStateMachine 作成したスクリプトを適当なオブジェクトに追加する ステート作成 まず、後の利便性のため、ベースとなるスクリプトを作成しておく新しい C# スクリプトを作成し、uStateGeneric<MyStateMachine> を継承する public abstract class MyStateBase : uStateGeneric<MyStateMachine>実際に利用するステートを作成する新しい C# スクリプトを作成し、MyStateBase を継承する
public class MyState1 : MyStateBaseMyStateMachine を追加したオブジェクトに子オブジェクトを作成し、MyState1 を追加するインスペクタなどから、MyState1 の State Name を適宜設定する 初期ステートの設定
MyStateMachine の Default State Name を、さきほど設定した MyState1 の State Name にする これで、状態が 1 つだけで何もしないステートマシンができまし…

[Unity]iTweenでパスの編集を便利にする

イメージ
Unity で手軽にパス移動できるアセットとして、iTween とそのパスをエディタ上で編集できる iTweenPath は広く知られています。

が、iTweenPath は中間点の挿入/削除パス全体の平行移動/回転/拡大縮小が実質ほぼ不可能で調整がかなり厳しいので、できるやつを書きました。

WayPoint for iTween (GitHub)


使い方はざっくりと、
iTween を入れる。iTweenPath は不要WayPointPath.cs をつけたオブジェクトを親にする。pathName を適当に決めるWayPoint.cs をつけたオブジェクトを子にする。親の head をこのオブジェクトにするWayPoint.cs をつけたオブジェクトを複製する。さきほどのオブジェクトの next をこのオブジェクトにするパス移動は WayPointAgentSample.cs を参考に です。
エディタ拡張まで作りこんでいないので最初の手動連結はちょっと面倒ですが、あとで楽になると思います。
…iTween も結構クセが強くて、使い込むと色々ハマるので、そのあたりも気が向いたら書こうかなあと。

[OculusRift]Nekolus : バーチャルリアリティで猫と遊ぶ

イメージ
OculusRift で猫と遊べる、Nekolus (ねこらす) を公開しています。



>>> Download (for Windows) from Oculus VR Share DK2 対応 <<<
>>> Download (for Windows) from BowlRoll DK2 対応 <<<


&lt;a href="http://www.nicovideo.jp/watch/sm23491007"&gt;【ニコニコ動画】バーチャルリアリティでぬっこぬこにされてみた&lt;/a&gt;
気ままに歩き回ったりボールを投げると拾ってきたり猫じゃらしにむらがったり増えたり します。
マンション住まいだったり、仕事で日中世話できなかったり、好きなのに猫アレルギーだったりしても大丈夫!
手軽にプレイできるようにということで、どこにでもあるマウス操作です。といってもクリックだけでポインタは不要。またはキーボードでも可です。
クレジット

[モデル]
Cu Cat (Ts-Time)
Free Furniture Props (Vertex Studio)
Round Carpet (Olof Hagelin)
Speeping bed (Vertex Studio)

[BGM]
Ferne Welt (Piro 氏) [neko]

[SE]
フリー素材 -SpiderWorks-  [猫1, 猫2]

[ツール]
Unity  (ユニティ・テクノロジーズ)
VRGUI  (boone188)

2014/05/06 : 動画追加、クレジット追加
2014/06/09 : クレジット追加
2014/07/12 : Oculus VR Share のリンク追加
2014/07/17 : Oculus VR Share 上でのタイトルを "Nekolus - Cats in the Rift" に変更したことに伴い、リンク先 URL 変更
2014/08/03 : DK2 暫定対応版
2014/10/10 : DK2 対応版

[Unity]OculusRiftでモデルの首をスクリプトで動かせないときの対処

イメージ
OculusRift でプレイヤーモデルの首を動かしたいのにうまく動かない、というときのための対処法です。

基本的にプレイヤーモデルの顔はカメラに映りませんが、カメラを目の位置=顔の中心からずれた位置に設置している場合、OculusRift の回転に合わせて顔も回転させておかないと、上を向いたときに髪の毛が映ったり頭の中が見えたりしてしまいます。


(モデルは Mukilus でお借りした Tda 式ミク さんと hzeo 式 KAITO さん)

カメラが顔の中心ではないため NearClip では対処しづらく、特に借り物のモデルでは顔だけを非表示にするのは難しいと思います。

そこで顔は表示させたまま首を動かし、カメラとモデルの目の位置が合っている状態を維持しようと考えるのですが、普通にやると初めは以下のような問題にぶつかるのではないかと思います。
OculusRift のカメラの Rotation をモデルの首に代入するスクリプトを作成し、単体では正しく動くモデルにメカニムアニメーションを適用すると、アニメーションによって首が制御されスクリプトがうまく動かない これについては、まずは以下のサイトなどを参考に、アニメーション側で首ボーンを動かさないように設定できるか試してみるのがよいと思います。
MMD for Unity を使って Oculus 用アプリを作ってみた - 凹みTips

メカ徒然日記 OculusRift+Unity失敗 解決事例 主にカメラ


しかし、自分のケースでは上記がうまく行かなかった(アニメーション側のマスク設定で、首のチェックを外せなかった)ため、以下のようなちょっと強引な方法で解決しました。


画像のように、アバターの Head にモデルの Neck を関連付けることでモデルの Head をメカニム制御対象外として、スクリプトではモデルの Head を回転させるという方法です。

トライ&エラーの上でのいわゆる dirty hack のため、詳細はあまり書いても仕方がないですが、

アバターの Head は必須アバターの Head を正しく設定したまま Neck だけ外し、スクリプトで Neck を制御するのはうまく行かない といったことを挙げておきます。

余談として、メカニムで特定の部位だけを動かすのはアバターボディマスクを使うのが正当なやり方ですが…

[ドット絵]ユニティちゃん

イメージ
ユニティちゃんやユニティ関連のみなさんのドット絵を置いていくかもしれないページです。

まだユニティちゃんだけです。




32x32 (実質 24x32), 32 色です。


このアセットは、『ユニティちゃんライセンス』で提供されています。
このアセットをご利用される場合は、『キャラクター利用のガイドライン』も併せてご確認ください。 2014/3/16 : 素材画像のサイズが 2 倍になっていたのを修正
2015/2/22 : ユニティちゃんライセンス表記

[OculusRift]Mukilus : 初音ミクとあっち向いてホイ

イメージ
OculusRift で目の前の初音ミクさんとあっち向いてホイで遊べる、Mukilus (むきらす) を作ってみました。


>>> ダウンロード (for Windows) <<<
(DK1 / 個人利用の範囲のみでお願いします)

&amp;lt;a href="http://www.nicovideo.jp/watch/sm23007448"&amp;gt;【ニコニコ動画】【初音ミク + OculusRift】 Mukilus 【あっち向いてホイ】&amp;lt;/a&amp;gt;

「正直この発想はあった」であろう、OculusRift の角度センサーであっち向いてホイを実際に作ってみたらこうなりましたミクといえば歌とニコニコ動画。みんな知ってるあの曲から、BPM240 のあの曲まで、弾幕あふれる世界の中でリズムに乗ってノンストップあっち向いてホイ!プレイヤーの手はみんな持ってるマウスでの操作です
参加予定だったニコニコ自作ゲームフェス3にはちょっと遅れてしまいましたが、OculusRift をお持ちの方はぜひミクさんと遊んでみてください。

粗い部分も多々ありますが 現在バージョンアップ版も鋭意作成中です。

2014/3/7 : ページ更新
2014/11/9 : 注意書きなど追記

[Unity]MMD4MFaceBlink - MMD4Mecanimでまばたき

イメージ
(2017/7/22 追記) 上位互換の BlendShapeBlink - ブレンドシェイプでまばたき があります。
こちらは MMD4Mecanim モデルでなくても使用可で、MMD の場合でもフェイシャル付きモーションと併用できるなどのメリットがあります。


MMD モデルを Unity で利用できる、Stereoarts さんの MMD4Mecanim で簡単にまばたきをさせるスクリプトです。

配布はこちらの MMD4MFace とまとめて行っています。(どちらかだけでも動きます)

使い方は、以下の画像のように、


モデルかモデルの親に MMD4MFaceBlink をアタッチして、まばたきの表情モーフ名(複数可)を入力するだけです。時間に関するパラメーターは適宜調整してください。

preferredMorphs にモーフ名を入力すると、そのモーフの値が 0 でない間はまばたきしません。笑って目を閉じたり、目が点になっているときにまばたきをしないようにできます。

(Blink Name は空でもよいです。最新版では削除しました。(2015/2/27))

2015/2/27 変更 : blinkName パラメータを削除(使っていませんでした)
2017/7/22 追記 : 上位互換の BlendShapeBlink について追記

[Unity]MMD4MFace - MMD4Mecanimの表情制御

イメージ
MMD モデルを Unity で利用できる、Stereoarts さんの MMD4Mecanim での表情制御をすこし便利にするスクリプトです。

GitHub : udasan/unity-mmd4mface (GitHub なにそれという方は右下の Download ZIP をどうぞ)

表情モーフを複数まとめたものを一つの表情として管理、制御できます。

使い方は、だいたい以下の画像で伝わるかと思いますが、


モデルかモデルの親に MMD4MFaceController と MMD4MFace (1 つにつき表情 1 つ分) をアタッチして、表情の名前 (faceName) とモーフの情報を入力するだけです。

あとは SetFace(faceName) で表情を変更できます。

また、各 MMD4MFace を無効にするとその表情を無効にできます。

その他、MMD4MFaceController には状態取得系のプロパティ / メソッドがいくつかあります。(詳しくはソース)


利点

複数の表情モーフをまとめられる表情変更するときに、前の表情モーフのリセットを考えなくてよいモデルごとの表情モーフ名の違いを吸収できるスクリプトに日本語を書かなくて済む
注意点

timescale の影響を受ける

もちろん非公式です。(MMD4Mecanim_Alpha_20140216 でいちおうの動作を確認)

Unity 4.3.3f1 現在、インスペクタでの日本語入力がおかしいようですが、以下の記事が参考になると思います。

Unity4.3のインスペクターで日本語入力する方法 | ケットシーウェア


更新があればこの記事に追記していく予定です。

2014/2/20 追記 : 注意点を追記
2014/2/20 更新 : まばたき用スクリプトを追加しました。MMD4MFaceBlink

[Unity]MMD4Mecanimの表情制御 とりあえず版

イメージ
最新はこちら : [Unity]MMD4MFace - MMD4Mecanimの表情制御
MMD4Mecanim で表情モーフのセットをひとつの表情として管理、制御するスクリプトです。

MMD4MFaceController ダウンロードは上記最新ページから行ってください

画像のようにモデルに MMD4MFaceController.cs と複数の MMD4MFace.cs をつけて、あとはスクリプトで Controller の SetFace("angry") などとしてください。


制御対象のモーフを認識して、明示指定のないモーフは自動で 0 にします。

もちろんMMD4Mecanim非公式です。

開発途上で後方互換性は非保証ですので、それでも良い場合かサンプルとしての利用でお願いします。

(外出中のため粗い文章で失礼しました。)
2014/2/20 追記 : MMD4MFaceController を更新(親オブジェクトにアタッチしてもいいように、他。詳細は Readme)、説明を追加
2014/2/22 追記 : 最新はこちら : [Unity]MMD4MFace - MMD4Mecanimの表情制御

[Unity]Tda式アペミクさんを使う際の設定

イメージ
MMD モデルを Unity で扱える FBX に変換してくれる MMD4Mecanim などの登場により、Unity & Oculus 界隈で MMD モデルの利用が進んでいるようです。

中でも特によく使われているモデルの一つに Tda 式初音ミク・アペンド さんがありますが、使う際は AL 未使用モーフを 1 にしましょう。


…readme に書いてある内容ですが、MMD4Mecanim があまりにも簡単に使えることも相まって、読んでない人もいるかなーということで。

詳しくはもう Tda 式アペミクさんの readme (よんでね.txt) を見ていただければいいのですが、いちおう簡単に説明すると、上の図の左のほうは発光パーツの色がくすんでいたり、目のハイライトが水色になってたりします。

Tda 式アペミクさんは AutoLuminous というエフェクトを MME で適用させることを想定して作られていますが、エフェクトをかけない場合用の色変えも AL 未使用モーフとして用意されています。

MMD4Mecanim を使っているなら、この設定は MorphHelper を使うのが簡単です。


あと、LightOff モーフも 1 にしてと書いてあるので、合わせてこれもやった方がよいでしょう。ただ、こちらは画面上で違いを見つけられませんでした。

以下は、MMD 上での AutoLuminous と AL 未使用モーフの比較です。


Unity 上でも本気を出してもらうには、特定パーツを発光させるシェーダーを書いたり?したほうがよいのかもしれませんが、できるかどうか含めて詳しくないのでわかりません…。

ほかの推奨エフェクトである Diffusion と SSAO 相当のエフェクトをかけるためにも、やっぱりシェーダーとかアンビエントオクルージョンの勉強もしないとなあ。

[Unity]アップ時に可愛く撮る(カメラの視野角)

イメージ
写真か 3D について少しでも知識のある人には常識だと思うので、何をいまさらという話になるかと思いますが、自分はこれを今日知って衝撃を受けました。

まずは以下を。


左右ともに、モデルは全く同じで Tda 式初音ミク・アペンド さんです。

違いはカメラだけで、左が視野角 60 度(広角) で被写体に近付いて撮ったもの、右が視野角 10 度(望遠) でやや遠くから撮ったものです。(画面は MMD でキャプチャしたものですが、Unity でも同様です)

顔の大きさがだいたい同じになるようにしましたが、左はかなり歪んでいるのがわかりますね。左しか知らないうちは、これでも可愛いと思っていたのですが…右と比べると差は歴然。

そして、Unity のカメラはデフォルトで視野角 (Field of view) が 60 なのです。


Unity スクリプトリファレンス - Camera.fieldOfView (4.3.3f1 現在)

カメラにあまり造詣がないので、広角かつアップの使い道も実はあるのかもしれませんが、Unity でもアップの画を撮るとき通常は画角(視野角)を狭めて撮るのがよさそうです。

Oculus Rift? あれ用のカメラは現実の視野角に合わせて自動で 90 度超に調整されるから…

参考
動画を作ってみよう!・5~カメラについてもう少し詳しく - はじめてのMikuMikuDance!MMDの標準ミクさんを可愛く撮るためのTipsと自己流カスタマイズの紹介 - DONburi Roomゲームは初心者にやさしく: Oculus VR ベストプラクティス ガイド 付録(非公式翻訳) > 付録 B - 視野角およびスケール 2014/2/11 追記 : 参考サイトを追記。

[Unity]ナビメッシュでの経路探索の使い方と注意点

イメージ
Unity で簡単に経路探索を実装するにはナビメッシュが便利です。

今回は、基本的な使い方と、使ってみた上での注意点などを書いていきます。

基本 ナビメッシュを使うと、こんな感じで障害物を避けて目的地まで移動させることができます。


(日本語マニュアル)
ナビメッシュおよび経路探索 - Unity Manual

(英語マニュアル)
Unity - Navigation Meshes

現時点で日本語マニュアル(ちょっと古い?)には Pro のみと書いてありますが、英語マニュアルには書いていないので使えるみたいです。

(多分。英語でもページによって Pro only と書いてあったりします。 Unity - Pathfinding とか Unity - NavMesh Layers とか。Free 版での動作は未確認。)


とりあえず移動させるだけなら
シーンに床や障害物を置くそれらを Navigation Static にする(インスペクタ右上。Static チェックで OK、下三角マークで詳細)メニュー -> Window -> Navigation -> Bake タブ -> Bake ボタンで通れる場所を焼き込み移動させたいオブジェクトに NavMeshAgent コンポーネントをつける自前のスクリプトで、移動させたいオブジェクトの NavMeshAgent を取得して目的地を SetDestination で指定する と簡単です。


さらに、
メッシュ上は離れてしまっている経路を結ぶオフメッシュリンク - Unity Manual地形ごとの移動コストを設定する(川は渡れるけど好まない等)ナビメッシュレイヤー - Unity Manual固定でない障害物を避けて移動する(人や自動ドアなど)ナビメッシュ障害物 - Unity Manual といったこともできます。

注意点 ここから注意点などです。

微調整が効かないBake したナビメッシュ自体の手動調整はできませんBake 時の設定やナビメッシュレイヤー、Navigation Static のオンオフ、果てはオブジェクト自体の位置を微調整して Bake を繰り返すことになります
微妙に浮く下の画像のように、焼き込んだナビメッシュが床から離れることがあります
おそらく壁や手すりが悪さをしているのだと思いますが…