Skip to content

Manual.ja

umiyuki edited this page Nov 22, 2018 · 1 revision

マニュアル

UnityVRAnimationEditorとは?

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を選択してリソースをインポートしてください。

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シーンを開いてプレイモード実行してください。

Node Sample

ノードハンドル(ワイヤフレームで表示されてる物)をVRコントローラで触れるとハイライトされるので、その状態でトリガーを引いている間、オブジェクトを掴めます。トリガーを離すとノードを離します。

キューブには"Node"タグが付いており、移動、回転、拡縮できます。スフィアには"FKNode"タグが付いており、移動はできず回転、拡縮のみ可能です。

左手コントローラの上にはアニメーションウインドウと操作UIが表示されています。

操作方法

ノードの操作

"Node"タグまたは"IKNode"タグを付けたオブジェクトはエディタのプレイモードで操作できます。

VRコントローラでノードハンドル(ワイヤフレームで表示されてるもの)にタッチした状態でトリガーを引いている間オブジェクトを掴んで移動、回転できます。

掴んだままの状態でタッチパッドをタッチしたまま左右にスワイプするとオブジェクトを拡縮できます。

"FKNode"タグを付けたオブジェクトは回転、拡縮のみできます。

自身の操作

コントローラ(左右どちらでも)のグリップを押したまま、コントローラを前後左右に動かすと、その方向に自身が移動します。

グリップを押したままの状態でタッチパッドの左側、右側を押すと自身が回転します。

グリップを押したままの状態でかつタッチパッドをタッチしたまま左右にスワイプすると自身が拡大縮小します。

遠くに移動したい時は一旦自分を巨人にすると素早く移動できます。

アニメーションウインドウの操作

コントローラをアニメーションウインドウや操作UIに向けるとポインターが表示されます。

UI

UIが邪魔な時は左コントローラのメニューボタンを押すと表示/非表示を切り替えられます。

アニメーションウインドウ上にポインターがある時にトリガーを引くと、マウス左クリックと同じ動作になります。
トリガー引きっぱなしでドラッグなどもできます。右クリックはありません。
ただし、VR内からアニメーションクリップの変更やサンプル数の変更をしようとすると、アプリケーションがフォーカスを失い停止してしまいます。
そのような操作は一旦ヘッドセットを外してエディタ上でマウスで操作してください。
基本的に凝った編集をVR内でやろうとすると大変なので、細かい編集はエディタ上でやった方が早いです。

アニメーションウインドウを左右にパンしたい時は、トリガーの代わりに右コントローラのメニューボタンを押しながら左右にドラッグするとパンできます。

操作UIの操作


ノード移動制限:オフにするとノードを移動できなくなります。


ノード回転制限:オフにするとノードを回転できなくなります。


ノード回転制限:オフにするとノードを回転できなくなります。


ピン:オンにすると操作UIをその場に固定します。


アニメーションを再生します


1フレーム進む


1フレーム戻る


レコードモードに入る


最後のキーフレームに進む


最初のキーフレームに戻る


次のキーフレームに進む


前のキーフレームに戻る


現在のフレームの全ての項目にキーを打つ


現在のフレームの全てのキーを削除


コピー:Ctrl+Cと同じ動作


ペースト:Ctrl+Vと同じ動作


アンドゥ:Ctrl+Zと同じ動作


リドゥ:Ctrl+Yと同じ動作

タッチパッドの操作

タッチパッドの側面を押す事で一部の操作が行えます。UI上で操作するより早いです。

touchpad

左コントローラ

←: 1フレーム戻る

→: 1フレーム進む

↑: 最初のキーフレームに戻る

↓: アニメーションを再生します

右コントローラ

←: アンドゥ:Ctrl+Zと同じ動作

→: リドゥ:Ctrl+Yと同じ動作

↑: ペースト:Ctrl+Vと同じ動作

↓: コピー:Ctrl+Cと同じ動作

FinalIK連携

FinalIKを導入している場合、IKを使ってキャラクターをポージングできます。

Assets/UnityVRAnimationEditor/Sample/Scenes/SampleUnityChan_FinalIKシーンを開いてプレイモードに入ってください。

ユニティちゃんの各部位に対応したノードハンドルを操作して、自由にポーズを付けることができます。

IK Sample

ユニティちゃんにアニメーションを付ける

エディタモードでunitychanゲームオブジェクトを選択してください。

アニメーションウインドウのCreateボタンを押して、アニメーションクリップを作成してください。unitychanにアニメーションコントローラが設定され、アニメーションウインドウは編集状態になります。

create animationclip

アニメーターウインドウを開き、空のステートを作成して、デフォルトステートに設定してください。(プレイモードで意図しないアニメーション再生を防ぐため)

emptystate

プレイモードに入ってアニメーションウインドウのRecordを開始すると、ユニティちゃんのアニメーションクリップを編集できます。

デフォルトだとアニメーションクリップのサンプル数が秒間60になってますが、フレームの移動が大変なので12くらいにするのがオススメです。

Timelineサンプル

実際にユニティちゃんにアニメーションを付けて、さらに表情のアニメーションクリップと手のポージングのアニメーションクリップを組み合わせてTimelineで再生するサンプルです。

Assets/UnityVRAnimationEditor/Sample/Scenes/SampleUnityChan_FinalIK_Timelineシーンを開いてください。

Timeline Sample

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に特定のゲームオブジェクトを設定すると、そのオブジェクトの子のオブジェクトにのみノードが表示されるようになります。