Upload
ueta
View
1.676
Download
2
Embed Size (px)
Citation preview
Road to Stingray イベント 第 1弾
~ Stingray エンジン、ゲーム開発のファーストステップ~
3 月 11 日(金) 14: 00 - 17: 00http://area.autodesk.jp/event/road_to_stingray_1/
フリーランス テクニカルアーティスト 上原 達也
Luaとノードベースで実現できる補助骨のリアルタイムリグ
Lua? →スクリプト言語です。今回、値の取得・設定、計算に使います。
補助骨? →
水色の骨が補助骨になります。
「上腕と腕の 2本の骨だけでは、メッシュが綺麗に変形しない」→ 骨を増やして綺麗に見えるように
Luaとノードベースで実現できる補助骨のリアルタイムリグ
リアルタイムリグ? 補助骨ってアニメーションいらないんじゃない? → ゲーム上でその都度計算すればいい!
橙色 アニメーションデータ あり水色 アニメーションデータ なし
※リアルタイムリグに関する詳しい情報は、SQEX 佐々木隆典さん が CEDEC2010 で話された「リアルタイムリグ − DCCツールと実機で動作する補助関節のセットアップ」もご確認ください。http://cedec.cesa.or.jp/2010/program/VA/C10_P0090.html
Luaとノードベースで実現できる補助骨のリアルタイムリグ
手順
1.モデル、アニメーションをインポート。
2.補助骨に対して 「 Disable Animation」 (isAnimated=Fasle) を設定。
Luaとノードベースで実現できる補助骨のリアルタイムリグ
Stingray Flow(ノードベース)版
・ FlowではMatrixが使えないのでPosition( Vector3)を使用。
「 Get World Position」というノードでワールド座標における
骨の位置を取得することができる。※ローカルの位置も取得できます。設定はローカル
のみ。
Luaとノードベースで実現できる補助骨のリアルタイムリグ
Stingray Lua 版
・Matrixが使える。・デバッガでステップ実行できる。・ Flowノードがすっきり。
カスタム Flowノードの中身
Luaとノードベースで実現できる補助骨のリアルタイムリグ
まとめ
リギングスキルをゲームエンジンでも生かせる。
フレームレートの影響(速度など)を受けるリグは注意。
Maya上では、時間の設定が 30fpsでも 24fpsでも同じ挙動のリグを組む。 例:Mayaの設定が 30fpsなら (1.0/30.0)を DeltaTimeとして、
加算されていく値に乗算する。Stingray上では DeltaTimeを取得できるのでそのまま乗算する。
Luaとノードベースで実現できる補助骨のリアルタイムリグ
メモ
・Mayaで動作を試して、 Stingrayで試して・・・というのは非効率すぎるので変換ツール必須。もしくは、Mayaと Stingrayで互換性のある汎用的なノードを作る方がよさそう。
・Mayaも Stingrayの Flowも標準ノードだけでは・・・リギング厳しい。
・ Stingrayで JointOrientは存在しない。(ピボットやスケールはまだちゃんと試してません)
NVIDIA PhysX でキャラクターの付属物を揺らす方法
「Mayaでのセットアップ方法」
注意点・Mayaの単位は「メートル」( PhysX設定時だけ)
モデリングとかアニメーションの作業は「センチメートル」で OK.・Maya2016では PhysXのプラグインのカプセルコリジョンに不具合があるっぽい。
NVIDIA PhysX でキャラクターの付属物を揺らす方法
「 Stingrayへの取り込み方」
キャラクターの Unit名と、Mayaから出力された 2つのファイル名を同じにしないと Stingrayに取り込めません。
ファイル名を同じにしたら、 Stingrayのアセットブラウザでキャラの Unitを右クリック、 Reimport を実行すれば自動的に取り込まれます。
Mayaから出力(PPK_m)
Unit (PPK_m)
NVIDIA PhysX でキャラクターの付属物を揺らす方法
「 Unit Editorでの設定」
OFFにしておかないと、ゲームが始まった瞬間から物理が ONになってしまう。 ON/OFFは別で制御したい。
EnabledをOFF
NVIDIA PhysX でキャラクターの付属物を揺らす方法
「ステート(レイヤー)の組み方・切り替え方」
アニメーションの遷移部分。
物理の遷移はアニメーションの遷移とレイヤーを分ける。
※全身脱力(ラグドール)の場合はレイヤーを分けなくてもよい。
NVIDIA PhysX でキャラクターの付属物を揺らす方法
「 Ragdoll State」
物理の ON/OFFを、2つの RagdollState の切り替えで行う。
※全身脱力(ラグドール)の場合は、通常のClipState(アニメーション)から RagdollStateへ遷移させることができる。
注意: RagdollState間の遷移は BlendDurationが効かない
NVIDIA PhysX でキャラクターの付属物を揺らす方法
まとめ
激しいアニメーションには向かない。 → 激しいアニメーションのときだけ 物理を OFF にする。
挙動の調整が大変。 → Maya上である程度確認できる。(それでも大変)
HumanIKの使いどころ
まとめ
モーションデータを増やさずに表現の幅が広がる。
必ずしも必要というわけではないけれど、アイディア次第でいろいろできそう。
Maya の HumanIK に慣れておくと、Stingray で HumanIK の Flow を組むのが楽になる。( Flowノードやパラメータの意味がわかる)