Model Configの日本語訳

原題 : Model Config
原文 : http://community.bistudio.com/wiki/Model_Config
翻訳時期 : 2009 Feb.


はじめに

モデルのコンフィグレーションファイル(略してコンフィグ)は、P3D形式のモデルとプログラムをつなぐインターフェイスにあたるものです。

バイナライズする過程の間、テーブルの索引の処理が行われ、モデルの様々なセクションとスケルトンを使用してどのうようにアニメーションさせるかをプログラムに伝えます。

このシステムは、前作で使われていたものよりも、もっとフレキシブルになりました。というのは、全ての情報がモデルに格納され、そしてメインのコンフィグファイルの中にオブジェクトクラスを必要としなくなりました。これが意味するものは、いくつかのオブジェクトクラスは、同じモデルを使うこともできますし、モデルと分離してアニメーションを定義する必要がなくなったからです。

システムの目標は、モデルのコンフィグを設計者とアーチストの担当パートに分離することにあります。メインのコンフィグファイルへのアニメーションソースクラスの導入によってこれが行われ(設計者の担当パート)、そしてモデルのコンフィグファイルの中でアニメーションクラスを継続的に使用することとなります(アーチストのパート)。

ほとんどのモデルにおいて、データの階層構造の上位レベルで定義した基礎部分から、定義内容を継承することが可能です。階層構造の例について、次の挿絵と一緒に説明いたします。

  • p:\ofp2\vehicles\model.cfg – デフォルトクラスの定義
  • p:\ofp2\vehicles\land\wheeled\model.cfg – Carクラスの定義
  • p:\ofp2\vehicles\land\wheeled\landrover\model.cfg – ランドローバーとしての定義
  • p:\ofp2\vehicles\land\wheeled\landrover\lr6x6_3 – モデル内における、ランドローバーの正しいコンフィグ(この機能は実装されてない、そして多分今後も)
  • p:\ofp2\vehicles\land\wheeled\landrover\lr6x6_mg240 – LR6x6_MG240.cfgを持つ。ランドローバーのクラスから継承し、砲塔を定義を追加

Notes[注意]

このステージでは、ユーザーのアクションと一緒にプログラムの中でモデルとアニメーションのバイナライズされる間のファイルの構文について解析します。ついにそれらはBuldozerのビユワーでプレビューできるようになりました。

モデルコンフィグは、使いやすいように名称を付けることを許可します。デフォルトのmodel.cfgによって名称がつけられた複数のモデルコンフィグのファイルは、フォルダ名の後または特定のモデルの後に名前を付けることができます。この事例においては、「モデル.cfg」と「フォルダ名.cfg」の両方があって、文字だけが分析されます。「モデル名.cfg」は他のモデルコンフィグの横に並んで分析され、その結果としてモデルは階層の中の追加されたレベルとして見えるようにすることもできます。

hmmwv.p3dと呼ばれるモデルと一緒にhumrと名付けたフォルダを例としてあげます、私たちはmodel.cfgまたはhumr.cfgそして次に出てくるhmmwv.cfg.を使うことができます。

将来におけるモデルは、プロパティ名がサポートされるかもしれませんが、モデルはモデルのコンフィグクラスの中で使われるかもしれません。いくつか疑わしいところもありますが、この機能は実装されることだろうと考えています。

モデルコンフィグのファイルは、特定のモデルに直接関連付けられることはありません、しかしながらデフォルトクラスと同様に、生成が基となるクラス定義用に使用されていました。

アニメーション関数が拡張されました。RTMアニメーションを使用する前にスクリプトを動作させることができるようになりました。さらに、異なるアニメーションを同時にコントロールできるようにするためのアニメーションコントローラーが紹介されていました。これはいくつかの戦車の砲塔のように開くことが可能になります。

モデルコンフィグとメインのコンフィグレーションファイル(以前に定義したclasses cfgModels、cfgSkeletonsとAnimations)は、古いものから新しいシステムにスムーズに変更するよう一緒に操作します。モデルコンフィグとメインのコンフィグレーションファイルの両方は、同じモデルとして定義し、モデルコンフィグが優先されます。

Segments(セグメント)

cfgModels

このセグメントでは、各モデルの全てのプロパティを定義します。クラスネームはモデル名に一致します。

ここでは、あなたはモデルのセクションで定義し、それらのスケルトンのアニメーションを使用します

//ベースクラスを宣言
class CarAnimations
{
	class IndicatorSpeed;
};

class CfgModels
{
	class Car; //ベースクラスを宣言
	class Vodnik: Car
	{
		sectionsInherit = "Car"; //カークラスの全てのセクションを継承する
								//新たしいセクションの追加.
		sections[] =
		{
			"section1"
		};
		skeletonName = "Vodnik"; //Vodnikスケルトンを使用
		class Animations: CarAnimations //生成されたアニメーションを継承する
		{
			class IndicatorSpeed: IndicatorSpeed //最大値を再定義する
			{					//速度計用
				maxValue = 40;
			};
		};
	};
};

cfgSkeletons

ここは、モデルとボーン用のスケルトンを定義し使用できるようにするセグメントです。

class CfgSkeletons
{
	class Car; //基礎となるクラスを定義

	class Vodnik: Car
	{
		skeletonInherit = "Car";		//カークラスから全てのボーンを継承
		skeletonBones[] =				//2つの新しいボーンを追加。
		{						//ボーン2の移動は、ボーン1にリンクされる
			"bone1", ""
			"bone2", "bone1"
		};
	};
};

Animations

このセグメントでは、cfgModelsクラスの部分とモデルによって使用された全てのアニメーションの定義について述べます

class Animations
{
	class FrontWheelR
	{
		type = "rotationX"; //アニメーションのタイプ
		source = "wheel";	 //インプットが供給するコントローラー
		selection = "pravy predni"; //使用するスケルトンボーンの名称
		axis = "";									//モデルにおける軸の名称
		memory = true; //この軸はモデルのメモリレベルで定義されているものか、そうでないのか
		sourceAddress = "loop"; //アニメーションをループさせるか、そうでないか
		minValue = 0; //モーションする範囲の最小値
					//すなわち、アニメーションのフェーズ0としてコントローラーに入力
		maxValue = 1; //モーションする範囲の最大値.
					//すなわち、アニメーションのフェーズ1としてコントローラーに入力
		angle0 = 0;	 //開始時のアニメーションの角度
					//(アニメーションフェーズ0から見て)
		angle1 = "rad -360"; //終了時のアニメーションの角度
	};				//(アニメーションフェーズ1から見て)
};

アニメーション・ソース

アニメーションフェーズのアニメーション用のインプットが供給するコントローラー。これらのコントローラーはアニメーションクラスの中で定義され、パラメータの数値が使用されます。メインコンフィギュレーションファイルの中でカスタムコントローラーを定義することも AnimationSourcesクラスを使用することも可能です。

コントローラーは、*とマークされて名前づけられ、乗物の砲塔コンフィグによって自由に定義されました。ここでは、ArmAの乗り物で普通に使用された名称で表記しています。

Name (名称)説明Simulation Classes
altBaro気圧による高度Aircraft
altRadarレーダーによる高度Aircraft
gearビークルの車輪Aircraft
horizonBankビークルのバンク角Aircraft
horizonDiveビークルのダイブ角Aircraft
vertSpeed垂直速度Aircraft
aileron主エルロンをコントロールする表面Airplane
aileronB開くエルロンによるスピードブレーキの底部Airplane
aileronT開くエルロンによるスピードブレーキの上部Airplane
aoaアタックの角度Airplane
elevatorエレベーターAirplane
flapフラップAirplane
rotorローターAirplane
rudderラダーAirplane
speedBrakeスピードブレーキAirplane
directionビークルの方位Any
fuel燃料レベルAny
oil油温計?
gmeter重力Any
rpmビークルのエンジン回転数。回転計で使用するAny(except Ship)
speedビークルのスピード。スピード計で使用するAny
timeタイマーベースの入力Any
clockHour現在の時間(時)Any (including e.g. Weapon)
clockMinute現在の時間(分) 時間計clockHourと分離Any (including e.g. Weapon)
clockSecond現在の時間(秒)毎秒慎重に動き、clockHourからは独立するAny (including e.g. Weapon)
damage現在のダメージレベル(0が健康、1が破壊)Any
userユーザーが定義したスクリプトで制御するアニメーションAny
directユーザーのように、しかし直ちにではない、スムースではない変化Any
pedalsペダルBicycle
damperビークルのサスペンション。現在のところ、y方向にのみ可動するCar, Tank, Aircraft, Motorcycle
FrontDamper前輪のサスペンション。Car?
BackDamper後輪のサスペンション。Car?
drivingWheelハンドル、方向舵の方位。ステアリングホイールとステアードホイールに使用するCar, Ship, Motorcycle
*mainGunメインの銃Car, Tank, Helicopter, Ship
*mainTurretメインの砲塔Car, Tank, Helicopter, Ship
wheel通常の車輪。前進とターンCar, Airplane, Motorcycle
noseWheelTurnAirplane
compassArrowコンパスの矢印Compass
compassCoverコンパスのカバーCompass
compassPointerコンパスのポインターCompass
rotorH水平ローターHelicopter
rotorV垂直ローターHelicopter
rotorHDive水平ローター(チルト)Helicopter
rotorVDive垂直ローター(チルト)Helicopter
supportサポートスタンドMotorcycle
*hatchCommanderコマンダーのハッチTank
hatchDriverドライバーのハッチTank
*hatchGunnerガンナーのハッチTank
*obsGunオブザーバー、コマンダーの銃Tank
*obsTurretオブザーバー、コマンダーの砲塔Tank
reloadリロードする時の移動Weapon
revolving発砲する時の移動Weapon
turretDir砲塔の方位Tank
wheelLキャタピラの左Tank
wheelRキャタピラの右Tank
scudLauncherスカッドランチャーScud
flag旗ポールの0から1までFlagcarrier

アニメーションのタイプ

この表は、あなたがアニメーションクラスとして使用することのできるアニメーションタイプです。

Type (タイプ)説明
rotation回転、円形の移動
rotationXx軸へ固定した回転
rotationYy軸へ固定した回転
rotationZz軸へ固定した回転
translation軸に沿った移動
translationXx軸へ固定した移動
translationYy軸へ固定した移動
translationZz軸へ固定した移動
hide一度与えた分岐点に到着したら非表示???
direct回転もしくは/及び移動(モデルの軸としてセクションを使用することなしに)

アニメーションのプロパティ

この表は、指定されたアニメーションタイプをベースとして使用することが期待される各々定義されたアニメーションクラスがプロパティ(またはエンティティ)です。

例)もしあなたが指定するアニメーションタイプが’rotationX’だとしたら、あなたはアニメーションプロパティとして’angle0′ と ‘angle1’を指定しなくてはなりません。

プロパティ説明アニメーションのタイプ
source入力用に使用されるコントローラーAny
selectionスケルトンのボーンAny
axisモデルの軸Any
beginモデル軸の方位の開始地点。Any
endモデル軸の方位の終了地点。開始の軸と一緒に使用することができるAny
memoryオプショナル(デフォルトはTrue値)メモリレベルの軸、あるいはそうでないかAny
animPeriodアニメーションサイクル(秒単位)ユーザーコントローラーでのみ使用されるAny
minValueモーションの範囲の最小値。アニメーションフェーズが0の時にコントローラーに入力Any
maxValueモーションの範囲の最大値。アニメーションフェーズが1の時にコントローラーに入力Any
minPhaseアニメーションフェーズの最小値。コントローラーが0の時にアニメーションがフェーズ(動き出す?)するAny
maxPhaseモーションの範囲の最大値。コントローラーが1の時にアニメーションがフェーズ(動き出す?)するAny
sourceAddressアニメをループさせるかどうか。閉塞(デフォルト)、ループ、ミラーの3つの異なるモードがある。Any
angle0アニメーションフェーズが0の時のアニメの開始角度Rotations
angle1アニメーションフェーズが1の時のアニメの終了角度Rotations
offset0アニメーションフェーズが1の時のアニメ開始のオフセットTranslations
offset1アニメーションフェーズが1の時のアニメ終了のオフセットTranslations
hideValue非表示の閾値Hide
axisPos[]モデルにおける軸の位置Direct
axisDir[]軸の方位、向き(ベクトル)Direct
angle回転角の量!Direct
axisOffset変形に使用Direct

AnimationSources(アニメーション・ソース)

これはモデルコンフィグのパートではありません、しかしメインコンフィギュレーションファイルのパートです。このクラスは、あなたが新しいユーザコントローラーを定義すること、または既に存在するコントローラーを選択してプロパティを改造することを許可しています。

カスタムコントローラーの定義は、いくつかの異なるアニメーションのためにひとつのカスタムコントローラーを使うことが可能になります。もしアニメーションのソースパラメータが定義されてなければ、プログラムはこのクラスの中の同じ名前で定義されているカスタムコントローラーを見せるようになります。

このクラスで使用する既に存在するコントローラーの上に被せることもできます。ですがこのケースではかなり注意するようにしてください。カスタムコントローラーは、オリジナルのものを隠してしまいますし、後で戻せなくなります。オーバーライドの機能を使用する際のソースパラメーターの記述方法は、3番目の事例の所で読み取ることができます。

class AnimationSources
{
	class MachineGun
	{
		source = "reload"; //このコントローラーの定義のために使用されたコントローラ
		weapon = MachineGun25W; //weapon class名においてリロードコントローラーを
	};							 //指定するケース
};
class AnimationSources
{
	//ソースのパラメーターは定義しない、またはsource = Door1で
	//定義したアニメーションによるDoor1としたアニメーションを使用
	class Door1
	{
		source = "user"; //コントローラーはユーザーアニメーションとして定義される
		animPeriod = 1;	//アニメをする期間は、このコントローラーによって使用される
		initPhase=1;		 //オブジェクトが生成された時の間隔
	};
};
class AnimationSources
{
	class wheel
	{
		source = "::wheel"; //既にある車輪のコントローラーにオーバーライド
	};
};

Example(事例)

CfgModels(攻撃ヘリでの作業)の説明の項で、補足説明と事例と一緒にcfgModelsとcfgSkeletonsがどういうものなのか、参照することができます。


免責事項 : 個人的に訳した文書ですので、もし翻訳された文章により何らかの損害、不利益が発生したとしても、一切の責任は負いませんのでその点をご留意の上お読みください。また原文に記載されている権利に基づき、利用にあたっては非商用利用にのみに限定されていますのでご注意ください。