-
Notifications
You must be signed in to change notification settings - Fork 3
Manual.ja
Unityエディタのプレイモードで、VR内でオブジェクトを掴んで動かせます。
また、VR内からエディタのアニメーションウインドウを操作できます。
つまり、VR内でアニメーションクリップを編集できます。
Unityエディタの機能を無理やり使ったハッキーな実装になってるので、今のところ色々と使用上の制約があります。(プレイモードに入らないと操作できないなど)
Unity内でキャラクターのアニメーションを作成したい時に利用するのを想定しています。
Timelineでアニメーション動画を作成するなど。
ゲーム用のキャラクターアニメーションなども作成できると思います。
OSはWindowsのみ対応してます
Unity2018.3.0以降のバージョンが必要となります。Unity2018.3.0b10で動作確認しています。
VRヘッドセットはViveに対応しています。通常版Viveで動作確認しています。
VRTKを使っているのでOculus RiftやWindows MRデバイスでも動作するかもしれませんが、検証してません。
PCにSteamVRもインストールしてください。
アセットストアのFinalIKアセットがあるとキャラクターのアニメーション編集で便利です。ないと不便です。バージョン1.8で動作確認しています。
リポジトリをクローンまたはダウンロードして、中のプロジェクトをUnityで開いてください。
Text Mesh Proを有効にするために、メニューからWindow→TextMeshPro→Import TMP Essencial Resourcesを選択してリソースをインポートしてください。
FinalIKアセットを持っている場合、アセットストアからダウンロードしてインポートしてください。
FinalIKアセットを持っていない場合、コンパイルエラーを回避するために、Assets/UnityVRAnimationEditor/Scripts/WithFinalIKフォルダを削除してください。
FinalIKを導入した場合、Timelineプレビュー時などにプレイモードに入らなくてもIKを動作させたいので、使用するIKコンポーネントクラスに[ExecuteInEditmode]アトリビュートを付与してください。
サンプルを動作させるためにはFullBodyBipedIK、LookAtIK、FBBIKHeadEffectorの3つに付与してください。
Unityエディタはアニメーションウインドウのみが子ウインドウになっている状態にしてください。
ちょっと面倒ですがどの子ウインドウがアニメーションウインドウかプログラムから識別できないため必要な制約になります。
マウスをエミュレートしてVRからアニメーションウインドウを操作するので、アプリ実行中にアニメーションウインドウが最前面じゃなかったり、画面外にはみ出たりしていると正常に操作できません。
Assets/UnityVRAnimationEditor/Sample/Scenes/SampleNodeシーンを開いてプレイモード実行してください。
ノードハンドル(ワイヤフレームで表示されてる物)をVRコントローラで触れるとハイライトされるので、その状態でトリガーを引いている間、オブジェクトを掴めます。トリガーを離すとノードを離します。
キューブには"Node"タグが付いており、移動、回転、拡縮できます。スフィアには"FKNode"タグが付いており、移動はできず回転、拡縮のみ可能です。
左手コントローラの上にはアニメーションウインドウと操作UIが表示されています。
"Node"タグまたは"IKNode"タグを付けたオブジェクトはエディタのプレイモードで操作できます。
VRコントローラでノードハンドル(ワイヤフレームで表示されてるもの)にタッチした状態でトリガーを引いている間オブジェクトを掴んで移動、回転できます。
掴んだままの状態でタッチパッドをタッチしたまま左右にスワイプするとオブジェクトを拡縮できます。
"FKNode"タグを付けたオブジェクトは回転、拡縮のみできます。
コントローラ(左右どちらでも)のグリップを押したまま、コントローラを前後左右に動かすと、その方向に自身が移動します。
グリップを押したままの状態でタッチパッドの左側、右側を押すと自身が回転します。
グリップを押したままの状態でかつタッチパッドをタッチしたまま左右にスワイプすると自身が拡大縮小します。
遠くに移動したい時は一旦自分を巨人にすると素早く移動できます。
コントローラをアニメーションウインドウや操作UIに向けるとポインターが表示されます。
UIが邪魔な時は左コントローラのメニューボタンを押すと表示/非表示を切り替えられます。
アニメーションウインドウ上にポインターがある時にトリガーを引くと、マウス左クリックと同じ動作になります。
トリガー引きっぱなしでドラッグなどもできます。右クリックはありません。
ただし、VR内からアニメーションクリップの変更やサンプル数の変更をしようとすると、アプリケーションがフォーカスを失い停止してしまいます。
そのような操作は一旦ヘッドセットを外してエディタ上でマウスで操作してください。
基本的に凝った編集をVR内でやろうとすると大変なので、細かい編集はエディタ上でやった方が早いです。
アニメーションウインドウを左右にパンしたい時は、トリガーの代わりに右コントローラのメニューボタンを押しながら左右にドラッグするとパンできます。
ノード移動制限:オフにするとノードを移動できなくなります。
ノード回転制限:オフにするとノードを回転できなくなります。
ノード回転制限:オフにするとノードを回転できなくなります。
ピン:オンにすると操作UIをその場に固定します。
アニメーションを再生します
1フレーム進む
1フレーム戻る
レコードモードに入る
最後のキーフレームに進む
最初のキーフレームに戻る
次のキーフレームに進む
前のキーフレームに戻る
現在のフレームの全ての項目にキーを打つ
現在のフレームの全てのキーを削除
コピー:Ctrl+Cと同じ動作
ペースト:Ctrl+Vと同じ動作
アンドゥ:Ctrl+Zと同じ動作
リドゥ:Ctrl+Yと同じ動作
タッチパッドの側面を押す事で一部の操作が行えます。UI上で操作するより早いです。
左コントローラ
←:
1フレーム戻る
→:
1フレーム進む
↑:
最初のキーフレームに戻る
↓:
アニメーションを再生します
右コントローラ
←:
アンドゥ:Ctrl+Zと同じ動作
→:
リドゥ:Ctrl+Yと同じ動作
↑:
ペースト:Ctrl+Vと同じ動作
↓:
コピー:Ctrl+Cと同じ動作
FinalIKを導入している場合、IKを使ってキャラクターをポージングできます。
Assets/UnityVRAnimationEditor/Sample/Scenes/SampleUnityChan_FinalIKシーンを開いてプレイモードに入ってください。
ユニティちゃんの各部位に対応したノードハンドルを操作して、自由にポーズを付けることができます。
エディタモードでunitychanゲームオブジェクトを選択してください。
アニメーションウインドウのCreateボタンを押して、アニメーションクリップを作成してください。unitychanにアニメーションコントローラが設定され、アニメーションウインドウは編集状態になります。
アニメーターウインドウを開き、空のステートを作成して、デフォルトステートに設定してください。(プレイモードで意図しないアニメーション再生を防ぐため)
プレイモードに入ってアニメーションウインドウのRecordを開始すると、ユニティちゃんのアニメーションクリップを編集できます。
デフォルトだとアニメーションクリップのサンプル数が秒間60になってますが、フレームの移動が大変なので12くらいにするのがオススメです。
実際にユニティちゃんにアニメーションを付けて、さらに表情のアニメーションクリップと手のポージングのアニメーションクリップを組み合わせてTimelineで再生するサンプルです。
Assets/UnityVRAnimationEditor/Sample/Scenes/SampleUnityChan_FinalIK_Timelineシーンを開いてください。
Timelineウインドウを開いてから、シーンの"Timeline"オブジェクトを選択してください。
Timelineウインドウの再生を押すと、Timelineが再生されます。
デフォルトだとプレイモードでのプレイヤーの位置やサイズをセーブして、次にプレイモードに入った際にロードします。
この挙動を変更したい場合は、シーンのVRAnimationEditor/Managers/SavePlayingTransformオブジェクトのSavePlayingTransformコンポーネントのIs LoadとIs Saveチェックのオンオフでプレイヤー位置のセーブロード機能をオンオフできます。
デフォルトだとプレイモードでノードのゲームオブジェクト名が表示されます。
これを非表示にしたい時は、シーンのVRAnimationEditor/Managers/GenerateNodesオブジェクトのGenerateNodesコンポーネントのIs Show Node Nameのチェックをオフにしてください。
デフォルトだとシーン内の全てのNodeタグオブジェクトにノードが表示されます。
、シーンのVRAnimationEditor/Managers/GenerateNodesオブジェクトのGenerateNodesコンポーネントのRoot Objectに特定のゲームオブジェクトを設定すると、そのオブジェクトの子のオブジェクトにのみノードが表示されるようになります。