QC Commands
January 2024
You can help by adding links to this article from other relevant articles.
January 2024
.QCコマンドリファレンス
Contents
標準コマンド
$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"
January 2024