Ja/QC Commands: Difference between revisions

From Valve Developer Community
< Ja
Jump to navigation Jump to search
m (fix)
m (text content fix test)
Line 4: Line 4:
.QCコマンドリファレンス
.QCコマンドリファレンス


=標準コマンド=
<br />
<code >$scale (scale)</code >
* モデルを指定した量だけ拡大縮小します。1.0を指定するとモデルは標準に、0.5だと半分に、2.0だと2倍の大きさになります。<code >$scale</code >コマンドは全ての.smdファイルへのリファレンスの前におく必要があることに注意してください。そうでないと拡大縮小は適用されません。
<code >$poseparameter (name) (min) (max) ["loop" (number)] ["wrap"]</code >
* これらはシークエンス(sequences)内で通常指定される"blend"パラメータとほぼ同じですが、stuidomdlが範囲を推定するのではなく、範囲を明示的に宣言できるという点が違います。"loop"を指定した場合、エンジンは値の計算を折り返して(wrap)行います。
<code >$attachment (name) (bone name) (X) (Y) (Z) ["absolute"] ["rigid"] ["rotate" pitch yaw roll]</code >
* Attachmentポイント(他のモデル、効果などの接続点)は以前のように固定したインデックスではなく、名前で指定されるようになりました。ボーンの相対位置だけではなく、絶対座標系で定義することも可能です。"rigid"の指定を行うと、接続されたボーンはアニメーションしないものとみなされ、最適化で取り除かれる可能性があり、その場合親として利用できる最初のボーンに接続されます。
"rotate"オプションはAttachmentポイントの位置関係を親ジョイントと相対的に変更します。
<code >$hierarchy (child bone) (parent bone)</code >


=標準コマンド=
* リファレンスファイルの内容に関わらず、特定のボーンの階層構造を強制的に設定します。通常ボーンの階層構造は最初にファイルに登場した親子関係によって生成されます。このコマンドによってその生成された階層構造を任意に上書きすることができます。
 
注意: モデル作成者は、アニメーション作成者が少なくともソースファイルにおいてボーンの階層構造を変えることを許すでしょう。アニメーション再生時には単独の固定した階層構造に統一しますが、手のアニメーションのタスクの場合は階層構造を変更するのがたやすいことも多いです。階層構造は最初に登場する親子関係で定義されます。
<code >$definebone (name) (parent) (X) (Y) (Z) (xr) (yr) (zr) (fixup XR) (fixup YR) (fixup ZR)</code >
 
* .smdファイルの外でボーンを定義します。これはアニメーションのみを含む.mdlを作る際に役立ちます。このコマンド無しではどのジオメトリにもattachmentポイントにも接続していない全てのボーンが最適化されて取り除かれてしまうからです。このボーン定義コマンドはstudiomdlのコマンドラインで"-definebones"を指定することで書き出すことができます。
 
<code >$animation (name) (file) [(options)...]</code >


* このコマンドはそれぞれ違うオプション(フレーム番号、配置など)をもった複数のアニメーションからシークエンスを作成するときに使います。シークエンスを作成するときに、ファイル名の代わりにここで指定したアニメーション名を呼び出します。


<code>$scale (scale)</code>
<code >$declaresequence (name)</code >
* モデルを指定�?��?��?�?��?�拡大縮�?�?��?��?�。1.0を指定�?�る�?�モデル�?�標準�?��?0.5�?��?��?�分�?��?2.0�?��?�2�?�?�大�??�?��?��?�り�?��?�。<code>$scale</code>コマンド�?�全�?��?�.smdファイル�?��?�リファレンス�?��?�?��?��??必�?�?��?�る�?��?��?�注�?�?��?��??�?��?��?�。�??�?��?��?��?��?�拡大縮�?�?��?�用�?�れ�?��?�ん。


<code>$poseparameter (name) (min) (max) ["loop" (number)] ["wrap"]</code>
* シークエンスの先行宣言を行います。これは外部のmdlファイルにあるシークエンスをレイヤーとして加えるなど、ローカルには宣言されていないシークエンスを使うときに役立ちます。$declaresequenceはローカルシークエンスが参照できる空のシークエンスエントリーを作り、実行時にはこれは実際のシークエンスインデックスで上書きされます。
* �?�れら�?�シークエンス(sequences)内�?�通常指定�?�れる"blend"パラメータ�?��?��?��?��?��?��?��?��?stuidomdl�?�範囲を推定�?�る�?��?��?��?��??�?範囲を明示的�?�宣言�?��??る�?��?��?�点�?��?��?��?��?�。"loop"を指定�?��?�場�?��?エンジン�?�値�?�計算を折り返�?��?�(wrap)行�?��?��?�。


<code>$attachment (name) (bone name) (X) (Y) (Z) ["absolute"] ["rigid"] ["rotate" pitch yaw roll]</code>
<code >$bonemerge (name)</code >
* Attachment�?イント(他�?�モデル�?効果�?��?��?�接続点)�?�以�?�?�よ�?��?�固定�?��?�インデックス�?��?��?��??�?�??�?�?�指定�?�れるよ�?��?��?�り�?��?��?�。ボーン�?�相対�?置�?��?��?��?��?��??�?絶対座標系�?�定義�?�る�?��?�も�?�能�?��?�。"rigid"�?�指定を行�?��?��?接続�?�れ�?�ボーン�?�アニメーション�?��?��?�も�?��?��?��?��?�れ�?最�?�化�?��?�り除�?�れる�?�能性�?��?�り�?�??�?�場�?�親�?��?��?�利用�?��??る最�?�?�ボーン�?�接続�?�れ�?��?�。


"rotate"オプション�?�Attachment�?イント�?��?置関係を親ジョイント�?�相対的�?�変更�?��?��?�。
* 指定したボーンはマージされるかもしれない([[Attachments" title="Attachments">Attachments</a>参照)とゲームコードに示す手がかりとして働きます。この指定がなくてもボーンを使うことはできますが、パフォーマンスの警告をうけることになります。


<code>$hierarchy (child bone) (parent bone)</code>
<code >$includemodel (filename)</code >
* リファレンスファイル�?�内容�?�関�?ら�?��?特定�?�ボーン�?�階層構造を強制的�?�設定�?��?��?�。通常ボーン�?�階層構造�?�最�?�?�ファイル�?�登場�?��?�親�?関係�?�よ�?��?�生�?�?�れ�?��?�。�?��?�コマンド�?�よ�?��?��??�?�生�?�?�れ�?�階層構造を任�?�?�上書�??�?�る�?��?��?��?��??�?��?�。


注�?: モデル作�?者�?��?アニメーション作�?者�?�少�?��??�?�もソースファイル�?��?��?��?�ボーン�?�階層構造を変�?�る�?��?�を許�?��?��?�ょ�?�。アニメーション�?生時�?��?��?�独�?�固定�?��?�階層構造�?�統一�?��?��?��?��?手�?�アニメーション�?�タスク�?�場�?��?�階層構造を変更�?�る�?��?��?�や�?��?��?��?�も多�?��?��?�。階層構造�?�最�?�?�登場�?�る親�?関係�?�定義�?�れ�?��?�。
* この.mdlファイルが実行時に読み込む.mdlファイルを追加指定します。その.mdlファイルの全てのシークエンスとアニメーションがモデルに追加されます。アニメーションやシークエンスは順番に処理され、名前の衝突があるアニメーション・シークエンスは後続のものが無視されます。ローカルと同じ名前のエントリーがある場合、最初に宣言されたものが使われます。


<code>$definebone (name) (parent) (X) (Y) (Z) (xr) (yr) (zr) (fixup XR) (fixup YR) (fixup ZR)</code>
読み込む.mdlは異なるボーンの順番でもかまいませんが、同じ階層構造そしてIKチェーン宣言がされている必要があります。これを確かめる実行時のチェックは今のところありません。
* .smdファイル�?�外�?�ボーンを定義�?��?��?�。�?�れ�?�アニメーション�?��?�を�?�む.mdlを作る際�?�役立�?��?��?�。�?��?�コマンド無�?��?��?��?��?�ジオメトリ�?�もattachment�?イント�?�も接続�?��?��?��?��?�全�?��?�ボーン�?�最�?�化�?�れ�?��?�り除�?�れ�?��?��?��?��?�ら�?��?�。�?��?�ボーン定義コマンド�?�studiomdl�?�コマンドライン�?�"-definebones"を指定�?�る�?��?��?�書�??出�?��?��?��?��?��??�?��?�。
読み込まれる.mdlからはアニメーションとシークエンスのみが使われます。今のところ、モデル、テクスチャ、面、attachmentなどは無視されます。
<code >$animblocksize (size in K)</code >


<code>$animation (name) (file) [(options)...]</code>
* この指定を行うと、全てのアニメーションデータは.aniファイルに書き出され、シークエンスがデータが必要になったときにオンデマンドで読み込まれます。"size in K"はアニメーションがグループにまとめられるブロックのサイズです。4Kから64Kが問題ないですが、16K、32Kがメモリ断片化の面においてよい特徴をもちます。
* �?��?�コマンド�?��??れ�?�れ�?��?�オプション(フレーム番�?��?�?置�?��?�)をも�?��?�複数�?�アニメーション�?�らシークエンスを作�?�?�る�?��??�?�使�?��?��?�。シークエンスを作�?�?�る�?��??�?��?ファイル�??�?�代�?り�?��?��?��?�指定�?��?�アニメーション�??を呼�?�出�?��?��?�。


<code>$declaresequence (name)</code>
<code >$weightlist (name) (bone name) (weight) [[(bone name) (weight)] ....]</code >
* シークエンス�?�先行宣言を行�?��?��?�。�?�れ�?�外部�?�mdlファイル�?��?�るシークエンスをレイヤー�?��?��?�加�?�る�?��?��?ローカル�?��?�宣言�?�れ�?��?��?��?�シークエンスを使�?��?��??�?�役立�?��?��?�。$declaresequence�?�ローカルシークエンス�?��?�照�?��??る空�?�シークエンスエントリーを作り�?実行時�?��?��?�れ�?�実際�?�シークエンスインデックス�?�上書�??�?�れ�?��?�。


<code>$bonemerge (name)</code>
* 他のアニメーションの上にブレンドされるアニメーションが使用できるボーンのウェイトのリストを作ります。このリストはルートボーンのウェイトは0で、全ての子ボーンは一番近い親のウェイトを引き継ぐと過程しています。これによりウェイトが変化する部分だけウェイトを指定すればよく、リストの全てのボーンに指定を行う必要はありません。
* 指定�?��?�ボーン�?�マージ�?�れる�?�も�?�れ�?��?�([[Attachments]]�?�照)�?�ゲームコード�?�示�?�手�?��?�り�?��?��?��?�??�?��?�。�?��?�指定�?��?��??�?�もボーンを使�?��?��?��?��?��??�?��?��?��?パフォーマンス�?�警告を�?��?�る�?��?��?��?�り�?��?�。


<code>$includemodel (filename)</code>
<code >$staticprop</code >
* �?��?�.mdlファイル�?�実行時�?�読�?�込む.mdlファイルを追加指定�?��?��?�。�??�?�.mdlファイル�?�全�?��?�シークエンス�?�アニメーション�?�モデル�?�追加�?�れ�?��?�。アニメーションやシークエンス�?�順番�?�処�?��?�れ�?�??�?�?��?�?�?��?�るアニメーション・シークエンス�?�後続�?�も�?��?�無視�?�れ�?��?�。ローカル�?��?��?��??�?�?�エントリー�?��?�る場�?��?最�?�?�宣言�?�れ�?�も�?��?�使�?れ�?��?�。


読�?�込む.mdl�?�異�?�るボーン�?�順番�?�も�?��?��?��?��?�ん�?��?�?��?�階層構造�??�?��?�IK�?ェーン宣言�?��?�れ�?��?�る必�?�?��?�り�?��?�。�?�れを確�?��?る実行時�?��?ェック�?�今�?��?��?��?�?�り�?��?�ん。
* 全てのボーンがオブジェクトに集約されます。オブジェクトにアニメーションがない場合のみ使うことができます。それでも、これによりモデルがより早くレンダリングされるのでできる限り使いたいと思うでしょう。


読�?�込�?�れる.mdl�?�ら�?�アニメーション�?�シークエンス�?��?��?�使�?れ�?��?�。今�?��?��?��?�?モデル�?テクス�?ャ�?�?��?attachment�?��?��?�無視�?�れ�?��?�。
<code >$realignbones</code >


<code>$animblocksize (size in K)</code>
* これは全てのボーンに再整列を強制します - 可能な場合、ボーンの一番長い軸がボーンのX軸になるようにします。これは子ボーンが親ボーンの対角線上になり、軸にそったバウンディングボックスがモデルに合わない形になることが多いヒットボックスの作成においてと、子ボーンが親ボーンのX軸上にあることをもとめるIKシステムで役に立ちます。
* �?��?�指定を行�?��?��?全�?��?�アニメーションデータ�?�.aniファイル�?�書�??出�?�れ�?シークエンス�?�データ�?�必�?�?��?��?��?��?��??�?�オンデマンド�?�読�?�込�?�れ�?��?�。"size in K"�?�アニメーション�?�グループ�?��?��?��?られるブロック�?�サイズ�?��?�。4K�?�ら64K�?��?題�?��?��?��?��?��?16K�?32K�?�メモリ断片化�?��?��?��?��?��?�よ�?�特徴をも�?��?��?�。


<code>$weightlist (name) (bone name) (weight) [[(bone name) (weight)] ....]</code>
骨盤(pelvis)のように複数の子を持つボーンは再整列を行うことはできずIKシステムの一部にすることができません。例 骨盤(pelvis)ボーンと相対的に腰(hip)ボーンの位置を変更することはできません。
* 他�?�アニメーション�?�上�?�ブレンド�?�れるアニメーション�?�使用�?��??るボーン�?�ウェイト�?�リストを作り�?��?�。�?��?�リスト�?�ルートボーン�?�ウェイト�?�0�?��?全�?��?��?ボーン�?�一番近�?�親�?�ウェイトを引�??継�??�?��?�程�?��?��?��?��?�。�?�れ�?�よりウェイト�?�変化�?�る部分�?��?�ウェイトを指定�?�れ�?�よ�??�?リスト�?�全�?��?�ボーン�?�指定を行�?�必�?�?��?�り�?��?�ん。
<code >$surfaceprop (name)</code >


<code>$staticprop</code>
* モデル全体に特定の表面属性(surface property)を適用します。表面属性はモデルのパラメータに影響します:物理特性(重さなど)、衝突したときの音、撃った時にでるパーティクルの種類などです。表面属性の種類をを追加したり変更したい場合は、hl2\scripts\surfaceproperties.txtを編集してください。
* 全�?��?�ボーン�?�オブジェクト�?�集約�?�れ�?��?�。オブジェクト�?�アニメーション�?��?��?�場�?��?��?�使�?��?��?��?��?��??�?��?�。�??れ�?�も�?�?�れ�?�よりモデル�?�より早�??レンダリング�?�れる�?��?��?��??る�?り使�?��?��?��?��?�?��?��?�ょ�?�。


<code>$realignbones</code>
<code >$jointsurfaceprop (joint name) (name)</code >
* �?�れ�?�全�?��?�ボーン�?��?整列を強制�?��?��?� - �?�能�?�場�?��?ボーン�?�一番長�?�軸�?�ボーン�?�X軸�?��?�るよ�?��?��?��?��?�。�?�れ�?��?ボーン�?�親ボーン�?�対角線上�?��?�り�?軸�?��??�?��?��?ウンディングボックス�?�モデル�?��?��?�?��?�形�?��?�る�?��?��?�多�?�ヒットボックス�?�作�?�?��?��?��?��?��?�?ボーン�?�親ボーン�?�X軸上�?��?�る�?��?�をも�?��?るIKシステム�?�役�?�立�?��?��?�。


骨盤(pelvis)�?�よ�?��?�複数�?��?を�?�?�ボーン�?��?整列を行�?��?��?��?��?��??�?�IKシステム�?�一部�?��?�る�?��?��?��?��??�?��?�ん。例 骨盤(pelvis)ボーン�?�相対的�?�腰(hip)ボーン�?��?置を変更�?�る�?��?��?��?��??�?��?�ん。
* 表面属性(surface property)を指定したジョイントとその子に適用します。表面属性を正しく適用する.QCコマンドのブロックはHLMVから生成することもできます。


<code>$surfaceprop (name)</code>
<code >$contents (list of names of content types)</code >
* モデル全体�?�特定�?�表�?�属性(surface property)を�?�用�?��?��?�。表�?�属性�?�モデル�?�パラメータ�?�影響�?��?��?�:物�?�特性(�?�?��?��?�)�?�?�?�?��?��?��??�?�音�?撃�?��?�時�?��?�るパーティクル�?�種類�?��?��?��?�。表�?�属性�?�種類をを追加�?��?�り変更�?��?��?�場�?��?��?hl2\scripts\surfaceproperties.txtを編集�?��?��??�?��?��?�。


<code>$jointsurfaceprop (joint name) (name)</code>
* 非ヒットボックスのトレースでのコンテンツマスクテストで使用するコンテンツを指定します。フェンスをブラシモデルではなくプロップで作るといったことを可能にするためにこの機能は追加されました。
* 表�?�属性(surface property)を指定�?��?�ジョイント�?��??�?��?�?��?�用�?��?��?�。表�?�属性を正�?��??�?�用�?�る.QCコマンド�?�ブロック�?�HLMV�?�ら生�?�?�る�?��?�も�?��??�?��?�。


<code>$contents (list of names of content types)</code>
現在使用できるコンテンツタイプは:
* �?�ヒットボックス�?�トレース�?��?�コンテンツマスクテスト�?�使用�?�るコンテンツを指定�?��?��?�。フェンスをブラシモデル�?��?��?��??プロップ�?�作る�?��?��?��?��?��?�を�?�能�?��?�る�?��?�?��?��?�機能�?�追加�?�れ�?��?��?�。


�?�在使用�?��??るコンテンツタイプ�?�:
*  "grate" 格子にします(弾丸は通しますが、他のものは通しません)
*  "grate" 格�?�?��?��?��?�(弾丸�?�通�?��?��?��?��?他�?�も�?��?�通�?��?��?�ん)
*  "monster" NPCとしてマークします
*  "monster" NPC�?��?��?�マーク�?��?��?�
*  "notsolid" 全てのものに対して非剛体として振舞います
*  "notsolid" 全�?��?�も�?��?�対�?��?��?�剛体�?��?��?�振舞�?��?��?�
*  "solid" 剛体にします (非剛体の親に$jointcontentsで剛体の子を作るときだけ役に立ちます)
*  "solid" 剛体�?��?��?��?� (�?�剛体�?�親�?�$jointcontents�?�剛体�?��?を作る�?��??�?��?�役�?�立�?��?��?�)
*  "ladder" はしごにします
*  "ladder" �?��?��?��?��?��?��?�


例:
例:
Line 78: Line 88:
$contents "monster" "grate"
$contents "monster" "grate"
</pre>
</pre>
<code >$jointcontents (joint name) (list of names of content types)</code >


<code>$jointcontents (joint name) (list of names of content types)</code>
* このコマンドはcontentsコマンドとほぼ同じですが、指定したボーンとその子のコンテンツを適用します。
* �?��?�コマンド�?�contentsコマンド�?��?��?��?��?��?��?��?��?指定�?��?�ボーン�?��??�?��?�?�コンテンツを�?�用�?��?��?�。


<code>$opaque</code>
<code >$opaque</code >
* シーン�?�他�?�オブジェクト�?�対�?��?�ソートを行�?��?��??�?��?�?��?�モデル�?��?�?明�?��?��?��?�れるよ�?��?��?��?��?�。モデル�?�一部分�?��?�(髪�?目�?�?�?��?��?��?�)�?��?明�?�ソート�?��?題�?�起�?�ら�?��?�時�?�使�?��?��?�。


<code>$mostlyopaque</code>
* シーンの他のオブジェクトに対してソートを行うときに、このモデルが不透明とみなされるようにします。モデルの一部分だけ(髪、目、めがねなど)が透明でソートで問題が起こらない時に使いまず。
* モデル�?�2�?��?�パス�?�レンダリング�?�れるよ�?��?��?��?��?�:最�?�?�パス�?�モデル�?��?�?明部分�?��?�を�?2�?�目�?�パス�?��?明部分�?��?�をレンダリング�?��?��?�。木�?�よ�?��?�モデル�?��?明度�?�ソート�?題を改善�?�る�?��?�役�?�立�?��?��?�。


<code>$keyvalues</code>
<code >$mostlyopaque</code >
* �?�れを使�?��?�.mdlファイル�?�中�?�任�?�?�キー�?リュー定義ブロックを追加�?�る�?��?��?��?��??�?��?�。例:
 
* モデルが2つのパスでレンダリングされるようにします:最初のパスはモデルの不透明部分だけを、2つ目のパスは透明部分だけをレンダリングします。木のようなモデルで透明度のソート問題を改善するのに役に立ちます。
 
<code >$keyvalues</code >
 
* これを使うと.mdlファイルの中に任意のキーバリュー定義ブロックを追加することができます。例:


<pre>
<pre>
Line 108: Line 121:
       }
       }
</pre>
</pre>
<code >$definemacro (macroname) [arg_name1] [arg_name2] […] \\</code >


<code>$definemacro (macroname) [arg_name1] [arg_name2] […] \\</code>
* 文字列を置き換えるマクロを定義します。マクロ定義は次の行から始まり、すべての連続する行は\\で終わります。引数は$で囲まれ(例 $arg_name1$)、他の言葉の中に埋め込むことができます。マクロを使うには、$マクロ名を入力し、そうするとそれからN個のトークンが引数とみなされます。
* 文字列を置�??�?��?�るマクロを定義�?��?��?�。マクロ定義�?�次�?�行�?�ら始�?�り�?�?��?��?��?�連続�?�る行�?�\\�?�終�?り�?��?�。引数�?�$�?�囲�?�れ(例 $arg_name1$)�?他�?�言葉�?�中�?�埋�?込む�?��?��?��?��??�?��?�。マクロを使�?��?��?��?$マクロ�??を入力�?��?�??�?��?�る�?��??れ�?�らN個�?�トークン�?�引数�?��?��?��?�れ�?��?�。


<pre>
<pre>
Line 120: Line 133:
       }
       }
</pre>
</pre>
 
下のように使います:
下�?�よ�?��?�使�?��?��?�:


<pre>
<pre>
       $testmacro small_flinch "npc flinch 01" 20
       $testmacro small_flinch "npc flinch 01" 20
</pre>
</pre>
<code >$lod (distance) { (lod commands here) }</code >
* モデルのLOD(Level Of Detail - 距離によるモデル簡略化)をどのように実行するかを定義するコマンドブロックを始めます。distance(距離)パラメータよりカメラが離れたときに指定したLODコマンドが実行されます。マテリアル、テクスチャといったものを置き換えることができます。このLODブロックに含めることができるコマンドはLevel of Detailセクションにあります。
=Level of Detailコマンド(距離によるモデル簡略化指定)=
<code >replacebone (original bone) (replacement bone)</code >
* リファレンスモデルの元のボーンの代わりに別のボーンが使われるようにします。手の全てのボーンを集約する時に役立ちます。指が'finger'(指)ボーンの代わりに'hand'(手)のボーンを使うようにできます。
<code >bonetreecollapse (bone name)</code >
* 指定したボーンの子ボーン全てが現在接続しているボーンの代わりに指定したボーンを使うようになります。多数のボーンを集約したい場合replaceboneより簡単になります。特に手ではこの機能を使うことができます。
<code >replacemodel (model name) (replacement model) [reverse]</code >


<code>$lod (distance) { (lod commands here) }</code>
* 元のモデルを別のモデルで置き換えます。"reverse"を指定すると、置き換えモデルの法線が反転されます。置き換えモデルの名前が'blank'なら、モデルはレンダリングされなくなります。このコマンドはモデルをローポリゴンモデルで置換するのに使われます。
* モデル�?�LOD(Level Of Detail - �?離�?�よるモデル簡略化)を�?��?�よ�?��?�実行�?�る�?�を定義�?�るコマンドブロックを始�?�?��?�。distance(�?離)パラメータよりカメラ�?�離れ�?��?��??�?�指定�?��?�LODコマンド�?�実行�?�れ�?��?�。マテリアル�?テクス�?ャ�?��?��?��?�も�?�を置�??�?��?�る�?��?��?��?��??�?��?�。�?��?�LODブロック�?��?��?る�?��?��?��?��??るコマンド�?�Level of Detailセクション�?��?�り�?��?�。


=Level of Detailコマンド(�?離�?�よるモデル簡略化指定)=
<code >removemodel (model name)</code >


<code>replacebone (original bone) (replacement bone)</code>
* このLODにおいてモデルがレンダリングされないようにします。
* リファレンスモデル�?�元�?�ボーン�?�代�?り�?�別�?�ボーン�?�使�?れるよ�?��?��?��?��?�。手�?�全�?��?�ボーンを集約�?�る時�?�役立�?��?��?�。指�?�'finger'(指)ボーン�?�代�?り�?�'hand'(手)�?�ボーンを使�?�よ�?��?��?��??�?��?�。


<code>bonetreecollapse (bone name)</code>
<code >replacematerial (original material name) (replacement material name)</code >
* 指定�?��?�ボーン�?��?ボーン全�?��?��?�在接続�?��?��?�るボーン�?�代�?り�?�指定�?��?�ボーンを使�?�よ�?��?��?�り�?��?�。多数�?�ボーンを集約�?��?��?�場�?�replaceboneより簡�?��?��?�り�?��?�。特�?�手�?��?��?��?�機能を使�?��?��?��?��?��??�?��?�。


<code>replacemodel (model name) (replacement model) [reverse]</code>
* モデルの特定のマテリアルを他のもので置き換えます。例えばLODの低ポリゴンモデルでは小さいテクスチャを使うようにする、といった場合に使うことができます。
* 元�?�モデルを別�?�モデル�?�置�??�?��?��?��?�。"reverse"を指定�?�る�?��?置�??�?��?�モデル�?�法線�?��??転�?�れ�?��?�。置�??�?��?�モデル�?��??�?�?�'blank'�?�ら�?モデル�?�レンダリング�?�れ�?��??�?�り�?��?�。�?��?�コマンド�?�モデルをロー�?リゴンモデル�?�置�?��?�る�?��?�使�?れ�?��?�。


<code>removemodel (model name)</code>
<code >removemesh (material name)</code >
* �?��?�LOD�?��?��?��?�モデル�?�レンダリング�?�れ�?��?�よ�?��?��?��?��?�。


<code>replacematerial (original material name) (replacement material name)</code>
* このLODにおいて指定したマテリアルを使っている全ての三角ポリゴンを取り除きます。
* モデル�?�特定�?�マテリアルを他�?�も�?��?�置�??�?��?��?��?�。例�?��?�LOD�?�低�?リゴンモデル�?��?��?�?��?�テクス�?ャを使�?�よ�?��?��?�る�?�?��?��?��?�場�?��?�使�?��?��?��?��?��??�?��?�。


<code>removemesh (material name)</code>
<code >nofacial</code >
* �?��?�LOD�?��?��?��?�指定�?��?�マテリアルを使�?��?��?�る全�?��?�三角�?リゴンを�?�り除�??�?��?�。


<code>nofacial</code>
* このLODにおいて顔アニメーションを無効にします。
* �?��?�LOD�?��?��?��?�顔アニメーションを無効�?��?��?��?�。


=新�?��?�$modelオプション=
=新しい$modelオプション=
<code >eyeball (name) (bone name) (X) (Y) (Z) (material name) (diameter) (angle) (iris material) (pupil scale)</code >


<code>eyeball (name) (bone name) (X) (Y) (Z) (material name) (diameter) (angle) (iris material) (pupil scale)</code>
* (name) 眼球の名前。eyelidルールでの指定で使われる
* (name) 眼�?��?��??�?。eyelidルール�?��?�指定�?�使�?れる
* (bone name) 目の親となるボーン。通常の場合head(頭)
* (bone name) 目�?�親�?��?�るボーン。通常�?�場�?�head(頭)
* (X) (Y) (Z) World location of the center of the ball of the eye.  
* (X) (Y) (Z) World location of the center of the ball of the eye.  
* (material name) 目�?�白目部分�?��?�る頂点を検索�?�る�?��?�使�?れるマテリアル�?? (目�?�虹彩�?瞳孔を動的�?�テクス�?ャマッピング�?�る�?��?�使�?れる).  
* (material name) 目の白目部分となる頂点を検索するのに使われるマテリアル名 (目に虹彩、瞳孔を動的にテクスチャマッピングするのに使われる).  
* (diameter)眼�?��?�直径
* (diameter)眼球の直径
* (angle) 虹彩�?�"forward"(正�?�)アタッ�?メント�?�ら�?�yaw軸�?�傾�??�?期値。通常人間�?�目�?�2-4度外を�?��?��?��?��?��?�。�?��?�値を正�?��??設定�?��?��?��?��?キャラクタ�?�寄り目�?��?��?��?�り�?横�?��?��?��??動�?��?��?��?��?�り�?��?��?�。
* (angle) 虹彩の"forward"(正面)アタッチメントからのyaw軸の傾き初期値。通常人間の目は2-4度外を向いています。この値を正しく設定しないと、キャラクタが寄り目になったり、横にうまく動かなかったりします。
* (iris material)虹彩�?�テクス�?ャ�?��?��?�使�?�マテリアル�?��??�?
* (iris material)虹彩のテクスチャとして使うマテリアルの名前
* (pupil scale)虹彩テクス�?ャ�?�縮尺
* (pupil scale)虹彩テクスチャの縮尺
 
<code >eyelid (name) (expression file) lowerer/neutral/raiser (frame) (height) split (distance) eyeball (name)</code >


<code>eyelid (name) (expression file) lowerer/neutral/raiser (frame) (height) split (distance) eyeball (name)</code>
* (name) eyelid(まぶた)のflexcontroller(筋肉コントローラ)のベースとなる名前。この名前に"lowerer"(下げる)"neutral"(普通)"rasier"(上げる)の指定を組み合わせてまぶた位置のブレンドを行います。
* (name) eyelid(�?��?��?�)�?�flexcontroller(筋肉コントローラ)�?�ベース�?��?�る�??�?。�?��?��??�?�?�"lowerer"(下�?�る)�?"neutral"(普通)�?"rasier"(上�?�る)�?�指定を組�?��?��?�?��?��?��?��?��?置�?�ブレンドを行�?��?��?�。
*(expression file) モーフターゲットが含まれているファイル名。
*(expression file) モーフターゲット�?��?��?�れ�?��?�るファイル�??。
*lowerer/neutral/raiser (frame) (height) 3つの選択肢の1つ、それが(expression file)の何フレーム目に含まれ、白目の端と瞳の中央の上下距離がどれくらいか。
*lowerer/neutral/raiser (frame) (height) 3�?��?��?�択肢�?�1�?��?�??れ�?�(expression file)�?�何フレーム目�?��?��?�れ�?白目�?�端�?�瞳�?�中央�?�上下�?離�?��?�れ�??ら�?��?�。
* split (distance) このまぶたモーフターゲットに含まれる頂点が0ラインの反対のどこからはじまっているのか。
* split (distance) �?��?��?��?��?�モーフターゲット�?��?��?�れる頂点�?�0ライン�?��??対�?��?��?��?�ら�?��?��?��?��?��?�る�?��?�。
* eyeball (name) このeyelid(まぶた)のflexcontroller(筋肉コントローラ)が動かす眼球の名前
* eyeball (name) �?��?�eyelid(�?��?��?�)�?�flexcontroller(筋肉コントローラ)�?�動�?��?�眼�?��?��??�?


* flex (name) [(expression file)]
* flex (name) [(expression file)]
Line 186: Line 205:
* spherenormals (material name) (X) (Y) (Z)
* spherenormals (material name) (X) (Y) (Z)


<br />


===�?�照ページ===
===参照ページ===
* [[Qc eyes]]
* [[Qc eyes]]
* [[Eye Position Setup:jp|目�?��?置�?�設定]]
* [[Eye_Position_Setup:jp|目の位置の設定]]


=新�?��?�$animationオプション=
=新しい$animationオプション=
<code >fixuploop (pre loop frames) (post loop frames)</code >


<code>fixuploop (pre loop frames) (post loop frames)</code>
* アニメーションの最後のフレームと最初のフレームの差を見つけて、その領域の差をブレンドします。範囲は負の値(最後のフレームから戻った数)から0と、0から正の値(最初のフレームからのフレーム数)です。
* アニメーション�?�最後�?�フレーム�?�最�?�?�フレーム�?�差を見�?��?��?��?�??�?�領域�?�差をブレンド�?��?��?�。範囲�?�負�?�値(最後�?�フレーム�?�ら戻�?��?�数)�?�ら0�?��?0�?�ら正�?�値(最�?�?�フレーム�?�ら�?�フレーム数)�?��?�。


�?�れ�?��?�ループアニメーション�?�一部�?�らループ�?�るアニメーションを作る時や�?ループ�?��?��?��?��?�る�?��?��?��?��?�引�?��?��?�り�?��?�るモデルを直�?��?��?�も役�?�立�?��?��?�。
これは非ループアニメーションの一部からループするアニメーションを作る時や、ループになっているはずなのに引っかかりがあるモデルを直すのにも役に立ちます。
<br />
<code >alignto (goal animation)</code >


* 現在のアニメーションの最初の(ローカル)フレームのルート位置(X,Y軸)を別のアニメーションの最初のフレームにルート位置と一致するように移動します。アニメーションが原点(origin)からはじまらない場合や、長いアニメーションの一部だけ切り取って共有の原点に位置あわせする早い方法が必要なときなどに役立ちます。


<code>alignto (goal animation)</code>
<code >align (reference animation) [X Y Z XR YR ZR] (reference frame) (to match frame)</code >
* �?�在�?�アニメーション�?�最�?�?�(ローカル)フレーム�?�ルート�?置(X,Y軸)を別�?�アニメーション�?�最�?�?�フレーム�?�ルート�?置�?�一致�?�るよ�?��?�移動�?��?��?�。アニメーション�?�原点(origin)�?�ら�?��?��?�ら�?��?�場�?�や�?長�?�アニメーション�?�一部�?��?�切り�?��?��?�共有�?�原点�?��?置�?��?�?��?�る早�?�方法�?�必�?�?��?��??�?��?��?�役立�?��?��?�。


<code>align (reference animation) [X Y Z XR YR ZR] (reference frame) (to match frame)</code>
* これはaligntoに似ていますが、どのフレームで、どの位置関係で位置を合わせるかということを指定できます。垂直移動があるアニメーションの位置あわせに役立ちます。
* �?�れ�?�alignto�?�似�?��?��?��?��?��?�?��?�フレーム�?��?�?��?��?置関係�?��?置を�?��?�?�る�?��?��?��?��?��?�を指定�?��??�?��?�。垂直移動�?��?�るアニメーション�?��?置�?��?�?��?�役立�?��?��?�。


<code>alignboneto (bone name) (goal animation)</code>
<code >alignboneto (bone name) (goal animation)</code >
* alignto�?�似�?��?��?��?��?��?原点�?��?��?��??指定�?��?�ボーン�?��?置�?��?�?�を�?��?��?�。


<code>startloop (local frame)</code>
* aligntoに似ていますが、原点ではなく指定したボーンで位置あわせをします。
* �?�れ�?�ループアニメーション�?�開始フレームをリセット�?��?��?�。複数�?�アニメーションを順番�?��?生�?�る�?��?�??�?�ソースアニメーション�?�一致�?��?��?��?��?��?��??�?�役立�?��?��?�。


<code>fudgeloop</code>
<code >startloop (local frame)</code >
* 移動�?��?�るループアニメーション�?�場�?��?移動�?�る�?��?�も�?�最�?�?�最後�?�フレーム�?��?��?置�?�一致�?�る必�?�?�(�?�想的�?��?�)�?�り�?��?�。�?��?��?�由�?�最後�?�中間フレームを計算�?�る�?��??�?�studiomdl�?�エンジン�?�対�?��?�最�?�?�キーフレーム�?�ら最後�?�キーフレーム�?��?��?��?��??ら�?�モデル�?�移動�?��?��?�を�?�?�る必�?�?��?�る�?�ら�?��?�。�?��?�最後�?�短�?�30分�?�1-10分�?�1秒�?�間�?��?離�?��?�?�?�キーフレーム�?��?離�?��?��?��?��?��?��?��??�?1フレーム平�?��?�移動�?�?�も�?��?��?��?�る�?��?��?オー�?ーラップ�?�定義を�?��?��?��?�?��?��?�studiomdl�?�間�?��?��?�推測を�?��?�場�?��?��?��?��?��?�りや足�?�滑�?��?�り�?�る�?�能性�?��?�り�?��?�。


�?��?��?��?大�?��?�由�?��?��?��?�アニメーション�?�最後�?�フレーム�?�オー�?ーラップを作る�?��?��?��?��??�?��?��?��?�ら�?�?��?�オプション�?�studiomdl�?�今�?��?��?�アニメーション�?�見�?�も�?��?�フレーム平�?��?�移動�?離�?��?��?��?��?�る�?��?�を�?証�?��?オー�?ーラップフレームを自分�?�作る必�?�?��?�る�?��?�?��?��?�。
* これはループアニメーションの開始フレームをリセットします。複数のアニメーションを順番に再生するが、そのソースアニメーションが一致していないときに役立ちます。


<code>weightlist (weightlist name)</code>
<code >fudgeloop</code >
* �?��?��?�定義�?�れ�?�ボーンウェイトリストを�?�在�?�アニメーション�?�コピー�?��?��?�。1�?��?�アニメーション�?�対�?��?��?�れを何回も行�?��?��?��?��?��??�?��?�。subsequent�?�subtract�?match�?fizuploopオプション�?�0より大�??�?�ウェイトを�?�?�ボーン�?��?��?��?�??�?��?�。ブレンドを行�?��?��??�?��?�直�?�?�指定�?�れ�?�ウェイ�?�リストを使用�?��?��?�。複数�?�アニメーションを�?�むシークエンス�?�場�?��?ソース�?��?�るアニメーション�?�全�?��?��?�ウェイトリストを使�?��?��?��?��?��?��?果�?�定義�?�れ�?��?�ん。
 
* 移動があるループアニメーションの場合、移動するとともに最初と最後のフレームでの位置が一致する必要が(理想的には)あります。この理由は最後の中間フレームを計算するときにstudiomdlはエンジンに対して最初のキーフレームから最後のキーフレームまでどのくらいモデルが移動したかを伝える必要があるからです。この最後の短い30分の1-10分の1秒の間の距離は、前のキーフレームの距離とは同じではなく、1フレーム平均の移動量とも違っているので、オーバーラップの定義をおこなわないとstudiomdlが間違った推測をした場合にひっかかりや足が滑ったりする可能性があります。
 
なにか重大な理由があってアニメーションが最後のフレームのオーバーラップを作ることができないのなら、このオプションはstudiomdlに今までのアニメーションで見たものとフレーム平均の移動距離が同じであることを保証し、オーバーラップフレームを自分で作る必要があると伝えます。
<code >weightlist (weightlist name)</code >
 
* すでに定義されたボーンウェイトリストを現在のアニメーションにコピーします。1つのアニメーションに対してこれを何回も行うことができます。subsequentのsubtract、match、fizuploopオプションは0より大きいウェイトを持つボーンのみに働きます。ブレンドを行うときには直前に指定されたウェイとリストを使用します。複数のアニメーションを含むシークエンスの場合、ソースとなるアニメーションが全て同じウェイトリストを使っていないと結果が定義されません。
 
アニメーションのウェイトリストの初期値では、全てのボーンウェイトが1.0であると仮定しています。QCでウェイトリストの指定は以下です


アニメーション?ウェイトリスト??期値???全??ボーンウェイト?1.0??る?仮定?????。QC?ウェイトリスト?指定?以下??
<pre>
<pre>
       $weightlist no_hands "Bip01" 1.0 "Bip01 L Hand" 0.0 "Bip01 R Hand" 0.0
       $weightlist no_hands "Bip01" 1.0 "Bip01 L Hand" 0.0 "Bip01 R Hand" 0.0
       $weightlist head_n_arms "Bip01 Spine 2" 1.0
       $weightlist head_n_arms "Bip01 Spine 2" 1.0
</pre>
</pre>
0より大きいウェイトを持つボーンのみがアニメーションに影響します。
<code >subtract (animation) (frame #)</code >
* これは指定したアニメーションのフレームを現在のアニメーションの全てのフレームから引き、2つの差分となるアニメーションを作成します。リファレンスフレームからの差分に過ぎないアニメーションを他のアニメーションに変換するのに効果的です。
これは"delta(差分)"アニメーションとしてつかえるものの生成もおこないます。これらは複数のボーンをコントロールするタイムシークエンスアニメーションとして考えるのがわかりやすいです。結果のアニメーションはそれ自体では意味がないもので、他のアニメーションの上にかぶせて再生したときだけ妥当なものになります。
<code >presubtract (animation)</code >
* これは指定したアニメーションの最初のフレームから現在のアニメーションの全てのフレームを引き算し、2つの差分となるアニメーションを作成します。
<code >match (animation)</code >
* アニメーションの最初のフレームが指定したアニメーションの最初のアニメーションと一致するようにし、それからそこでの差分を後続のフレームすべてに適用します。同じポーズからはじまっているはずなのになぜか合っていないアニメーションを直すのに主に使われます。
<code >walkframe (frame) [LX LY LZ LXR LYZ LZR]</code >


0より大�??�?�ウェイトを�?�?�ボーン�?��?��?�アニメーション�?�影響�?��?��?�。
* アニメーションの線形の部分移動を指定するのに1つのアニメーションにつきこれらを16個まで宣言を行うことができます。前回のwalkframeコマンドのRootボーン(デフォルトではフレーム0)と指定したフレームを比べ、その間の線形動作を抽出します。


<code>subtract (animation) (frame #)</code>
<code >walkalignto (frame) (reference animation) [LX LY LZ LXR LYR LZR]</code >
* �?�れ�?�指定�?��?�アニメーション�?�フレームを�?�在�?�アニメーション�?�全�?��?�フレーム�?�ら引�??�?2�?��?�差分�?��?�るアニメーションを作�?�?��?��?�。リファレンスフレーム�?�ら�?�差分�?��?��?��?��?�アニメーションを他�?�アニメーション�?�変�?��?�る�?��?�効果的�?��?�。


�?�れ�?�"delta(差分)"アニメーション�?��?��?��?��?��?�るも�?��?�生�?も�?��?��?��?��?��?�。�?�れら�?�複数�?�ボーンをコントロール�?�るタイムシークエンスアニメーション�?��?��?�考�?�る�?��?��?�?�りや�?��?��?��?�。�?果�?�アニメーション�?��??れ自体�?��?��?味�?��?��?�も�?��?��?他�?�アニメーション�?�上�?��?��?��?��?��?生�?��?��?��??�?��?�妥当�?�も�?��?��?�り�?��?�。
* Walkframeと似ていますが、指定したフレームで指定した軸にそったモデル(reference animation)から抽出を行います。2つ既存のアニメーションがあってその遷移で使われるアニメーションから動きを抜き出すのに役立ちます。


<code>presubtract (animation)</code>
<code >walkalign (frame) (reference animation) [LX LY LZ LXR LYR LZR] (reference frame) (to match frame)</code >
* �?�れ�?�指定�?��?�アニメーション�?�最�?�?�フレーム�?�ら�?�在�?�アニメーション�?�全�?��?�フレームを引�??算�?��?2�?��?�差分�?��?�るアニメーションを作�?�?��?��?�。


<code>match (animation)</code>
* walkaligntoに似ていますが (to match frame)で指定したフレームを(reference animation)で指定したアニメーションの(reference frame)で指定したフレームと比べて動きを計算します。これはモーションを抽出しようしている最後のフレームが目標のアニメーションとは一致していないがその後続のフレームは一致しているときに役に立ちます。
* アニメーション�?�最�?�?�フレーム�?�指定�?��?�アニメーション�?�最�?�?�アニメーション�?�一致�?�るよ�?��?��?��?�??れ�?�ら�??�?��?��?�差分を後続�?�フレーム�?��?��?��?��?�用�?��?��?�。�?��?��?ーズ�?�ら�?��?��?��?��?��?�る�?��?��?��?��?��?��?��?��?��?��?��?��?��?�アニメーションを直�?��?��?�主�?�使�?れ�?��?�。


<code>walkframe (frame) [LX LY LZ LXR LYZ LZR]</code>
<code >rotateto (angle)</code >
* アニメーション�?�線形�?�部分移動を指定�?�る�?��?�1�?��?�アニメーション�?��?��??�?�れらを16個�?��?�宣言を行�?��?��?��?��?��??�?��?�。�?回�?�walkframeコマンド�?�Rootボーン(デフォルト�?��?�フレーム0)�?�指定�?��?�フレームを比�?��?�??�?�間�?�線形動作を抽出�?��?��?�。


<code>walkalignto (frame) (reference animation) [LX LY LZ LXR LYR LZR]</code>
* 現在の動きの方向を調べ(複数部分があるときは最初の動きを使用)、アニメーションを回転して結果のアニメーションが指定した方向に向かうようにします。
* Walkframe�?�似�?��?��?��?��?��?指定�?��?�フレーム�?�指定�?��?�軸�?��??�?��?�モデル(reference animation)�?�ら抽出を行�?��?��?�。2�?�既存�?�アニメーション�?��?��?��?��??�?��?�移�?�使�?れるアニメーション�?�ら動�??を抜�??出�?��?��?�役立�?��?��?�。


<code>walkalign (frame) (reference animation) [LX LY LZ LXR LYR LZR] (reference frame) (to match frame)</code>
<code >noanimation</code >
* walkalignto�?�似�?��?��?��?��?� (to match frame)�?�指定�?��?�フレームを(reference animation)�?�指定�?��?�アニメーション�?�(reference frame)�?�指定�?��?�フレーム�?�比�?��?�動�??を計算�?��?��?�。�?�れ�?�モーションを抽出�?�よ�?��?��?��?�る最後�?�フレーム�?�目標�?�アニメーション�?��?�一致�?��?��?��?��?��?��??�?�後続�?�フレーム�?�一致�?��?��?�る�?��??�?�役�?�立�?��?��?�。


<code>rotateto (angle)</code>
* アニメーションを加算的にし、全てのアニメーションを取り除き、ウェイトリストを0にして、このアニメーションだけがシークエンスに使われるときにエンジンが処理をしないようにするフラグを立てます。"ゼロ(基点)"位置がモデルに影響を及ぼさないようにしたいブレンドシークエンスに便利です。
* �?�在�?�動�??�?�方�?�を調�?�(複数部分�?��?�る�?��??�?�最�?�?�動�??を使用)�?アニメーションを回転�?��?��?果�?�アニメーション�?�指定�?��?�方�?��?��?��?��?�よ�?��?��?��?��?�。


<code>noanimation</code>
<code >derivative (scale)</code >
* アニメーションを加算的�?��?��?全�?��?�アニメーションを�?�り除�??�?ウェイトリストを0�?��?��?��?�?��?�アニメーション�?��?��?�シークエンス�?�使�?れる�?��??�?�エンジン�?�処�?�を�?��?��?�よ�?��?��?�るフラグを立�?��?��?�。"ゼロ(基点)"�?置�?�モデル�?�影響を�?��?��?��?��?�よ�?��?��?��?��?�ブレンドシークエンス�?�便利�?��?�。


<code>derivative (scale)</code>
* Turns the animation into the derivative of itself by simply subtracting the previous frame from each frame in the animation. The derivative can be automatically scaled to compensate for any fps issues.
* Turns the animation into the derivative of itself by simply subtracting the previous frame from each frame in the animation. The derivative can be automatically scaled to compensate for any fps issues.


<code>lineardelta</code>
<code >lineardelta</code >
* 最�?�?�最後�?�フレーム�?�線形ブレンドをアニメーション�?�全フレーム�?�ら引�?��?��?差分アニメーションを作り�?��?�。
 
* 最初と最後のフレームの線形ブレンドをアニメーションの全フレームから引いて、差分アニメーションを作ります。
 
<code >splinedelta</code >
 
* 最初と最後のフレームのスプライン(スプライン曲線)ブレンドをアニメーションの全フレームから引いて、差分アニメーションを作ります。
 
<code >compress (skip)</code >
 
* 指定した数字毎のフレームのみをとりだしてアニメーションの低FPSバージョンを作ります。FPSの値は自動的に新しいものに合ったものに変換されます。
 
<code >numframes (frames)</code >
 
* アニメーションをカットするか、最後のフレームを複製するで、アニメーションを指定したフレーム数に強制的に合わせます。
 
=新しいIK(逆運動学)オプション=
<code >$ikchain (name) (end bone) [height (units)] [pad (units)][floor (units)]</code >
 
* IKチェーンを構成するボーンセットを定義します。チェインの指定は、チェインで一番離れた場所にあるボーンの名前を挙げることでおこなわれ、階層構造からそれに連なる2つのボーンを自動的に探索します。
 
IKチェーンはikruleとiklockアニメーションオプションで独占的に使用されます。 使用するルールによって終端のボーンは必要な場所に移動し、最初のボーンは固定されているとして、真ん中のボーンは2つのボーンとの距離が一定になるような位置に移動します。IKチェーンの例としては足首-膝-腰チェーンがあります。足首は地面に相対的に接するように移動し、腰の位置は固定で、膝は足の長さが変わらないように曲がります。
<code >iklock (chain) (lock position) (maintain local rotation)</code >
 
* このシークエンスにおいては、シークエンスを適用する前に指定したチェーンの位置/回転状態の記録をおこない、シークエンス的用語にローカルのIKルールを実行して元の保存した位置に戻します。ウェイトは小数で0.0から1.0です。
 
これは特定のIKチェーンがシークエンス中に動いてしまうことを防ぐのに使われます。腰や全身の運動を適用するが、モデルの手足は元の位置に留まってほしい場合に役立ちます。
注意: 回転ロックの値は位置から後ろ向きのようなものになります。両方をロックするには"1 0"にセットします。両方を自由に動けるようにするには"0 1"にします(この場合はiklockを使う必要はありませんが、説明のためにあげました)。
<code >ikrule (chain) touch (bone) [options...]</code >
 
* ボーンが体のほかの部分に相対的に動く必要がああるというIKルールを追加します。手が顔、腰、もう片方の手といったほかの部分に触れている必要があり、触れられている部分は追加のアニメーションレイヤーやボーンコントローラといった理由でもともとのアニメーションを行う場所としてはいっていないといったときに役立ちます。
 
ボーン名部分に" "と指定するとそのIKチェーンはアニメーションがついたボーンの変わりにモデルの原点に相対的に動きます。
<code >ikrule (chain) footstep (slot #) [options…]</code >
 
* 足のような連続した体の部分が地面に相対的に動く必要がある、といったIKルールを追加します。
 
=Ikルール(逆運動学ルール)オプション=
<code >range (start) (peak) (tail) (end)</code >
 
* ikルールのためのフェードイン、保持(hold)、フェードアウトを行うフレーム番号を指定します。
 
<code >height (units)</code >
 
* 足のステップのルールで使われ、望ましい地面高さのどれくらい上から検索をはじめるかを指定します。
 
<code >floor (units)</code >
 
* 足のステップのルールで使われ、実際の地面の場所を指定します。
 
<code >pad (radius)</code >
 
* 足のステップのルールで使われ、地面との接触チェックをする範囲の大きさを指定します。
 
<code >contact (frame)</code >
 
* 足のステップのルールで使われ、地面位置のチェックにどのフレームを使うか指定します。
 
<code >radius (units)</code >
 
* attachmentのルールで使われ,、検索を行う半径を指定します。
 
<code >usesource</code >


<code>splinedelta</code>
* IKのゴール設定に元のアニメーションソースを使用します。これは現在のアニメーションがソースアニメーションと違う合成されたもので、その元の姿に戻したい場合に役に立ちます。
* 最�?�?�最後�?�フレーム�?�スプライン(スプライン曲線)ブレンドをアニメーション�?�全フレーム�?�ら引�?��?��?差分アニメーションを作り�?��?�。


<code>compress (skip)</code>
<code >usesequence</code >
* 指定�?��?�数字毎�?�フレーム�?��?�を�?�り�?��?��?�アニメーション�?�低FPS�?ージョンを作り�?��?�。FPS�?�値�?�自動的�?�新�?��?�も�?��?��?��?��?�も�?��?�変�?��?�れ�?��?�。


<code>numframes (frames)</code>
* blendlayerやaddlayerルールも含んだ全てのシークエンスルールを実行し、IKのゴールを決定します。
* アニメーションをカット�?�る�?��?最後�?�フレームを複製�?�る�?��?アニメーションを指定�?��?�フレーム数�?�強制的�?��?��?�?��?��?�。


=新�?��?�IK(逆�?�動学)オプション=
=新しい$sequenceオプション=
<code >activity (activity_name) (weight)</code >


<code>$ikchain (name) (end bone) [height (units)] [pad (units)][floor (units)]</code>
* このコマンドはシークエンスをActivityに結び付けます。Activityの名前はコードから1つ以上のシークエンスを呼び出す別名として働きます。
* IK�?ェーンを構�?�?�るボーンセットを定義�?��?��?�。�?ェイン�?�指定�?��?�?ェイン�?�一番離れ�?�場所�?��?�るボーン�?��??�?を挙�?�る�?��?��?��?��?��?��?れ�?階層構造�?�ら�??れ�?�連�?�る2�?��?�ボーンを自動的�?�探索�?��?��?�。


IK�?ェーン�?�ikrule�?�iklockアニメーションオプション�?�独�?�的�?�使用�?�れ�?��?�。 使用�?�るルール�?�よ�?��?�終端�?�ボーン�?�必�?�?�場所�?�移動�?��?最�?�?�ボーン�?�固定�?�れ�?��?�る�?��?��?��?真ん中�?�ボーン�?�2�?��?�ボーン�?��?��?離�?�一定�?��?�るよ�?��?��?置�?�移動�?��?��?�。IK�?ェーン�?�例�?��?��?��?�足首-�?-腰�?ェーン�?��?�り�?��?�。足首�?�地�?��?�相対的�?�接�?�るよ�?��?�移動�?��?腰�?��?置�?�固定�?��?�?�?�足�?�長�?��?�変�?ら�?��?�よ�?��?�曲�?�り�?��?�。
Activityを使うことの利点は、モデラーが1つのActivityに対して複数のシークエンスを指定することができ、プログラマの介入なしにモデルのアニメーションにバリエーションをつけられるということです。たとえば、モデラーは3つのidle(待機)アニメーションを作り全てをACT_IDLEにバインドします。プログラマはACT_IDLEを再生する、というコードを書くだけで3つのシークエンスの1つを再生することができます。


<code>iklock (chain) (lock position) (maintain local rotation)</code>
* ??シークエンス??????シークエンスを?用?る??指定???ェーン??置/回転状態?記録を?????シークエンス的用語?ローカル?IKルールを実行??元??存???置?戻???。ウェイト??数?0.0?ら1.0??。


�?�れ�?�特定�?�IK�?ェーン�?�シークエンス中�?�動�?��?��?��?��?��?��?�を防�??�?��?�使�?れ�?��?�。腰や全身�?��?�動を�?�用�?�る�?��?モデル�?�手足�?�元�?��?置�?�留�?��?��?��?��?��?�場�?��?�役立�?��?��?�。
2つ目のパラメータであるactivity_nameにはプログラマのactivity表(ai_activity.cppとactivitylist.cpp)にあるActivityの名前を指定する必要があります。


注?: 回転ロック?値??置?ら後?????よ??も???り??。両方をロック?る??"1 0"?セット???。両方を自由?動?るよ???る??"0 1"????(??場??iklockを使?必???り??ん??説明?????????)。


<code>ikrule (chain) touch (bone) [options...]</code>
3つ目のパラメータ、weight、は同じActivity名を持つ他のシークエンスと比べてどのくらいの頻度でこのシークエンスが選ばれるかということをコントロールします。例えば、weightを1に設定したシークエンス"idle1"と、weightを2に設定したシークエンス"idle2"があったとすると、ACT_IDLEを再生するときに"idle2"が選ばれる確率は2倍になります。
* ボーン�?�体�?��?��?��?�部分�?�相対的�?�動�??必�?�?��?��?�る�?��?��?�IKルールを追加�?��?��?�。手�?�顔�?腰�?も�?�片方�?�手�?��?��?��?��?��?��?�部分�?�触れ�?��?�る必�?�?��?�り�?触れられ�?��?�る部分�?�追加�?�アニメーションレイヤーやボーンコントローラ�?��?��?��?��?�由�?�も�?�も�?��?�アニメーションを行�?�場所�?��?��?��?��?��?��?��?��?��?��?��?��?��?��?��??�?�役立�?��?��?�。


ボーン??部分?" "?指定?る????IK?ェーン?アニメーション????ボーン?変?り?モデル?原点?相対的?動????。


<code>ikrule (chain) footstep (slot #) [options…]</code>
Activityに割り当てたシークエンスが1つだけの場合は、weightを-1にすることで少しパフォーマンスがあがります。
* 足�?�よ�?��?�連続�?��?�体�?�部分�?�地�?��?�相対的�?�動�??必�?�?��?�る�?�?��?��?��?�IKルールを追加�?��?��?�。
<code >autoplay</code >


=Ikルール(逆�?�動学ルール)オプション=
* このシークエンスは再生時に、他のシークエンスが全て合成された後、ボーンセットアップの終わりに自動追加されます。これらのシークエンスは通常"delta(差分)"シークエンスですが、そうでなくてもかまいません。もしモデルに複数のautoplayシークエンスがあるなら、QCファイルに現れた順番に追加されます。


<code>range (start) (peak) (tail) (end)</code>
これを理解する簡単な方法は、複数のボーンを持つコントローラにすぎないと考えることです。Autoplayシークエンスはサイクル/フレームインデックスの0においてのみ再生されます。
* ikルール�?��?��?�?�フェードイン�?�?�?(hold)�?フェードアウトを行�?�フレーム番�?�を指定�?��?��?�。
<code >addlayer (sequence)</code >


<code>height (units)</code>
* 自動的に他のシークエンスを現在のシークエンスの上に合成します。現在のボーンセットアップの上に合成される前に行われます。この新しいシークエンスのサイクルインデックスは現在のシークエンスと同じになります。
* 足�?�ステップ�?�ルール�?�使�?れ�?望�?��?��?�地�?�高�?��?��?�れ�??ら�?�上�?�ら検索を�?��?��?る�?�を指定�?��?��?�。


<code>floor (units)</code>
<code >blendlayer (sequence) (start) (peak) (tail) (end) [spline] [xfade]</code >
* 足�?�ステップ�?�ルール�?�使�?れ�?実際�?�地�?��?�場所を指定�?��?��?�。


<code>pad (radius)</code>
* addlayerと似ていますが、指定したフレームにだけ合成をおこないます。splineオプションを指定すると線形のフェードイン(最初からピークまで)とフェードアウト(最後まで)をスプライン曲線に変換します。
* 足�?�ステップ�?�ルール�?�使�?れ�?地�?��?��?�接触�?ェックを�?�る範囲�?�大�??�?�を指定�?��?��?�。


<code>contact (frame)</code>
<code >delta</code >
* 足�?�ステップ�?�ルール�?�使�?れ�?地�?��?置�?��?ェック�?��?��?�フレームを使�?��?�指定�?��?��?�。


<code>radius (units)</code>
* これは"subtract"コマンドを補完するもので、アニメーション合成システムに対して通常のクロスフェードウェイト構造ではなく、このシークエンスを現在のボーンセットアップの上に"加算"するように指定します。
* attachment�?�ルール�?�使�?れ,�?検索を行�?��?�径を指定�?��?��?�。


<code>usesource</code>
<code >predelta</code >
* IK�?�ゴール設定�?�元�?�アニメーションソースを使用�?��?��?�。�?�れ�?��?�在�?�アニメーション�?�ソースアニメーション�?��?��?��?��?�?�れ�?�も�?��?��?�??�?�元�?�姿�?�戻�?��?��?�場�?��?�役�?�立�?��?��?�。


<code>usesequence</code>
* これは"presubtract" コマンドを補完するもので、アニメーション合成システムに対して通常のクロスフェードウェイト構造でそれぞれのボーンのアニメーションを上書きするのではなく、現在のボーンセットアップとリファレンスの違うフレームの上に追加するように指定します。
* blendlayerやaddlayerルールも�?�ん�?�全�?��?�シークエンスルールを実行�?��?IK�?�ゴールを決定�?��?��?�。


=新�?��?�$sequenceオプション=
<code >snap</code >


<code>activity (activity_name) (weight)</code>
* このアニメーションに遷移するときにすべてのブレンディングを取り除きます。これは生物がおびえたり、武器を撃ったりという突然だったり暴力的な反応アニメーションに向いています。
* �?��?�コマンド�?�シークエンスをActivity�?��?�?�付�?��?��?�。Activity�?��??�?�?�コード�?�ら1�?�以上�?�シークエンスを呼�?�出�?�別�??�?��?��?��?�??�?��?�。


Activityを使�?��?��?��?�利点�?��?モデラー�?�1�?��?�Activity�?�対�?��?�複数�?�シークエンスを指定�?�る�?��?��?��?��??�?プログラマ�?�介入�?��?��?�モデル�?�アニメーション�?��?リエーションを�?��?�られる�?��?��?��?��?��?��?�。�?��?��?��?��?モデラー�?�3�?��?�idle(待機)アニメーションを作り全�?�をACT_IDLE�?��?インド�?��?��?�。プログラマ�?�ACT_IDLEを�?生�?�る�?�?��?��?�コードを書�??�?��?��?�3�?��?�シークエンス�?�1�?�を�?生�?�る�?��?��?��?��??�?��?�。
<code >realtime</code >


2�?�目�?�パラメータ�?��?�るactivity_name�?��?�プログラマ�?�activity表(ai_activity.cpp�?�activitylist.cpp)�?��?�るActivity�?��??�?を指定�?�る必�?�?��?�り�?��?�。
* サイクルクロックを無視し、実時間システムクロックでシークエンスを再生します。親シークエントに対してサイクルの固定されている必要がないレイヤーを加える際に役立ちます。


3�?�目�?�パラメータ�?weight�?�?��?��?�Activity�??を�?�?�他�?�シークエンス�?�比�?��?��?��?��??ら�?��?�頻度�?��?��?�シークエンス�?��?��?�れる�?��?��?��?��?��?�をコントロール�?��?��?�。例�?��?��?weightを1�?�設定�?��?�シークエンス"idle1"�?��?weightを2�?�設定�?��?�シークエンス"idle2"�?��?��?��?��?��?�る�?��?ACT_IDLEを�?生�?�る�?��??�?�"idle2"�?��?��?�れる確率�?�2�?�?��?�り�?��?�。
<code >fadein (time)</code >


Activity�?�割り当�?��?�シークエンス�?�1�?��?��?��?�場�?��?��?weightを-1�?��?�る�?��?��?�少�?�パフォーマンス�?��?��?�り�?��?�。
* 他のものからこのアニメーションに遷移するときの0.2秒のブレンドを指定した秒数のブレンドで上書きします。


<code>autoplay</code>
<code >fadeout (time)</code >
* �?��?�シークエンス�?��?生時�?��?他�?�シークエンス�?�全�?��?��?�?�れ�?�後�?ボーンセットアップ�?�終�?り�?�自動追加�?�れ�?��?�。�?�れら�?�シークエンス�?�通常"delta(差分)"シークエンス�?��?��?��?�??�?��?��?��??�?�も�?��?��?��?��?�ん。も�?�モデル�?�複数�?�autoplayシークエンス�?��?�る�?�ら�?QCファイル�?��?�れ�?�順番�?�追加�?�れ�?��?�。


�?�れを�?�解�?�る簡�?��?�方法�?��?複数�?�ボーンを�?�?�コントローラ�?��?��?��?��?��?�考�?�る�?��?��?��?�。Autoplayシークエンス�?�サイクル/フレームインデックス�?�0�?��?��?��?��?��?��?生�?�れ�?��?�。
* このアニメーションから他のものに遷移するときの0.2秒のブレンドを指定した秒数のブレンドで上書きします。


<code>addlayer (sequence)</code>
<code >blendwidth (width)</code >
* 自動的�?�他�?�シークエンスを�?�在�?�シークエンス�?�上�?��?��?�?��?��?�。�?�在�?�ボーンセットアップ�?�上�?��?��?�?�れる�?�?�行�?れ�?��?�。�?��?�新�?��?�シークエンス�?�サイクルインデックス�?��?�在�?�シークエンス�?��?��?��?��?�り�?��?�。


<code>blendlayer (sequence) (start) (peak) (tail) (end) [spline] [xfade]</code>
* 1x1、2x1、3x1、2x2、3x3のブレンドの代わりに、整数で好きなブレンド幅を指定することができます。7x1、3x4、2x9など。
* addlayer�?�似�?��?��?��?��?��?指定�?��?�フレーム�?��?��?��?��?を�?��?��?��?��?��?�。splineオプションを指定�?�る�?�線形�?�フェードイン(最�?�?�らピーク�?��?�)�?�フェードアウト(最後�?��?�)をスプライン曲線�?�変�?��?��?��?�。


<code>delta</code>
<code >blend (name) (min) (max)</code >
* �?�れ�?�"subtract"コマンドを補完�?�るも�?��?��?アニメーション�?��?システム�?�対�?��?�通常�?�クロスフェードウェイト構造�?��?��?��??�?�?��?�シークエンスを�?�在�?�ボーンセットアップ�?�上�?�"加算"�?�るよ�?��?�指定�?��?��?�。


<code>predelta</code>
* 8個までパラメータのブレンドを行えます
* �?�れ�?�"presubtract" コマンドを補完�?�るも�?��?��?アニメーション�?��?システム�?�対�?��?�通常�?�クロスフェードウェイト構造�?��??れ�?�れ�?�ボーン�?�アニメーションを上書�??�?�る�?��?��?��?��??�?�?�在�?�ボーンセットアップ�?�リファレンス�?��?��?�フレーム�?�上�?�追加�?�るよ�?��?�指定�?��?��?�。


<code>snap</code>
<code >node (name)</code >
* �?��?�アニメーション�?��?�移�?�る�?��??�?��?��?��?��?�ブレンディングを�?�り除�??�?��?�。�?�れ�?�生物�?��?��?��?��?�り�?武器を撃�?��?�り�?��?��?��?然�?��?��?�り暴力的�?��??応アニメーション�?��?��?��?��?��?��?�。


<code>realtime</code>
* このシークエンスがシークエンス遷移グラフ表のどのノードポイントに属するかを示します。これはループアニメーションといた不ラフの状態を変更しないアニメーションのためのものです。複数のシークエンスを同じポイントに割り当てることも可能で、それらの間では遷移アニメーションは必要ありません。もしくは違う名前のポイントに割り当て、遷移をスキップする($skiptransition参照)宣言を行うことも可能です。ポイントの宣言がないシークエンスはルートノードにあるとみなされ、どのシークエンスからも、そしてどのシークエンスにもつなぎなしで遷移可能とみなされます。
* サイクルクロックを無視�?��?実時間システムクロック�?�シークエンスを�?生�?��?��?�。親シークエント�?�対�?��?�サイクル�?�固定�?�れ�?��?�る必�?�?��?��?�レイヤーを加�?�る際�?�役立�?��?��?�。


<code>fadein (time)</code>
<code >transition (from) (to)</code >
* 他�?�も�?��?�ら�?��?�アニメーション�?��?�移�?�る�?��??�?�0.2秒�?�ブレンドを指定�?��?�秒数�?�ブレンド�?�上書�??�?��?��?�。


<code>fadeout (time)</code>
* アニメーションがノードグラフのあるポイントから別のポイントに遷移するときのものであると指定します。walk_to_stand, run_to_crouchといった遷移シークエンスを再生するのに使われます。
* �?��?�アニメーション�?�ら他�?�も�?��?��?�移�?�る�?��??�?�0.2秒�?�ブレンドを指定�?��?�秒数�?�ブレンド�?�上書�??�?��?��?�。


<code>blendwidth (width)</code>
<code >rtransition (name1) (name2)</code >
* 1x1�?2x1�?3x1�?2x2�?3x3�?�ブレンド�?�代�?り�?��?整数�?�好�??�?�ブレンド幅を指定�?�る�?��?��?��?��??�?��?�。7x1�?3x4�?2x9�?��?�。


<code>blend (name) (min) (max)</code>
* transitionと同じようなものですが、シークエンスが逆順に再生できるというフラグをたてます。HL1の触手で使われていましたが、特殊な場合を除いて使用はすすめられません。
* 8個�?��?�パラメータ�?�ブレンドを行�?��?��?�


<code>node (name)</code>
<code >exitphase (phase)</code >
* �?��?�シークエンス�?�シークエンス�?�移グラフ表�?��?��?�ノード�?イント�?�属�?�る�?�を示�?��?��?�。�?�れ�?�ループアニメーション�?��?��?��?ラフ�?�状態を変更�?��?��?�アニメーション�?��?��?�?�も�?��?��?�。複数�?�シークエンスを�?��?��?イント�?�割り当�?�る�?��?�も�?�能�?��?�??れら�?�間�?��?��?�移アニメーション�?�必�?�?�り�?��?�ん。も�?��??�?��?��?��??�?�?��?イント�?�割り当�?��?�?�移をスキップ�?�る($skiptransition�?�照)宣言を行�?��?��?�も�?�能�?��?�。�?イント�?�宣言�?��?��?�シークエンス�?�ルートノード�?��?�る�?��?��?��?�れ�?�?��?�シークエンス�?�らも�?�??�?��?��?��?�シークエンス�?�も�?��?��?��?��?��?��?�移�?�能�?��?��?��?�れ�?��?�。


<code>transition (from) (to)</code>
* "stand_to_run"といったループアニメーション間の遷移を行う時に、ループしているどこから次のシークエンスを開始するかを移動システムに伝えます。また次のポイントが同じシークエンス全てでフェーズが一致する(startloopを参照)と仮定しています。
* アニメーション�?�ノードグラフ�?��?�る�?イント�?�ら別�?��?イント�?��?�移�?�る�?��??�?�も�?��?��?�る�?�指定�?��?��?�。walk_to_stand, run_to_crouch�?��?��?��?��?�移シークエンスを�?生�?�る�?��?�使�?れ�?��?�。


<code>rtransition (name1) (name2)</code>
<code >$skiptransition (name1) (name2) [(name3) …]</code >
* transition�?��?��?�よ�?��?�も�?��?��?��?��?シークエンス�?�逆順�?��?生�?��??る�?��?��?�フラグを�?��?��?��?�。HL1�?�触手�?�使�?れ�?��?��?��?��?��?��?特殊�?�場�?�を除�?��?�使用�?��?��?��?られ�?��?�ん。


<code>exitphase (phase)</code>
* 遷移ノードグラフの中で名前を挙げたポイント間の直接移動を可能にするルールを追加します。名前がついたポイントの遷移を行うがつなぎとなるアニメーションを必要としない時に役に立ちます。これで"walk"から"run"ではなく、"walk"から"stand" そして"run"という遷移にできます。
* "stand_to_run"�?��?��?��?�ループアニメーション間�?��?�移を行�?�時�?��?ループ�?��?��?�る�?��?��?�ら次�?�シークエンスを開始�?�る�?�を移動システム�?��?�?��?��?�。�?��?�次�?��?イント�?��?��?�シークエンス全�?��?�フェーズ�?�一致�?�る(startloopを�?�照)�?�仮定�?��?��?��?��?�。


<code>$skiptransition (name1) (name2) [(name3) …]</code>
<code >keyvalues { [stuff] }</code >
* �?�移ノードグラフ�?�中�?��??�?を挙�?��?��?イント間�?�直接移動を�?�能�?��?�るルールを追加�?��?��?�。�??�?�?��?��?��?��?イント�?��?�移を行�?��?��?��?��?��?��?�るアニメーションを必�?�?��?��?��?�時�?�役�?�立�?��?��?�。�?�れ�?�"walk"�?�ら"run"�?��?��?��??�?"walk"�?�ら"stand" �??�?��?�"run"�?��?��?��?�移�?��?��??�?��?�。


<code>keyvalues { [stuff] }</code>
* 指定したシークエンスにキーバリューブロック($keyvalues参照)を追加します。
* 指定�?��?�シークエンス�?�キー�?リューブロック($keyvalues�?�照)を追加�?��?��?�。


=新�?��?�マクロコマンド=
=新しいマクロコマンド=
<code >$definemacro (macroname) [named parameters …]</code >


<code>$definemacro (macroname) [named parameters …]</code>
* 指定した名前がついたマクロコマンドを定義します。この中で他のQCコマンドを指定することができます。マクロはコードのブロックをつくり、パラメータ部分にマクロで指定した値を挿入します。
* 指定�?��?��??�?�?��?��?��?�マクロコマンドを定義�?��?��?�。�?��?�中�?�他�?�QCコマンドを指定�?�る�?��?��?��?��??�?��?�。マクロ�?�コード�?�ブロックを�?��??り�?パラメータ部分�?�マクロ�?�指定�?��?�値を挿入�?��?��?�。


例:
例:

Revision as of 00:39, 29 November 2005

originally translated by RumikoHoshino, 2005/9/7
original English version: .QC Commands
.QCコマンドリファレンス

標準コマンド


$scale (scale)

  • モデルを指定した量だけ拡大縮小します。1.0を指定するとモデルは標準に、0.5だと半分に、2.0だと2倍の大きさになります。$scaleコマンドは全ての.smdファイルへのリファレンスの前におく必要があることに注意してください。そうでないと拡大縮小は適用されません。

$poseparameter (name) (min) (max) ["loop" (number)] ["wrap"]

  • これらはシークエンス(sequences)内で通常指定される"blend"パラメータとほぼ同じですが、stuidomdlが範囲を推定するのではなく、範囲を明示的に宣言できるという点が違います。"loop"を指定した場合、エンジンは値の計算を折り返して(wrap)行います。

$attachment (name) (bone name) (X) (Y) (Z) ["absolute"] ["rigid"] ["rotate" pitch yaw roll]

  • Attachmentポイント(他のモデル、効果などの接続点)は以前のように固定したインデックスではなく、名前で指定されるようになりました。ボーンの相対位置だけではなく、絶対座標系で定義することも可能です。"rigid"の指定を行うと、接続されたボーンはアニメーションしないものとみなされ、最適化で取り除かれる可能性があり、その場合親として利用できる最初のボーンに接続されます。

"rotate"オプションはAttachmentポイントの位置関係を親ジョイントと相対的に変更します。 $hierarchy (child bone) (parent bone)

  • リファレンスファイルの内容に関わらず、特定のボーンの階層構造を強制的に設定します。通常ボーンの階層構造は最初にファイルに登場した親子関係によって生成されます。このコマンドによってその生成された階層構造を任意に上書きすることができます。

注意: モデル作成者は、アニメーション作成者が少なくともソースファイルにおいてボーンの階層構造を変えることを許すでしょう。アニメーション再生時には単独の固定した階層構造に統一しますが、手のアニメーションのタスクの場合は階層構造を変更するのがたやすいことも多いです。階層構造は最初に登場する親子関係で定義されます。 $definebone (name) (parent) (X) (Y) (Z) (xr) (yr) (zr) (fixup XR) (fixup YR) (fixup ZR)

  • .smdファイルの外でボーンを定義します。これはアニメーションのみを含む.mdlを作る際に役立ちます。このコマンド無しではどのジオメトリにもattachmentポイントにも接続していない全てのボーンが最適化されて取り除かれてしまうからです。このボーン定義コマンドはstudiomdlのコマンドラインで"-definebones"を指定することで書き出すことができます。

$animation (name) (file) [(options)...]

  • このコマンドはそれぞれ違うオプション(フレーム番号、配置など)をもった複数のアニメーションからシークエンスを作成するときに使います。シークエンスを作成するときに、ファイル名の代わりにここで指定したアニメーション名を呼び出します。

$declaresequence (name)

  • シークエンスの先行宣言を行います。これは外部のmdlファイルにあるシークエンスをレイヤーとして加えるなど、ローカルには宣言されていないシークエンスを使うときに役立ちます。$declaresequenceはローカルシークエンスが参照できる空のシークエンスエントリーを作り、実行時にはこれは実際のシークエンスインデックスで上書きされます。

$bonemerge (name)

  • 指定したボーンはマージされるかもしれない([[Attachments" title="Attachments">Attachments</a>参照)とゲームコードに示す手がかりとして働きます。この指定がなくてもボーンを使うことはできますが、パフォーマンスの警告をうけることになります。

$includemodel (filename)

  • この.mdlファイルが実行時に読み込む.mdlファイルを追加指定します。その.mdlファイルの全てのシークエンスとアニメーションがモデルに追加されます。アニメーションやシークエンスは順番に処理され、名前の衝突があるアニメーション・シークエンスは後続のものが無視されます。ローカルと同じ名前のエントリーがある場合、最初に宣言されたものが使われます。

読み込む.mdlは異なるボーンの順番でもかまいませんが、同じ階層構造そしてIKチェーン宣言がされている必要があります。これを確かめる実行時のチェックは今のところありません。 読み込まれる.mdlからはアニメーションとシークエンスのみが使われます。今のところ、モデル、テクスチャ、面、attachmentなどは無視されます。 $animblocksize (size in K)

  • この指定を行うと、全てのアニメーションデータは.aniファイルに書き出され、シークエンスがデータが必要になったときにオンデマンドで読み込まれます。"size in K"はアニメーションがグループにまとめられるブロックのサイズです。4Kから64Kが問題ないですが、16K、32Kがメモリ断片化の面においてよい特徴をもちます。

$weightlist (name) (bone name) (weight) [[(bone name) (weight)] ....]

  • 他のアニメーションの上にブレンドされるアニメーションが使用できるボーンのウェイトのリストを作ります。このリストはルートボーンのウェイトは0で、全ての子ボーンは一番近い親のウェイトを引き継ぐと過程しています。これによりウェイトが変化する部分だけウェイトを指定すればよく、リストの全てのボーンに指定を行う必要はありません。

$staticprop

  • 全てのボーンがオブジェクトに集約されます。オブジェクトにアニメーションがない場合のみ使うことができます。それでも、これによりモデルがより早くレンダリングされるのでできる限り使いたいと思うでしょう。

$realignbones

  • これは全てのボーンに再整列を強制します - 可能な場合、ボーンの一番長い軸がボーンのX軸になるようにします。これは子ボーンが親ボーンの対角線上になり、軸にそったバウンディングボックスがモデルに合わない形になることが多いヒットボックスの作成においてと、子ボーンが親ボーンのX軸上にあることをもとめるIKシステムで役に立ちます。

骨盤(pelvis)のように複数の子を持つボーンは再整列を行うことはできずIKシステムの一部にすることができません。例 骨盤(pelvis)ボーンと相対的に腰(hip)ボーンの位置を変更することはできません。 $surfaceprop (name)

  • モデル全体に特定の表面属性(surface property)を適用します。表面属性はモデルのパラメータに影響します:物理特性(重さなど)、衝突したときの音、撃った時にでるパーティクルの種類などです。表面属性の種類をを追加したり変更したい場合は、hl2\scripts\surfaceproperties.txtを編集してください。

$jointsurfaceprop (joint name) (name)

  • 表面属性(surface property)を指定したジョイントとその子に適用します。表面属性を正しく適用する.QCコマンドのブロックはHLMVから生成することもできます。

$contents (list of names of content types)

  • 非ヒットボックスのトレースでのコンテンツマスクテストで使用するコンテンツを指定します。フェンスをブラシモデルではなくプロップで作るといったことを可能にするためにこの機能は追加されました。

現在使用できるコンテンツタイプは:

  • "grate" 格子にします(弾丸は通しますが、他のものは通しません)
  • "monster" NPCとしてマークします
  • "notsolid" 全てのものに対して非剛体として振舞います
  • "solid" 剛体にします (非剛体の親に$jointcontentsで剛体の子を作るときだけ役に立ちます)
  • "ladder" はしごにします

例:

$contents "monster" "grate"

$jointcontents (joint name) (list of names of content types)

  • このコマンドはcontentsコマンドとほぼ同じですが、指定したボーンとその子のコンテンツを適用します。

$opaque

  • シーンの他のオブジェクトに対してソートを行うときに、このモデルが不透明とみなされるようにします。モデルの一部分だけ(髪、目、めがねなど)が透明でソートで問題が起こらない時に使いまず。

$mostlyopaque

  • モデルが2つのパスでレンダリングされるようにします:最初のパスはモデルの不透明部分だけを、2つ目のパスは透明部分だけをレンダリングします。木のようなモデルで透明度のソート問題を改善するのに役に立ちます。

$keyvalues

  • これを使うと.mdlファイルの中に任意のキーバリュー定義ブロックを追加することができます。例:
$keyvalues
      {
           "build_points"
           {
                "build_point_0"
                {
                     "valid_objects"
                     {
                          "obj_manned_plasmagun" 1
                          "obj_resourcepump" 1
                          "obj_shieldwall" 1
                     }
                }
           }
      }

$definemacro (macroname) [arg_name1] [arg_name2] […] \\

  • 文字列を置き換えるマクロを定義します。マクロ定義は次の行から始まり、すべての連続する行は\\で終わります。引数は$で囲まれ(例 $arg_name1$)、他の言葉の中に埋め込むことができます。マクロを使うには、$マクロ名を入力し、そうするとそれからN個のトークンが引数とみなされます。
      $definemacro testmacro seqname filename endframe \\
      $sequence $seqname$01 $filename$ { \\
           frames 0 $endframe$ \\
           subtract $seqname$ 0 delta \\
           weightlist justbody \\
      }

下のように使います:

      $testmacro small_flinch "npc flinch 01" 20

$lod (distance) { (lod commands here) }

  • モデルのLOD(Level Of Detail - 距離によるモデル簡略化)をどのように実行するかを定義するコマンドブロックを始めます。distance(距離)パラメータよりカメラが離れたときに指定したLODコマンドが実行されます。マテリアル、テクスチャといったものを置き換えることができます。このLODブロックに含めることができるコマンドはLevel of Detailセクションにあります。

Level of Detailコマンド(距離によるモデル簡略化指定)

replacebone (original bone) (replacement bone)

  • リファレンスモデルの元のボーンの代わりに別のボーンが使われるようにします。手の全てのボーンを集約する時に役立ちます。指が'finger'(指)ボーンの代わりに'hand'(手)のボーンを使うようにできます。

bonetreecollapse (bone name)

  • 指定したボーンの子ボーン全てが現在接続しているボーンの代わりに指定したボーンを使うようになります。多数のボーンを集約したい場合replaceboneより簡単になります。特に手ではこの機能を使うことができます。

replacemodel (model name) (replacement model) [reverse]

  • 元のモデルを別のモデルで置き換えます。"reverse"を指定すると、置き換えモデルの法線が反転されます。置き換えモデルの名前が'blank'なら、モデルはレンダリングされなくなります。このコマンドはモデルをローポリゴンモデルで置換するのに使われます。

removemodel (model name)

  • このLODにおいてモデルがレンダリングされないようにします。

replacematerial (original material name) (replacement material name)

  • モデルの特定のマテリアルを他のもので置き換えます。例えばLODの低ポリゴンモデルでは小さいテクスチャを使うようにする、といった場合に使うことができます。

removemesh (material name)

  • このLODにおいて指定したマテリアルを使っている全ての三角ポリゴンを取り除きます。

nofacial

  • このLODにおいて顔アニメーションを無効にします。

新しい$modelオプション

eyeball (name) (bone name) (X) (Y) (Z) (material name) (diameter) (angle) (iris material) (pupil scale)

  • (name) 眼球の名前。eyelidルールでの指定で使われる
  • (bone name) 目の親となるボーン。通常の場合head(頭)
  • (X) (Y) (Z) World location of the center of the ball of the eye.
  • (material name) 目の白目部分となる頂点を検索するのに使われるマテリアル名 (目に虹彩、瞳孔を動的にテクスチャマッピングするのに使われる).
  • (diameter)眼球の直径
  • (angle) 虹彩の"forward"(正面)アタッチメントからのyaw軸の傾き初期値。通常人間の目は2-4度外を向いています。この値を正しく設定しないと、キャラクタが寄り目になったり、横にうまく動かなかったりします。
  • (iris material)虹彩のテクスチャとして使うマテリアルの名前
  • (pupil scale)虹彩テクスチャの縮尺

eyelid (name) (expression file) lowerer/neutral/raiser (frame) (height) split (distance) eyeball (name)

  • (name) eyelid(まぶた)のflexcontroller(筋肉コントローラ)のベースとなる名前。この名前に"lowerer"(下げる)、"neutral"(普通)、"rasier"(上げる)の指定を組み合わせてまぶた位置のブレンドを行います。
  • (expression file) モーフターゲットが含まれているファイル名。
  • lowerer/neutral/raiser (frame) (height) 3つの選択肢の1つ、それが(expression file)の何フレーム目に含まれ、白目の端と瞳の中央の上下距離がどれくらいか。
  • split (distance) このまぶたモーフターゲットに含まれる頂点が0ラインの反対のどこからはじまっているのか。
  • eyeball (name) このeyelid(まぶた)のflexcontroller(筋肉コントローラ)が動かす眼球の名前
  • flex (name) [(expression file)]
  • frame (frame) position split (distance)
  • defaultflex
  • flexfile (expression file)
  • localvar (name) [(name) …]
  • mouth (flexcontroller name) (bone name)
  • spherenormals (material name) (X) (Y) (Z)


参照ページ

新しい$animationオプション

fixuploop (pre loop frames) (post loop frames)

  • アニメーションの最後のフレームと最初のフレームの差を見つけて、その領域の差をブレンドします。範囲は負の値(最後のフレームから戻った数)から0と、0から正の値(最初のフレームからのフレーム数)です。

これは非ループアニメーションの一部からループするアニメーションを作る時や、ループになっているはずなのに引っかかりがあるモデルを直すのにも役に立ちます。
alignto (goal animation)

  • 現在のアニメーションの最初の(ローカル)フレームのルート位置(X,Y軸)を別のアニメーションの最初のフレームにルート位置と一致するように移動します。アニメーションが原点(origin)からはじまらない場合や、長いアニメーションの一部だけ切り取って共有の原点に位置あわせする早い方法が必要なときなどに役立ちます。

align (reference animation) [X Y Z XR YR ZR] (reference frame) (to match frame)

  • これはaligntoに似ていますが、どのフレームで、どの位置関係で位置を合わせるかということを指定できます。垂直移動があるアニメーションの位置あわせに役立ちます。

alignboneto (bone name) (goal animation)

  • aligntoに似ていますが、原点ではなく指定したボーンで位置あわせをします。

startloop (local frame)

  • これはループアニメーションの開始フレームをリセットします。複数のアニメーションを順番に再生するが、そのソースアニメーションが一致していないときに役立ちます。

fudgeloop

  • 移動があるループアニメーションの場合、移動するとともに最初と最後のフレームでの位置が一致する必要が(理想的には)あります。この理由は最後の中間フレームを計算するときにstudiomdlはエンジンに対して最初のキーフレームから最後のキーフレームまでどのくらいモデルが移動したかを伝える必要があるからです。この最後の短い30分の1-10分の1秒の間の距離は、前のキーフレームの距離とは同じではなく、1フレーム平均の移動量とも違っているので、オーバーラップの定義をおこなわないとstudiomdlが間違った推測をした場合にひっかかりや足が滑ったりする可能性があります。

なにか重大な理由があってアニメーションが最後のフレームのオーバーラップを作ることができないのなら、このオプションはstudiomdlに今までのアニメーションで見たものとフレーム平均の移動距離が同じであることを保証し、オーバーラップフレームを自分で作る必要があると伝えます。 weightlist (weightlist name)

  • すでに定義されたボーンウェイトリストを現在のアニメーションにコピーします。1つのアニメーションに対してこれを何回も行うことができます。subsequentのsubtract、match、fizuploopオプションは0より大きいウェイトを持つボーンのみに働きます。ブレンドを行うときには直前に指定されたウェイとリストを使用します。複数のアニメーションを含むシークエンスの場合、ソースとなるアニメーションが全て同じウェイトリストを使っていないと結果が定義されません。

アニメーションのウェイトリストの初期値では、全てのボーンウェイトが1.0であると仮定しています。QCでウェイトリストの指定は以下です

      $weightlist no_hands "Bip01" 1.0 "Bip01 L Hand" 0.0 "Bip01 R Hand" 0.0
      $weightlist head_n_arms "Bip01 Spine 2" 1.0

0より大きいウェイトを持つボーンのみがアニメーションに影響します。 subtract (animation) (frame #)

  • これは指定したアニメーションのフレームを現在のアニメーションの全てのフレームから引き、2つの差分となるアニメーションを作成します。リファレンスフレームからの差分に過ぎないアニメーションを他のアニメーションに変換するのに効果的です。

これは"delta(差分)"アニメーションとしてつかえるものの生成もおこないます。これらは複数のボーンをコントロールするタイムシークエンスアニメーションとして考えるのがわかりやすいです。結果のアニメーションはそれ自体では意味がないもので、他のアニメーションの上にかぶせて再生したときだけ妥当なものになります。 presubtract (animation)

  • これは指定したアニメーションの最初のフレームから現在のアニメーションの全てのフレームを引き算し、2つの差分となるアニメーションを作成します。

match (animation)

  • アニメーションの最初のフレームが指定したアニメーションの最初のアニメーションと一致するようにし、それからそこでの差分を後続のフレームすべてに適用します。同じポーズからはじまっているはずなのになぜか合っていないアニメーションを直すのに主に使われます。

walkframe (frame) [LX LY LZ LXR LYZ LZR]

  • アニメーションの線形の部分移動を指定するのに1つのアニメーションにつきこれらを16個まで宣言を行うことができます。前回のwalkframeコマンドのRootボーン(デフォルトではフレーム0)と指定したフレームを比べ、その間の線形動作を抽出します。

walkalignto (frame) (reference animation) [LX LY LZ LXR LYR LZR]

  • Walkframeと似ていますが、指定したフレームで指定した軸にそったモデル(reference animation)から抽出を行います。2つ既存のアニメーションがあってその遷移で使われるアニメーションから動きを抜き出すのに役立ちます。

walkalign (frame) (reference animation) [LX LY LZ LXR LYR LZR] (reference frame) (to match frame)

  • walkaligntoに似ていますが (to match frame)で指定したフレームを(reference animation)で指定したアニメーションの(reference frame)で指定したフレームと比べて動きを計算します。これはモーションを抽出しようしている最後のフレームが目標のアニメーションとは一致していないがその後続のフレームは一致しているときに役に立ちます。

rotateto (angle)

  • 現在の動きの方向を調べ(複数部分があるときは最初の動きを使用)、アニメーションを回転して結果のアニメーションが指定した方向に向かうようにします。

noanimation

  • アニメーションを加算的にし、全てのアニメーションを取り除き、ウェイトリストを0にして、このアニメーションだけがシークエンスに使われるときにエンジンが処理をしないようにするフラグを立てます。"ゼロ(基点)"位置がモデルに影響を及ぼさないようにしたいブレンドシークエンスに便利です。

derivative (scale)

  • Turns the animation into the derivative of itself by simply subtracting the previous frame from each frame in the animation. The derivative can be automatically scaled to compensate for any fps issues.

lineardelta

  • 最初と最後のフレームの線形ブレンドをアニメーションの全フレームから引いて、差分アニメーションを作ります。

splinedelta

  • 最初と最後のフレームのスプライン(スプライン曲線)ブレンドをアニメーションの全フレームから引いて、差分アニメーションを作ります。

compress (skip)

  • 指定した数字毎のフレームのみをとりだしてアニメーションの低FPSバージョンを作ります。FPSの値は自動的に新しいものに合ったものに変換されます。

numframes (frames)

  • アニメーションをカットするか、最後のフレームを複製するで、アニメーションを指定したフレーム数に強制的に合わせます。

新しいIK(逆運動学)オプション

$ikchain (name) (end bone) [height (units)] [pad (units)][floor (units)]

  • IKチェーンを構成するボーンセットを定義します。チェインの指定は、チェインで一番離れた場所にあるボーンの名前を挙げることでおこなわれ、階層構造からそれに連なる2つのボーンを自動的に探索します。

IKチェーンはikruleとiklockアニメーションオプションで独占的に使用されます。 使用するルールによって終端のボーンは必要な場所に移動し、最初のボーンは固定されているとして、真ん中のボーンは2つのボーンとの距離が一定になるような位置に移動します。IKチェーンの例としては足首-膝-腰チェーンがあります。足首は地面に相対的に接するように移動し、腰の位置は固定で、膝は足の長さが変わらないように曲がります。 iklock (chain) (lock position) (maintain local rotation)

  • このシークエンスにおいては、シークエンスを適用する前に指定したチェーンの位置/回転状態の記録をおこない、シークエンス的用語にローカルのIKルールを実行して元の保存した位置に戻します。ウェイトは小数で0.0から1.0です。

これは特定のIKチェーンがシークエンス中に動いてしまうことを防ぐのに使われます。腰や全身の運動を適用するが、モデルの手足は元の位置に留まってほしい場合に役立ちます。 注意: 回転ロックの値は位置から後ろ向きのようなものになります。両方をロックするには"1 0"にセットします。両方を自由に動けるようにするには"0 1"にします(この場合はiklockを使う必要はありませんが、説明のためにあげました)。 ikrule (chain) touch (bone) [options...]

  • ボーンが体のほかの部分に相対的に動く必要がああるというIKルールを追加します。手が顔、腰、もう片方の手といったほかの部分に触れている必要があり、触れられている部分は追加のアニメーションレイヤーやボーンコントローラといった理由でもともとのアニメーションを行う場所としてはいっていないといったときに役立ちます。

ボーン名部分に" "と指定するとそのIKチェーンはアニメーションがついたボーンの変わりにモデルの原点に相対的に動きます。 ikrule (chain) footstep (slot #) [options…]

  • 足のような連続した体の部分が地面に相対的に動く必要がある、といったIKルールを追加します。

Ikルール(逆運動学ルール)オプション

range (start) (peak) (tail) (end)

  • ikルールのためのフェードイン、保持(hold)、フェードアウトを行うフレーム番号を指定します。

height (units)

  • 足のステップのルールで使われ、望ましい地面高さのどれくらい上から検索をはじめるかを指定します。

floor (units)

  • 足のステップのルールで使われ、実際の地面の場所を指定します。

pad (radius)

  • 足のステップのルールで使われ、地面との接触チェックをする範囲の大きさを指定します。

contact (frame)

  • 足のステップのルールで使われ、地面位置のチェックにどのフレームを使うか指定します。

radius (units)

  • attachmentのルールで使われ,、検索を行う半径を指定します。

usesource

  • IKのゴール設定に元のアニメーションソースを使用します。これは現在のアニメーションがソースアニメーションと違う合成されたもので、その元の姿に戻したい場合に役に立ちます。

usesequence

  • blendlayerやaddlayerルールも含んだ全てのシークエンスルールを実行し、IKのゴールを決定します。

新しい$sequenceオプション

activity (activity_name) (weight)

  • このコマンドはシークエンスをActivityに結び付けます。Activityの名前はコードから1つ以上のシークエンスを呼び出す別名として働きます。

Activityを使うことの利点は、モデラーが1つのActivityに対して複数のシークエンスを指定することができ、プログラマの介入なしにモデルのアニメーションにバリエーションをつけられるということです。たとえば、モデラーは3つのidle(待機)アニメーションを作り全てをACT_IDLEにバインドします。プログラマはACT_IDLEを再生する、というコードを書くだけで3つのシークエンスの1つを再生することができます。


2つ目のパラメータであるactivity_nameにはプログラマのactivity表(ai_activity.cppとactivitylist.cpp)にあるActivityの名前を指定する必要があります。


3つ目のパラメータ、weight、は同じActivity名を持つ他のシークエンスと比べてどのくらいの頻度でこのシークエンスが選ばれるかということをコントロールします。例えば、weightを1に設定したシークエンス"idle1"と、weightを2に設定したシークエンス"idle2"があったとすると、ACT_IDLEを再生するときに"idle2"が選ばれる確率は2倍になります。


Activityに割り当てたシークエンスが1つだけの場合は、weightを-1にすることで少しパフォーマンスがあがります。 autoplay

  • このシークエンスは再生時に、他のシークエンスが全て合成された後、ボーンセットアップの終わりに自動追加されます。これらのシークエンスは通常"delta(差分)"シークエンスですが、そうでなくてもかまいません。もしモデルに複数のautoplayシークエンスがあるなら、QCファイルに現れた順番に追加されます。

これを理解する簡単な方法は、複数のボーンを持つコントローラにすぎないと考えることです。Autoplayシークエンスはサイクル/フレームインデックスの0においてのみ再生されます。 addlayer (sequence)

  • 自動的に他のシークエンスを現在のシークエンスの上に合成します。現在のボーンセットアップの上に合成される前に行われます。この新しいシークエンスのサイクルインデックスは現在のシークエンスと同じになります。

blendlayer (sequence) (start) (peak) (tail) (end) [spline] [xfade]

  • addlayerと似ていますが、指定したフレームにだけ合成をおこないます。splineオプションを指定すると線形のフェードイン(最初からピークまで)とフェードアウト(最後まで)をスプライン曲線に変換します。

delta

  • これは"subtract"コマンドを補完するもので、アニメーション合成システムに対して通常のクロスフェードウェイト構造ではなく、このシークエンスを現在のボーンセットアップの上に"加算"するように指定します。

predelta

  • これは"presubtract" コマンドを補完するもので、アニメーション合成システムに対して通常のクロスフェードウェイト構造でそれぞれのボーンのアニメーションを上書きするのではなく、現在のボーンセットアップとリファレンスの違うフレームの上に追加するように指定します。

snap

  • このアニメーションに遷移するときにすべてのブレンディングを取り除きます。これは生物がおびえたり、武器を撃ったりという突然だったり暴力的な反応アニメーションに向いています。

realtime

  • サイクルクロックを無視し、実時間システムクロックでシークエンスを再生します。親シークエントに対してサイクルの固定されている必要がないレイヤーを加える際に役立ちます。

fadein (time)

  • 他のものからこのアニメーションに遷移するときの0.2秒のブレンドを指定した秒数のブレンドで上書きします。

fadeout (time)

  • このアニメーションから他のものに遷移するときの0.2秒のブレンドを指定した秒数のブレンドで上書きします。

blendwidth (width)

  • 1x1、2x1、3x1、2x2、3x3のブレンドの代わりに、整数で好きなブレンド幅を指定することができます。7x1、3x4、2x9など。

blend (name) (min) (max)

  • 8個までパラメータのブレンドを行えます

node (name)

  • このシークエンスがシークエンス遷移グラフ表のどのノードポイントに属するかを示します。これはループアニメーションといた不ラフの状態を変更しないアニメーションのためのものです。複数のシークエンスを同じポイントに割り当てることも可能で、それらの間では遷移アニメーションは必要ありません。もしくは違う名前のポイントに割り当て、遷移をスキップする($skiptransition参照)宣言を行うことも可能です。ポイントの宣言がないシークエンスはルートノードにあるとみなされ、どのシークエンスからも、そしてどのシークエンスにもつなぎなしで遷移可能とみなされます。

transition (from) (to)

  • アニメーションがノードグラフのあるポイントから別のポイントに遷移するときのものであると指定します。walk_to_stand, run_to_crouchといった遷移シークエンスを再生するのに使われます。

rtransition (name1) (name2)

  • transitionと同じようなものですが、シークエンスが逆順に再生できるというフラグをたてます。HL1の触手で使われていましたが、特殊な場合を除いて使用はすすめられません。

exitphase (phase)

  • "stand_to_run"といったループアニメーション間の遷移を行う時に、ループしているどこから次のシークエンスを開始するかを移動システムに伝えます。また次のポイントが同じシークエンス全てでフェーズが一致する(startloopを参照)と仮定しています。

$skiptransition (name1) (name2) [(name3) …]

  • 遷移ノードグラフの中で名前を挙げたポイント間の直接移動を可能にするルールを追加します。名前がついたポイントの遷移を行うがつなぎとなるアニメーションを必要としない時に役に立ちます。これで"walk"から"run"ではなく、"walk"から"stand" そして"run"という遷移にできます。

keyvalues { [stuff] }

  • 指定したシークエンスにキーバリューブロック($keyvalues参照)を追加します。

新しいマクロコマンド

$definemacro (macroname) [named parameters …]

  • 指定した名前がついたマクロコマンドを定義します。この中で他のQCコマンドを指定することができます。マクロはコードのブロックをつくり、パラメータ部分にマクロで指定した値を挿入します。

例:

      $definemacro makeidlenoise idleNoiseName fileName \\
      $sequence $idleNoiseName$ {\\
           $fileName$ \\
           subtract $idleNoiseName$ 0 \\
           iklock lfoot 1 0 iklock rfoot 1 0 \\
           delta \\
           hidden \\
           realtime \\
      }

      $makeidlenoise idleNoise03 "Idle03"
      $makeidlenoise idleNoise04 "Idle04_v32"