Ja/Viewmodels in XSI: Difference between revisions

From Valve Developer Community
< Ja
Jump to navigation Jump to search
m (clean up)
m (fix)
Line 1: Line 1:
[[Category:Japanese]]
[[Category:Japanese]]
originally translated by [[User:RumikoHoshino|RumikoHoshino]], 2005/8/19<br />
originally translated by [[User:RumikoHoshino|RumikoHoshino]], 2005/8/19<br />
original English version: [[View Models]]
original English version: [[Creating Viewmodels]]


=XSI??ソースエンジン??ビューモデル(一人称カメラ??武器モデル)作?=


==カメラ�?�設定==
==カメラの設定==


�?��?�XSI�?�中�?��?ゲーム内�?��?�武器モデル表示�?�''近�?�''表示を得られるよ�?��?�カメラ�?置を設定�?��?��?�。以下�?�A.�??�?��?�B.�?�2�?��?�異�?�る方法�?�行�?��?��?��?�出�?��?��?�。ソースエンジン�?��?�ん�?�視野角(F.O.V.)もサ�?ート�?��?��?��?��?54(人�?�目�?�近�?�値)を使�?��?�エンジン�?��?�表示�?��?��??�?�破綻�?�る�?��?��?��??正�?��?�縮尺�?�武器モデリングを行�?��?��?��?�出�?��?��?�。実際�?��?��?��?ソースエンジン�?��?�2�?��?�視野角システムを使�?��?��?��?��?�。Half-Life2�?��?�世界�?�視野角75度�?��?�??�?��?�武器�?�54度�?�レンダリング�?�れ�?��?�。
まずXSIの中で、ゲーム内での武器モデル表示に''近い''表示を得られるようにカメラ位置を設定します。以下のA.そしてB.の2つの異なる方法で行うことが出来ます。ソースエンジンはどんな視野角(F.O.V.)もサポートしますが、54(人の目に近い値)を使うとエンジンでの表示のときに破綻することなく正しい縮尺で武器モデリングを行うことが出来ます。実際のところソースエンジンでは2つの視野角システムを使っています。Half-Life2では世界は視野角75度で、そして武器は54度でレンダリングされます。


'''(A.)''' 原点0,0,0�?�視野角54度�?�パースペクティブカメラを'''Z軸正方�?�'''�?��?��?��?�よ�?��?��?置�?�る。
'''(A.)''' 原点0,0,0に視野角54度のパースペクティブカメラを'''Z軸正方向'''に向かうように配置する。


'''(B.)''' 原点�?�視野角54度�?�パースペクティブカメラを�?置�?��?下�?�画�?�?�座標�?�移動�?��?��?'''Z軸正方�?�'''�?�沿�?��?��?置�?�る。QC command '''$Origin 0 0 68'''を使�?��?��?置を補正�?�る。�?�れ�?�アニメーションを行�?�キャラクタリグをマージ�?�る�?��??�?�役立�?��?��?��?��?�??�?��?��?��?�れ�?�'''(A.)'''を使�?��?��?�を�?��?��?�?��?�。
'''(B.)''' 原点に視野角54度のパースペクティブカメラを配置し、下の画像の座標に移動させ、'''Z軸正方向'''に沿って配置する。QC command '''$Origin 0 0 68'''を使って位置を補正する。これはアニメーションを行うキャラクタリグをマージするときに役立ちますが、そうでなければ'''(A.)'''を使うことをすすめます。


(XSI�?�camera_interestエンティティを使�?��?��?武器�?��?��??を表示�?��?�る�?��?��?��?��??�?��?�。�?�れをカメラ�?�正�?��?約50ユニット先�?�置�?��?��?武器�?�狙�?��?�スクリーン�?�先�?��?�る�?��?��?��?�を確�?��?る�?��?��?��?��??�?��?�)
(XSIのcamera_interestエンティティを使って、武器の向きを表示させることができます。これをカメラの正面、約50ユニット先に置いて、武器の狙いがスクリーンの先にあるかないかを確かめることができます)


[[Image:camera_settings.jpg]]
[[Image:camera_settings.jpg]]


==�?置決�?==
==位置決め==


�?��?�シーン�?�読�?�込ん�?��?��?��?�場�?��?武器メッシュ�?�マージ/読�?�込�?�を行�?��?��?�。カメラビュー�?�一番よ�??見�?�る場所�?�武器を�?置�?��?��?�。''�?��?�時武器メッシュを移動�?��?��?カメラ�?�移動�?��?��?��?�よ�?��?��?��?��?�。''�?�れをモデル完�?�?�?�行�?��?��?�を�?��?��?�?��?��?�?��?��?��?�も�?��?��?��?リゴンを使�?��?��?�最良�?�見る�?��?��?��?��??る�?�ら�?��?�。下�?�画�?�?�見る�?��?��?��?��??るよ�?��?�(A�?�書�?�れ�?�エリア)ショットガン�?�正�?��?�メッシュ�?�銃身近�??�?�カメラビュー�?�ら見�?��?��?��?��?�ディティール付�?��?��?�れ�?��?��?��?�。�?�れら�?��?リゴン�?��?ンドル近�??�?�使�?��?��?削除�?��?��?��?��?�よ�?��?�も�?�れ�?��?�ん。
まだシーンに読み込んでいない場合、武器メッシュのマージ/読み込みを行います。カメラビューで一番よく見える場所に武器を配置します。''この時武器メッシュを移動させ、カメラは移動させないようにします。''これをモデル完成前に行うことをすすめます、というのもどこにポリゴンを使うのが最良が見ることができるからです。下の画像で見ることができるように(Aと書かれたエリア)ショットガンの正面のメッシュの銃身近くはカメラビューから見えないのにディティール付けがされています。これらのポリゴンはハンドル近くに使うか、削除したほうがよいかもしれません。


[[Image:Shotgun_singlemesh.jpg]]
[[Image:Shotgun_singlemesh.jpg]]


==テクス�?ャ座標�?�マージ==
==テクスチャ座標のマージ==


�?��?�例�?��?��?ショットガン�?�腕�?�モデリング�?テクス�?ャ設定�?�別々�?�行�?れ�?��?��?�(想�?力を�?��?��?��?��?��?�例�?�テクス�?ャ付�?��?��?�れ�?��?�る�?�?��?�?��?��??�?��?��?�)。ビューモデル�?�武器(一人称ビュー�?��?�武器)�?��?�一�?�メッシュ�?�構�?�?�れる必�?�?��?�る�?��?��?テクス�?ャ座標を�?�?��?��?�ショットガン�?�腕�?�メッシュを1�?��?��?�る必�?�?��?�り�?��?�。�?��?��?'''ファイル>マージ(File > Merge)'''�?�腕�?�メッシュを�?��?�シーン�?�マージ�?��?次�?�'''Model'''パ�?ル�?�'''作�? > �?リゴンメッシュ > マージ(Create > Poly. Mesh > Merge'''を実行�?��?��?�。下�?�画�?�?�よ�?��?�ダイアログボックス�?�表示�?�れ�?��?�。�?�?�通常�?�場�?��?許容範囲(tolerance)を0�?��?��?��?�。許容範囲より近�?�頂点�?�1�?��?��?��?��?られ�?��?�。許容範囲�?�大�??�?��?��?�多�??�?�頂点�?�接続�?�れる�?��?��?��?�り�?��?�。モデリング�?�片�?��?��?�作り�?複製�?��?�対称�?�移動�?��?�??れ�?�ら接続�?��?�元�?�戻�?��?��?��?��?�よ�?��?��?�?�れ�?�2�?��?�モデルを�?��?��?��?��?�?�る�?��??�?�有用�?��?�。�?��?�例�?��?��?��?��?��?�?�?�武器�?�頂点�?�手�?�頂点�?�接続�?��?��?��?��??�?��?��?��?��?�?��?��?��?�。'''�?��?��?�(All)'''をクリック�?��?��?全�?��?�マテリアル�?�テクス�?ャを�?�独�?�メッシュ�?�マージ�?��?��?�。
この例では、ショットガンと腕はモデリング、テクスチャ設定が別々に行われました(想像力をつかってこの例はテクスチャ付けがされている、と思ってください)。ビューモデルの武器(一人称ビューでの武器)は単一のメッシュで構成される必要があるので、テクスチャ座標を保ちつつショットガンと腕のメッシュを1つにする必要があります。まず、'''ファイル>;マージ(File >; Merge)'''で腕のメッシュを同じシーンにマージし、次に'''Model'''パネルの'''作成 >; ポリゴンメッシュ >; マージ(Create >; Poly. Mesh >; Merge'''を実行します。下の画像のようなダイアログボックスが表示されます。私は通常の場合、許容範囲(tolerance)を0にします。許容範囲より近い頂点は1つにまとめられます。許容範囲が大きいほど多くの頂点が接続されることになります。モデリングの片側だけ作り、複製して対称に移動し、それから接続して元に戻すといったように、これは2つのモデルをつなぎ合わせるときに有用です。この例においては、私は武器の頂点と手の頂点が接続してほしくはないと思いました。'''すべて(All)'''をクリックして、全てのマテリアルとテクスチャを単独のメッシュにマージします。


[[Image:merge_armmesh.jpg]]
[[Image:merge_armmesh.jpg]]


XSI�?�マージ�?�後新�?��?�メッシュを作り�?��?�(Polymesh�?��?��?��??�?)。�?��?�メッシュを削除�?�る�?��?��?�新�?��?�メッシュをフリーズ�?��?��??�?��?��?�。
XSIはマージの後新しいメッシュを作ります(Polymeshという名前)。古いメッシュを削除するまえに新しいメッシュをフリーズしてください。


[[Image:singlemesh.jpg]]
[[Image:singlemesh.jpg]]
Line 35: Line 34:
==リギング==
==リギング==


メッシュをリグ�?�接続�?��?��?�ょ�?�。�?��?��?��?�?�銃を�?��?�む手�?�指�?�リグも使�?��?��?��?��?��?�('''figure A.''')�?最終版�?��?�手�?�ショットガン�?�回転�?�移動をコントロール�?�る''�?�独''�?�ボーンを使�?��?��?�('''figure B.''')。ボーン数�?�多�?��?��?�''コスト�?�高�??''�?ビューモデル�?�視点�?�ら近�?��?��?キャラクタモデル�?�よ�?��?�ボーンLOD(Level of Detail�?�?離�?�よ�?��?�ボーン�?�詳細度を切り替�?�る)�?��?��?�を�?��?�る�?��?��?��?��??�?��?�ん。も�?�指を動�?��?�必�?�?��?�る�?��?�ら(トリガーを引�??�?��?�)�?手�?�ボーン�?��?�?��?��?�一�?��?��?�ボーンをシーン�?�追加�?��?��??�?��?��?�。�?�?�作る�?�手(銃を�?�?�手)�?�''通常''3�?��?�ボーン�?�ら構�?�?�れ�?��?��?��?�。肘�?手�?銃�?�一�?��?��?��?��?�。�?��?�例�?��?�肘�?�手�?�2�?��?��?�使�?��?��?��?��?�ん。�?��?��?��?�も手�?�ショットガン�?��?ンドルを放�?��?��?��?��?��?��?�ら�?��?�。も�?��?ん銃�?�クリップ�?ボルト�?��?��?��?�動�??パーツ�?��?�る�?�ら�??�?��?�追加�?�ボーン�?�必�?�?��?�ょ�?�。
メッシュをリグに接続しましょう。ここで私は銃をつかむ手に指のリグも使っていますが('''figure A.''')、最終版では手とショットガンの回転と移動をコントロールする''単独''のボーンを使います('''figure B.''')。ボーン数が多いのは''コストが高く''、ビューモデルは視点から近いためキャラクタモデルのようにボーンLOD(Level of Detail、距離によってボーンの詳細度を切り替える)の恩恵を受けることができません。もし指を動かす必要があるのなら(トリガーを引くなど)、手のボーンの子として一つだけボーンをシーンに追加してください。私が作る右手(銃を持つ手)''通常''3つのボーンから構成されています。肘、手、銃に一つずつです。この例では肘と手の2つしか使っていません。というのも手がショットガンのハンドルを放すことがないからです。もちろん銃にクリップ、ボルトといった動くパーツがあるならそこに追加のボーンが必要でしょう。




武器�?�リグを作�?�?�る�?�?�計画を立�?��?��?�ょ�?�。作るアニメーション�?��?ンドルを放�?��?��?��?��?��?��?��?�?��?��?��?�ら�?�?�手�?�全�?��?�指�?�ボーンを入れ�?��?�よ�?��?��?��?��?�。
武器のリグを作成する前に計画を立てましょう。作るアニメーションでハンドルを放すことがないとわかったなら、右手の全ての指にボーンを入れないようにします。


[[Image:simple_rig.jpg]]
[[Image:simple_rig.jpg]]




左手�?�リグを�?��?��?�る�?��?�アニメーション�?�必�?�?�より�?��?�。�?��?�ショットガン�?��?��?リロードアニメーションを行�?��?��?�?�関節を用�?�?��?��?��?��?�。�?�れ�?��?��?�も�?��?�例�?�(�?��?�リグを使�?��?��?��?��?�)�?左手�?�最後�?�2本�?�指�?��?��?�ボーンコントロールを使�?�よ�?��?��?��?��?�も�?�れ�?��?�ん。
左手のリグをどうするかはアニメーションの必要によります。このショットガンでは、リロードアニメーションを行うために関節を用意しています。これはとても古い例で(古いリグを使っています)、左手の最後の2本の指は同じボーンコントロールを使うようにしたかもしれません。


[[Image:left_hand_rig.jpg]]
[[Image:left_hand_rig.jpg]]




リグを設定�?��?�アニメーションを�?��?��?�ら�?カメラ�?�ビュー�?ート�?�ら見�?��?��?��?�を全�?�削除�?��?��?�。リファレンスsmdファイルを�?�?�出力�?��?��?�。下�?�例�?��?�肘�?�ら肩�?��?�を削除�?��?��?��?�。他�?�見る�?��??場所�?��?�?腕�?��?�下�?�?�手�?��?�?��?�??�?��?�ショットガン�?��?��?��?�下�?��?��?�。
リグを設定してアニメーションをつけたら、カメラのビューポートから見えない面を全て削除します。リファレンスsmdファイルを再び出力します。下の例では肘から肩の面を削除しました。他に見るべき場所は、前腕の右下、右手の裏側、そしてショットガンの右面と下面です。


[[Image:reduced.jpg]]
[[Image:reduced.jpg]]


==QCファイル�?�編集==
==QCファイルの編集==


下�?�ショットガン�?�qcファイル�?��?�。�?�?�り�?��??�?��?��??�?��?��?�コマンドを説明�?��?��?�。
下がショットガンのqcファイルです。わかりにくいいくつかのコマンドを説明します。


'''$Origin 0 0 68''' - 上�?�述�?��?�よ�?��?��?XSI�?�プレイヤ�?�視点高�?��?�アニメーションを作�?��?�補償を行�?��?��?�
'''$Origin 0 0 68''' - 上で述べたように、XSIでプレイヤの視点高さでアニメーションを作った補償を行います


'''$Attachment''' - 例�?��?�muzzleアタッ�?メント�?�マズルフラッシュ�?�スプライト/効果�?�起�?�る場所を指定�?��?��?�。 [[Attachments|アタッ�?メント]]�?�親�?��?�るボーンを作る簡�?��?�方法�?��?��?��?��?�XSI�?�ボーン�?�ヌルを親�?付�?��?�る�?��?��?��?�。''出力�?�る�?��??�?�未使用�?�ボーンを残�?�設定�?��?�る�?��?�を忘れ�?��?��?��??�?��?��?�!''
'''$Attachment''' - 例えばmuzzleアタッチメントはマズルフラッシュのスプライト/効果が起こる場所を指定します。 [[Attachments|アタッチメント]]の親となるボーンを作る簡単な方法のひとつはXSIでボーンにヌルを親子付けすることです。''出力するときに未使用のボーンを残す設定にすることを忘れないでください!''


'''Nodes''' - キャラクタ�?��?�在�?��?�状態�?��?�る�?�を�?�?�る�?��?�?�ノードを使�?��?��?�。下�?�例�?��?��?武器�?��?�好的�?�NPC�?��?��?�られ�?�る�?��?��?��?�を示�?��?��?�ノードを使�?��?��?��?��?�(HL2�?��?��?�?�好的�?�NPC�?�武器を�?��?�る�?��?武器を�?�?�?�よ�?��?��?��?��?��?��?�)。�?��?�機能�?�必�?�?��?��?�ら自分�?�武器�?�ら�?�れら�?�ノードコマンドを除�?��?��??�?��?��?�。
'''Nodes''' - キャラクタに現在どの状態にいるかを伝えるためにノードを使います。下の例では、武器が友好的なNPCに向けられてるかどうかを示すのにノードを使っています(HL2では、友好的なNPCに武器を向けると、武器を降ろすようにしています)。この機能が必要ないなら自分の武器からこれらのノードコマンドを除いてください。


$modelname weapons/v_shotgun.mdl
<pre>$modelname weapons/v_shotgun.mdl
$body studio "Shotgun_reference.smd"
$body studio "Shotgun_reference.smd"
$origin 0 0 68
$origin 0 0 68
//Muzzle flash
//Muzzle flash
$attachment "muzzle" "ValveBiped.Muzzle" 0 0 0 rotate -90 0 0 rigid
$attachment "muzzle" "ValveBiped.Muzzle" 0 0 0 rotate -90 0 0 rigid
//Shell eject
//Shell eject
$attachment 1 "ValveBiped.Eject" 0 0 0 rotate 180 0 0 rigid
$attachment 1 "ValveBiped.Eject" 0 0 0 rotate 180 0 0 rigid
$sequence idle01 "Idle01" loop fps 30 activity ACT_VM_IDLE 1 node 0
$sequence idle01 "Idle01" loop fps 30 activity ACT_VM_IDLE 1 node 0
$sequence fire01 "Fire01" fps 30 snap activity ACT_VM_PRIMARYATTACK 1 { event AE_MUZZLEFLASH 0 "SHOTGUN MUZZLE" } node 2
$sequence fire01 "Fire01" fps 30 snap activity ACT_VM_PRIMARYATTACK 1 { event AE_MUZZLEFLASH 0 "SHOTGUN MUZZLE" } node 2
$sequence altfire "Alt_fire01" fps 30 snap activity ACT_VM_SECONDARYATTACK 1 { event AE_MUZZLEFLASH 0 "SHOTGUN MUZZLE" } node 2
$sequence altfire "Alt_fire01" fps 30 snap activity ACT_VM_SECONDARYATTACK 1 { event AE_MUZZLEFLASH 0 "SHOTGUN MUZZLE" } node 2
$sequence draw "Draw" fps 30 snap activity ACT_VM_DRAW 1 node 0
$sequence draw "Draw" fps 30 snap activity ACT_VM_DRAW 1 node 0
$sequence holster "Holster" fps 30 activity ACT_VM_HOLSTER 1 node 0
$sequence holster "Holster" fps 30 activity ACT_VM_HOLSTER 1 node 0
$sequence reload1 "Reload_start" fps 30 activity ACT_SHOTGUN_RELOAD_START 1 node 0
$sequence reload1 "Reload_start" fps 30 activity ACT_SHOTGUN_RELOAD_START 1 node 0
$sequence reload2 "Reload_load_shell" fps 30 activity ACT_VM_RELOAD 1 node 0
$sequence reload2 "Reload_load_shell" fps 30 activity ACT_VM_RELOAD 1 node 0
$sequence reload3 "Reload_finish" fps 30 activity ACT_SHOTGUN_RELOAD_FINISH 1 node 0
$sequence reload3 "Reload_finish" fps 30 activity ACT_SHOTGUN_RELOAD_FINISH 1 node 0
$sequence pump "Pump" fps 30 activity ACT_SHOTGUN_PUMP 1 { event 6001 5 "2" } node 0
$sequence pump "Pump" fps 30 activity ACT_SHOTGUN_PUMP 1 { event 6001 5 "2" } node 0
$sequence dryfire "Dryfire" fps 30 activity ACT_VM_DRYFIRE 1 node 2
$sequence dryfire "Dryfire" fps 30 activity ACT_VM_DRYFIRE 1 node 2
$sequence lowered "Non_threat_idle01" loop activity ACT_VM_IDLE_LOWERED 1 node 1  
$sequence lowered "Non_threat_idle01" loop activity ACT_VM_IDLE_LOWERED 1 node 1  
$sequence lowered_to_idle "Non_threat_to_idle01" activity ACT_VM_LOWERED_TO_IDLE 1 transition 1 0
$sequence lowered_to_idle "Non_threat_to_idle01" activity ACT_VM_LOWERED_TO_IDLE 1 transition 1 0
$sequence idle_to_lowered "Idle01_to_non_threat" activity ACT_VM_IDLE_TO_LOWERED 1 transition 0 1
$sequence idle_to_lowered "Idle01_to_non_threat" activity ACT_VM_IDLE_TO_LOWERED 1 transition 0 1
</pre>


�?ッピー�?ンティング!!
ハッピーハンティング!!


[[Image:hl2-1.jpg]]
[[Image:hl2-1.jpg]]

Revision as of 20:56, 29 November 2005

originally translated by RumikoHoshino, 2005/8/19
original English version: Creating Viewmodels


カメラの設定

まずXSIの中で、ゲーム内での武器モデル表示に近い表示を得られるようにカメラ位置を設定します。以下のA.そしてB.の2つの異なる方法で行うことが出来ます。ソースエンジンはどんな視野角(F.O.V.)もサポートしますが、54(人の目に近い値)を使うとエンジンでの表示のときに破綻することなく正しい縮尺で武器モデリングを行うことが出来ます。実際のところソースエンジンでは2つの視野角システムを使っています。Half-Life2では世界は視野角75度で、そして武器は54度でレンダリングされます。

(A.) 原点0,0,0に視野角54度のパースペクティブカメラをZ軸正方向に向かうように配置する。

(B.) 原点に視野角54度のパースペクティブカメラを配置し、下の画像の座標に移動させ、Z軸正方向に沿って配置する。QC command $Origin 0 0 68を使って位置を補正する。これはアニメーションを行うキャラクタリグをマージするときに役立ちますが、そうでなければ(A.)を使うことをすすめます。

(XSIのcamera_interestエンティティを使って、武器の向きを表示させることができます。これをカメラの正面、約50ユニット先に置いて、武器の狙いがスクリーンの先にあるかないかを確かめることができます)

Camera settings.jpg

位置決め

まだシーンに読み込んでいない場合、武器メッシュのマージ/読み込みを行います。カメラビューで一番よく見える場所に武器を配置します。この時武器メッシュを移動させ、カメラは移動させないようにします。これをモデル完成前に行うことをすすめます、というのもどこにポリゴンを使うのが最良が見ることができるからです。下の画像で見ることができるように(Aと書かれたエリア)ショットガンの正面のメッシュの銃身近くはカメラビューから見えないのにディティール付けがされています。これらのポリゴンはハンドル近くに使うか、削除したほうがよいかもしれません。

Shotgun singlemesh.jpg

テクスチャ座標のマージ

この例では、ショットガンと腕はモデリング、テクスチャ設定が別々に行われました(想像力をつかってこの例はテクスチャ付けがされている、と思ってください)。ビューモデルの武器(一人称ビューでの武器)は単一のメッシュで構成される必要があるので、テクスチャ座標を保ちつつショットガンと腕のメッシュを1つにする必要があります。まず、ファイル>;マージ(File >; Merge)で腕のメッシュを同じシーンにマージし、次にModelパネルの作成 >; ポリゴンメッシュ >; マージ(Create >; Poly. Mesh >; Mergeを実行します。下の画像のようなダイアログボックスが表示されます。私は通常の場合、許容範囲(tolerance)を0にします。許容範囲より近い頂点は1つにまとめられます。許容範囲が大きいほど多くの頂点が接続されることになります。モデリングの片側だけ作り、複製して対称に移動し、それから接続して元に戻すといったように、これは2つのモデルをつなぎ合わせるときに有用です。この例においては、私は武器の頂点と手の頂点が接続してほしくはないと思いました。すべて(All)をクリックして、全てのマテリアルとテクスチャを単独のメッシュにマージします。

Merge armmesh.jpg

XSIはマージの後新しいメッシュを作ります(Polymeshという名前)。古いメッシュを削除するまえに新しいメッシュをフリーズしてください。

Singlemesh.jpg

リギング

メッシュをリグに接続しましょう。ここで私は銃をつかむ手に指のリグも使っていますが(figure A.)、最終版では手とショットガンの回転と移動をコントロールする単独のボーンを使います(figure B.)。ボーン数が多いのはコストが高く、ビューモデルは視点から近いためキャラクタモデルのようにボーンLOD(Level of Detail、距離によってボーンの詳細度を切り替える)の恩恵を受けることができません。もし指を動かす必要があるのなら(トリガーを引くなど)、手のボーンの子として一つだけボーンをシーンに追加してください。私が作る右手(銃を持つ手)は通常3つのボーンから構成されています。肘、手、銃に一つずつです。この例では肘と手の2つしか使っていません。というのも手がショットガンのハンドルを放すことがないからです。もちろん銃にクリップ、ボルトといった動くパーツがあるならそこに追加のボーンが必要でしょう。


武器のリグを作成する前に計画を立てましょう。作るアニメーションでハンドルを放すことがないとわかったなら、右手の全ての指にボーンを入れないようにします。

Simple rig.jpg


左手のリグをどうするかはアニメーションの必要によります。このショットガンでは、リロードアニメーションを行うために関節を用意しています。これはとても古い例で(古いリグを使っています)、左手の最後の2本の指は同じボーンコントロールを使うようにしたかもしれません。

Left hand rig.jpg


リグを設定してアニメーションをつけたら、カメラのビューポートから見えない面を全て削除します。リファレンスsmdファイルを再び出力します。下の例では肘から肩の面を削除しました。他に見るべき場所は、前腕の右下、右手の裏側、そしてショットガンの右面と下面です。

Reduced.jpg

QCファイルの編集

下がショットガンのqcファイルです。わかりにくいいくつかのコマンドを説明します。

$Origin 0 0 68 - 上で述べたように、XSIでプレイヤの視点高さでアニメーションを作った補償を行います

$Attachment - 例えばmuzzleアタッチメントはマズルフラッシュのスプライト/効果が起こる場所を指定します。 アタッチメントの親となるボーンを作る簡単な方法のひとつはXSIでボーンにヌルを親子付けすることです。出力するときに未使用のボーンを残す設定にすることを忘れないでください!

Nodes - キャラクタに現在どの状態にいるかを伝えるためにノードを使います。下の例では、武器が友好的なNPCに向けられてるかどうかを示すのにノードを使っています(HL2では、友好的なNPCに武器を向けると、武器を降ろすようにしています)。この機能が必要ないなら自分の武器からこれらのノードコマンドを除いてください。

$modelname weapons/v_shotgun.mdl
$body studio "Shotgun_reference.smd"
$origin 0 0 68
//Muzzle flash
$attachment "muzzle" "ValveBiped.Muzzle" 0 0 0 rotate -90 0 0 rigid
//Shell eject
$attachment 1 "ValveBiped.Eject" 0 0 0 rotate 180 0 0 rigid
$sequence idle01 "Idle01" loop fps 30 activity ACT_VM_IDLE 1 node 0
$sequence fire01 "Fire01" fps 30 snap activity ACT_VM_PRIMARYATTACK 1 { event AE_MUZZLEFLASH 0 "SHOTGUN MUZZLE" } node 2
$sequence altfire "Alt_fire01" fps 30 snap activity ACT_VM_SECONDARYATTACK 1 { event AE_MUZZLEFLASH 0 "SHOTGUN MUZZLE" } node 2
$sequence draw "Draw" fps 30 snap activity ACT_VM_DRAW 1 node 0
$sequence holster "Holster" fps 30 activity ACT_VM_HOLSTER 1 node 0
$sequence reload1 "Reload_start" fps 30 activity ACT_SHOTGUN_RELOAD_START 1 node 0
$sequence reload2 "Reload_load_shell" fps 30 activity ACT_VM_RELOAD 1 node 0
$sequence reload3 "Reload_finish" fps 30 activity ACT_SHOTGUN_RELOAD_FINISH 1 node 0
$sequence pump "Pump" fps 30 activity ACT_SHOTGUN_PUMP 1 { event 6001 5 "2" } node 0
$sequence dryfire "Dryfire" fps 30 activity ACT_VM_DRYFIRE 1 node 2
$sequence lowered "Non_threat_idle01" loop activity ACT_VM_IDLE_LOWERED 1 node 1 
$sequence lowered_to_idle "Non_threat_to_idle01" activity ACT_VM_LOWERED_TO_IDLE 1 transition 1 0
$sequence idle_to_lowered "Idle01_to_non_threat" activity ACT_VM_IDLE_TO_LOWERED 1 transition 0 1

ハッピーハンティング!!

Hl2-1.jpg