Jump to content
Sign in to follow this  
b00ce

Wheel wobble issue

Recommended Posts

For some stupid reason, the wheels on my APC wobble when they spin and it looks like ass in game.

Here's the issue.

ppQDmIDIIXE

Model.Cfg

class Rotation;
class CfgSkeletons
{
class Vehicle;
class Car: Vehicle
{
	skeletonInherit="Vehicle";
	skeletonBones[]=
	{
		"volant",
		"",
		"levy predni tlumic",
		"",
		"pravy predni tlumic",
		"",
		"levy dalsi tlumic",
		"",
		"pravy dalsi tlumic",
		"",
		"levy predni zatoc",
		"levy predni tlumic",
		"pravy predni zatoc",
		"pravy predni tlumic",
		"levy dalsi zatoc",
		"levy dalsi tlumic",
		"pravy dalsi zatoc",
		"pravy dalsi tlumic",
		"levy prostredni tlumic",
		"",
		"pravy prostredni tlumic",
		"",
		"levy zadni tlumic",
		"",
		"pravy zadni tlumic",
		"",
		"levy predni",
		"levy predni zatoc",
		"pravy predni",
		"pravy predni zatoc",
		"levy dalsi",
		"levy dalsi zatoc",
		"pravy dalsi",
		"pravy dalsi zatoc",
		"levy prostredni",
		"levy prostredni tlumic",
		"pravy prostredni",
		"pravy prostredni tlumic",
		"levy zadni",
		"levy zadni tlumic",
		"pravy zadni",
		"pravy zadni tlumic",
		"ukaz_rychlo",
		"",
		"ukaz_rychlo2",
		"",
		"ukaz_rpm",
		"",
		"OtocVez",
		"",
		"OtocHlaven",
		"OtocVez",
		"fuel_01",
		"",
		"fuel_1",
		"",
		"prop_01",
		"",
		"prop_02",
		"",
		"prop_2",
		"",
		"prop_1",
		"",
		"damageHide",
		"",
		"damageVez",
		"OtocVez",
		"damageHlaven",
		"OtocHlaven"
	};
};
class BRDM2
{
	isDiscrete=1;
	skeletonInherit="car";
	skeletonBones[]=
	{
		"volant",
		"",
		"ukaz_rychlo",
		"",
		"ukaz_rychlo2",
		"",
		"ukaz_rpm",
		"",
		"OtocVez",
		"",
		"OtocHlaven",
		"OtocVez",
		"OtocVez_cargo",
		"",
		"fuel_1",
		"",
		"prop_1",
		"",
		"prop_2",
		"",
		"prop_3",
		"",
		"prop_4",
		"",
		"poklopy01",
		"",
		"prop_5",
		""
	};
};
};
class CfgModels
{
class Vehicle;
class Car: Vehicle
{
	sectionsInherit="Vehicle";
	sections[]=
	{
		"ammo",
		"sklo predni p",
		"sklo predni l",
		"zadni svetlo",
		"brzdove svetlo",
		"spz",
		"karoserie",
		"motor",
		"zbran",
		"vez",
		"zbytek",
		"levy predni",
		"levy prostredni",
		"levy zadni",
		"pravy predni",
		"pravy prostredni",
		"pravy zadni",
		"clan",
		"clan_sign",
		"zasleh",
		"P svetlo",
		"L svetlo",
		"palivo"
	};
	skeletonName="Car";
	class Animations
	{
		class damageHide
		{
			type="hide";
			source="damage";
			selection="damageHide";
		};
		class IndicatorSpeed
		{
			animPeriod=0;
			type="rotation";
			source="speed";
			selection="ukaz_rychlo";
			axis="osa_rychlo";
			memory=0;
			minValue=0.000000;
			maxValue=16.670000;
			angle0=0.000000;
			angle1=2.879793;
		};
		class IndicatorSpeed2
		{
			type="rotation";
			source="speed";
			selection="ukaz_rychlo2";
			axis="osa_rychlo2";
			memory="false";
			animPeriod=0;
			minValue=0;
			maxValue=16.670000;
			angle0=0;
			angle1="rad -240";
		};
		class IndicatorRPM
		{
			animPeriod=0;
			type="rotation";
			source="rpm";
			selection="ukaz_rpm";
			axis="osa_rpm";
			memory=0;
			minValue=0.000000;
			maxValue=1.000000;
			angle0=0.000000;
			angle1=2.967060;
		};
		class DrivingWheel
		{
			type="rotation";
			source="drivingWheel";
			selection="volant";
			begin="osaVolantZac";
			end="osaVolantKon";
			memory="false";
			animPeriod=0;
			minValue=-1;
			maxValue=1;
			angle0=-8;
			angle1=8;
		};
		class TurnFrontWheelR
		{
			type="rotationY";
			source="drivingWheel";
			selection="pravy predni zatoc";
			axis="pravy predni";
			memory="false";
			animPeriod=0;
			sourceAddress="loop";
			minValue="rad -180";
			maxValue="rad +180";
			angle0="rad +90";
			angle1="rad -90";
		};
		class TurnFrontWheelL: TurnFrontWheelR
		{
			selection="levy predni zatoc";
			axis="levy predni";
		};
		class TurnFrontWheelR2: TurnFrontWheelR
		{
			selection="pravy dalsi zatoc ";
			axis="pravy dalsi";
		};
		class TurnFrontWheelL2: TurnFrontWheelR
		{
			selection="levy dalsi zatoc ";
			axis="levy dalsi";
		};
		class FrontWheelR
		{
			type="rotationX";
			source="wheel";
			selection="pravy predni";
			axis="";
			memory="true";
			animPeriod=0;
			sourceAddress="loop";
			minValue=0;
			maxValue=1;
			angle0=0;
			angle1="rad -360";
		};
		class FrontWheel2R: FrontWheelR
		{
			selection="pravy dalsi";
		};
		class BackWheelR: FrontWheelR
		{
			selection="pravy zadni";
		};
		class BackWheel2R: FrontWheelR
		{
			selection="pravy prostredni";
		};
		class FrontWheelL: FrontWheelR
		{
			selection="levy predni";
		};
		class FrontWheel2L: FrontWheelR
		{
			selection="levy dalsi";
		};
		class BackWheelL: FrontWheelR
		{
			selection="levy zadni";
		};
		class BackWheel2L: FrontWheelR
		{
			selection="levy prostredni";
		};
		class FrontWheelDamperR
		{
			type="translationY";
			source="damper";
			selection="pravy predni tlumic";
			axis="";
			animPeriod=0;
			minValue=-1000;
			maxValue=1000;
		};
		class FrontWheelDamper2R: FrontWheelDamperR
		{
			selection="pravy dalsi tlumic";
		};
		class BackWheelDamperR: FrontWheelDamperR
		{
			selection="pravy zadni tlumic";
		};
		class BackWheelDamper2R: FrontWheelDamperR
		{
			selection="pravy prostredni tlumic";
		};
		class FrontWheelDamperL: FrontWheelDamperR
		{
			selection="levy predni tlumic";
		};
		class FrontWheelDamper2L: FrontWheelDamperR
		{
			selection="levy dalsi tlumic";
		};
		class BackWheelDamperL: FrontWheelDamperR
		{
			selection="levy zadni tlumic";
		};
		class BackWheelDamper2L: FrontWheelDamperR
		{
			selection="levy prostredni tlumic";
		};
		class damageVez: damageHide
		{
			selection="damageVez";
		};
		class damageHlaven: damageHide
		{
			selection="damageHlaven";
		};
	};
};
class BRDM2: Car
{
	skeletonName="BRDM2";
	class Animations: Animations
	{
		class MainTurret
		{
			type="rotationY";
			source="mainTurret";
			selection="OtocVez";
			axis="OsaVeze";
			animPeriod=0;
			minValue="rad -360";
			maxValue="rad +360";
			angle0="rad -360";
			angle1="rad +360";
		};
		class MainGun: MainTurret
		{
			type="rotationX";
			source="mainGun";
			selection="OtocHlaven";
			axis="OsaHlavne";
		};
		class TurnFrontWheelR: TurnFrontWheelR
		{
			angle0="rad +80";
			angle1="rad -80";
		};
		class TurnFrontWheelL: TurnFrontWheelL
		{
			angle0="rad +80";
			angle1="rad -80";
		};
		class IndicatorSpeed: IndicatorSpeed
		{
			type="rotation";
			source="speed";
			selection="ukaz_rychlo";
			axis="osa_rychlo";
			memory=0;
			minValue=0.000000;
			maxValue=38.799999;
			angle0=2.443461;
			angle1=-2.478368;
		};
		class IndicatorSpeed2: IndicatorSpeed2
		{
			type="rotation";
			source="speed";
			selection="ukaz_rychlo2";
			axis="osa_rychlo2";
			memory=0;
			minValue=0.000000;
			maxValue=10.000000;
			angle0=-2.268928;
			angle1=-1.396263;
		};
		class IndicatorRPM: IndicatorRPM
		{
			type="rotation";
			source="rpm";
			selection="ukaz_rpm";
			axis="osa_rpm";
			memory=0;
			minValue=0.000000;
			maxValue=1.000000;
			angle0=2.268928;
			angle1=-2.181662;
		};
		class fuel
		{
			type="rotation";
			source="fuel";
			selection="fuel_1";
			axis="fuel_1_axis";
			memory=0;
			minValue=0.000000;
			maxValue=1.000000;
			angle0=-0.436332;
			angle1=0.523599;
		};
		class prop_1
		{
			type="rotation";
			source="fuel";
			selection="prop_1";
			axis="prop_1_axis";
			memory=0;
			minValue=0.000000;
			maxValue=1.000000;
			angle0=0.872665;
			angle1=-0.872665;
		};
		class prop_5
		{
			type="rotation";
			source="rpm";
			selection="prop_5";
			axis="prop_5_axis";
			memory=0;
			minValue=0.340000;
			maxValue=1.000000;
			angle0=0.645772;
			angle1=-0.645772;
		};
		class prop_4
		{
			type="rotation";
			source="rpm";
			selection="prop_4";
			axis="prop_4_axis";
			memory=0;
			minValue=0.300000;
			maxValue=0.840000;
			angle0=0.349066;
			angle1=-0.349066;
		};
		class prop_2
		{
			type="rotation";
			source="rpm";
			selection="prop_2";
			axis="prop_2_axis";
			memory=0;
			minValue=0.000000;
			maxValue=0.540000;
			angle0=0.610865;
			angle1=-0.174533;
		};
		class prop_3
		{
			type="rotation";
			source="rpm";
			selection="prop_3";
			axis="prop_3_axis";
			memory=0;
			minValue=0.000000;
			maxValue=0.260000;
			angle0=0.349066;
			angle1=-0.087266;
		};
		class mainTurret_Cargo
		{
			type="rotationY";
			source="mainTurret";
			selection="OtocVez_cargo";
			axis="OtocVez_cargo_axis";
			memory=0;
			minValue=-6.283190;
			maxValue=6.283190;
			angle0=-6.283185;
			angle1=6.283185;
		};
		class DrivingWheel: DrivingWheel
		{
			axis="volant_axis";
		};
		class poklopy01_1
		{
			type="rotation";
			source="rpm";
			selection="poklopy01";
			axis="poklopy01_axis";
			memory=0;
			minValue=0.000000;
			maxValue=0.200000;
			angle0=0.000000;
			angle1=-0.785398;
		};
	};
};

class m557 : BRDM2 {
	skeletonName="BRDM2";
	class Animations: Animations {
		class TurnBackWheelR: TurnFrontWheelR {
			selection="pravy zadni";
			axis="pravy zadni";
			angle0="rad -80";
			angle1="rad +80";
		};
		class TurnBackWheelL: TurnFrontWheelL {
			selection="levy zadni";
			axis="levy zadni";
			angle0="rad -80";
			angle1="rad +80";
		};
	};
};
};

The wheel isn't lopsided and I'm not using memory points for the axis, so it must be a model.cfg thing...:confused:

Share this post


Link to post
Share on other sites

Thanks for stating the obvious. lol But what isn't centered? I use the wheel itself for the axis... :confused:

I suppose this is kind of moot at this point. I won't be able to access the BI forums, Army internet filters and what not, let alone work on it before my shiny new laptop gets there.

Share this post


Link to post
Share on other sites

i have more silly question - how you make animations to work in oxygen ? i always have to binarize and test ingame

+ of course your axis are not centered, my advice - delete axis, in 100% of my vehicles i do not have axis , make memory=0,

the only axis i use are for volant, turrets, no other cases when axis are necessary (Arma is not VBS where you need axis to turn wheel)

class RightWheelFront{type = "rotationX"; source = "wheel"; selection = "pravy predni"; axis = ""; memory = true; sourceAddress = "loop"; minValue = 0; maxValue = 1; angle0 = 0; angle1 = "rad -360"; };

this is from my configs, but hmm even i have memory =1 , hmmm

maybe you have not-simetric mesh on wheels ?

place new empty cylinder, and than you will see ,

show mesh, maybe mesh is not regular and engine finds not-symetry

Edited by vilas

Share this post


Link to post
Share on other sites
Thanks for stating the obvious. lol But what isn't centered? I use the wheel itself for the axis... :confused:

To me, the obvious answer would be to create new axes.

Share this post


Link to post
Share on other sites
type = "rotationX";

Just use

type = "rotation";

----

axis = "";

Avoid using "self axis" as this typically only works if your rotating object is PERFECTLY symmetrical.

Best to define an actual set of axis in the Memory LOD

Edited by [APS]Gnat

Share this post


Link to post
Share on other sites

make a copy of the wheel and merge its points to find the exact center. then use those points as the axis

Share this post


Link to post
Share on other sites

You can also select the wheel or some faces on the wheel and centre the pin to the selection and then add a point.

Share this post


Link to post
Share on other sites
i have more silly question - how you make animations to work in oxygen ? i always have to binarize and test ingame

press middle mouse button/wheel to toggle between the various animations you have defined, then rotate the mouse wheel to animate.

Share this post


Link to post
Share on other sites
i have more silly question - how you make animations to work in oxygen ? i always have to binarize and test ingame

O.M.G. Didn't even notice this question sorry Vilas !

As Messiah said.

Key is to have a separate MODEL.CFG file sitting in the directory with the P3D.

i.e. Dont have your model definitions within the config.cpp

Note that Buldozer will not necessarily instantly update any edits you make to the model.cfg or the p3d model itself when it comes to displaying animation changes.

Most of the time it will, but sometimes you have to switch LODs (or even reload p3d or O2/Buldozer) to get to full display a change.

Share this post


Link to post
Share on other sites

how about steering ?

i see now , model.cfg , okay, mouse wheel makes wheels turn, what about turrets, guns ?

Share this post


Link to post
Share on other sites

Like messiah said: use the middle mouse button to cycle through animation controllers mentioned in your model.cfg. You can also use the [ and ] keys to animate. This is how I was checking that turret shake / vibration stuff on your apcs.

Share this post


Link to post
Share on other sites
how about steering ?

i see now , model.cfg , okay, mouse wheel makes wheels turn, what about turrets, guns ?

any animation in the model.cfg will animate in buldozer, toggle through them (the names of the animations as defined in the model.cfg will appear at the top of the buldozer screen) and then you can animate them with the wheel, or square brackets (essentially the key for the action menu I believe). Turrets, weapons, recoils, steering, doors, whatever, should all be able to animate in there - at least nothing off the top of my head is unable to animate in buldozer.

Share this post


Link to post
Share on other sites

funny cause all those years i didn't knew it, also i didn't knew that Oxygen loads textures and show them in window (i always used Buldozer for all those years) hehe

Share this post


Link to post
Share on other sites
funny cause all those years i didn't knew it, also i didn't knew that Oxygen loads textures and show them in window (i always used Buldozer for all those years) hehe

Dont feel bad Vilas, theres been many "obvious" items I've only discovered after many years too ....... the pitfalls of "community documentation"

Share this post


Link to post
Share on other sites
Gnat;2273737']Dont feel bad Vilas' date=' theres been many "obvious" items I've only discovered after many years too ....... the pitfalls of "community documentation"[/quote']

How to use the animation preview in buldozer is in the 'official' o2 manual, but it's pretty buried in there. It's briefly mentioned in the animation chapter in the middle of a paragraph rather than in the buldozer section. I do agree tho, vilas shouldn't feel bad. It's hard for me to read that thing in english, and it's my first language!

Share this post


Link to post
Share on other sites
How to use the animation preview in buldozer is in the 'official' o2 manual, but it's pretty buried in there.

?!! Its vague at best.

Theres a SHYT load more missing info vs documented, on O2 (as with the other tools)

Extrude

Direct3D

...

...

Share this post


Link to post
Share on other sites

Yes, I think it must have been written before those features were added. I think the instructions on how to manipulate the animations in buldozer are fairly clear if well hidden tho.

Share this post


Link to post
Share on other sites

Official Manual? Are we talking the BIKI, or something thats downloadable alongside the tools. Last time I glanced at anything O2 manual related it was woefully out of date/lacking, as you've all mentioned, lots of features, buttons, new additions that I never knew about, even after 10 years (Carve and Direct 3D I found out about just recently, to mention but two)

Share this post


Link to post
Share on other sites
Official Manual? Are we talking the BIKI, or something thats downloadable alongside the tools. Last time I glanced at anything O2 manual related it was woefully out of date/lacking, as you've all mentioned, lots of features, buttons, new additions that I never knew about, even after 10 years (Carve and Direct 3D I found out about just recently, to mention but two)

The manual on the Biki is 'official' in that it was written by BI.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×