Model Configの作り方 日本語訳

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


一般的事項

model.cfgは、モデルのスケルトン(骨格)と機能に関する記述が含まれています。model.cfgは、CfgSkeletonsとCfgModelsの二つのクラスに分割されます。CfgSkeletonsのクラスでは、アニメーションを行う全てのモデルの”bones(ボーン)”が定義されています(ここではAH-64を例に取ります)。戦車の機関銃と砲塔が一緒に回転するように、ボーンはリンクさせることで一緒にアニメーションを行います。スケルトンは、ここではAH-64を例に取りますが、階層構造を持つことができ、これは各々のボーンがその上のものに連なることを意味します。もし階層構造を取りたくない場合は、全てのボーンを同一の階層に置くようにしてください。

OFP時代のsetObjectTextureのような普段は隠しているセレクションを使いたい、またはローターの残像のようなエフェクトを確実に施したい、といった場合に、モデルのセクションはCfgModelsクラスに定義することでこれを可能にします。また現在では、これはCfgModelsにアニメーションを定義することになりました。

CfgSkeletonsの事例

class CfgSkeletons
{
	class Default
	{
		isDiscrete = 1;
		skeletonInherit = "";
		skeletonBones[] = {};
	};
	class Vehicle : Default{};
	class Helicopter : Vehicle
	{
		skeletonInherit="Vehicle"; // Vehicleクラスのボーンを読み込む
		skeletonBones[]=
		{
			"velka vrtule","", // main rotor (メインローター)
			"mala vrtule","", // tail rotor(テールローター)
			...
			...
		};
	};

	class AH64_Skeleton : Helicopter
	{
		skeletonInherit="Helicopter"; // Helicopterクラスのボーンを読み込む
		skeletonBones[]=
		{
			"mainRotor","", // main rotor (メインローター)
			"tailRotor","", //tail rotor (テールローター)
			"FGear","", // front gear (前輪)
			"RGear","", // rear gear (後輪)
			"map_tail","", // tail fin (テールフィン)
			"sensors_turret","", // sensor turret (砲塔センサー)
			"sensors","sensors_turret", // sensor head with mit sensor turret
		};
	};
};

CfgSkeletonsの説明

isDiscrete = 0;
もしボーンに階層構造をもたす、あるいはもたさないを定義します(0 = は階層構造なし)

skeletonInherit = “”;
スケルトンクラスを受け継ぐことを定義します。例として、skeletonInherit = “Helicopter”; とすると、ヘリコプターのクラスが読み込まれます。

skeletonBones[] = {};
ボーンを定義します。

CfgModels の例

class CfgModels
{
	class Default
	{
		sectionsInherit="";
		sections[] = {};
		skeletonName = "";
	};
	class Vehicle : Default
	{
		sections[] =
		{
			"clan",
			"clan_sign",
			...
			...
			"zasleh"
		};
	};
	class Helicopter : Vehicle
	{
		sectionsInherit="Vehicle";
		sections[]=
		{
			"velka vrtule staticka",
			"velka vrtule blur",
			"mala vrtule staticka",
			"mala vrtule blur",
			...
			...
		};
		skeletonName="Helicopter";
		class Animations
		{
			class IndicatorAltRadar: Rotation
			{
				source="altRadar";
				sourceAddress="loop";
				selection="alt";
				axis="osa_alt";
				memory=0;
				maxValue=304;
				angle1="rad -360";
			};
			class IndicatorAltRadar2: IndicatorAltRadar
			{
				selection="alt2";
				axis="osa_alt2";
			};
			...
			...
		};
	};

	class ah64 : Helicopter
	{
		sectionsInherit = "Helicopter";
		sections[] =
		{
			"mainRotor","mainRotor_staticka","mainRotor_blur","mainRotor_dive",
			"tailRotor","tailRotor_staticka","tailRotor_blur","tail_fin"
		};
 
		skeletonName = "AH64_Skeleton";
		class Animations : Animations
		{
			class mainRotor
			{
				type = "rotationY";
				source = "rotorH";
				selection = "mainRotor";
				axis = "";
				memory = 1;
				sourceAddress = "loop";
				minValue = 0;
				maxValue = 1;
				angle0 = 0;
				angle1 = "rad +360";
			};
			class mainRotor_dive
			{
				type = "rotationX";
				source = "rotorHdive";
				selection = "mainRotor";
				axis = "predni osa naklonu";
				memory = 1;
				minValue = -1.570800;
				maxValue = 1.570800;
				angle0 = -1.570796;
				angle1 = 1.570796;
			};
			class tailRotor
			{
				type = "rotationX";
				source = "rotorV";
				selection = "tailRotor";
				axis = "";
				memory = 1;
				sourceAddress = "loop";
				minValue = 0;
				maxValue = 1;
				angle0 = 0;
				angle1 = "rad -360";
			};
			class mainTurret
			{
				type = "rotationY";
				source = "mainTurret";
				selection = "otocvez";
				axis = "osaveze";
				animPeriod = 0;
				memory = 1;
				minValue = "rad -360";
				maxValue = "rad +360";
				angle0 = "rad -360";
				angle1 = "rad +360";
			};
			class mainGun
			{
				type = "rotationX";
				source = "mainGun";
				selection = "otochlaven";
				axis = "osahlavne";
				animPeriod = 0;
				memory = 1;
				minValue = "rad -360";
				maxValue = "rad +360";
				angle0 = "rad -360";
				angle1 = "rad +360";
			};
			class sensors_turret : mainTurret
			{
				selection = "sensors_turret";
				axis = "axis_sensors_turret";
			};
			class sensors : mainGun
			{
				selection = "sensors";
				axis = "axis_sensors";
			};
			...
			...
		};
	};
};

CfgModels の説明

sectionsInherit=””;
継承されたセクションの定義。例えば、sectionsInherit = “Helicopter”; でヘリコプタークラスの全てのセクションをロードする

sections[] = {};
セクションの定義

skeletonName = “”;
このモデルによって使用されるスケルトンの定義(CfgSkeletonで定義される)

class Animations{…};
モデル用のアニメーションの定義。class Animations : Animations{…};を介して、他のモデルから継承してくるこも可能。

アニメーションクラス用の説明。Model_Configのページ(原文)またはModel_Configのページ(日本語訳)をご参照ください。


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