Jump to content
JManL46

Trouble with OFP2_ManSkeleton

Recommended Posts

Hi. I have a mod which used to work on Arma 3 but a few updates back has stopped working. I have tried to get the mod working correctly but to no avail. Could someone please help me figure out why the hats are spawning on the players groin instead of their head.

 

This is the mod

https://drive.google.com/file/d/1T_MJHjYHmjyV-G2rOItnmevvoGtV0Lba/view?usp=sharing

 

This is the error
https://ibb.co/nzcPDwp

 

Thanks!

Share this post


Link to post
Share on other sites

The issue will be in your model.cfg file which isn't in the PBO (because its a packed PBO that has been Binarized and as such 'merged' into the P3D). Could you post your model.cfg (in spoiler tags so as not to clutter the thread)?

 

Also, for best results when converting your textures to *.paa, always use the ArmA texture naming rules (*_co.paa for colour/diffuse, *_nohq.paa for normal-maps etc.). That way your normal map textures wont look quite so pixelated and you'll (probably) retain a bit more detail and less quality loss in your diffuse textures.

Share this post


Link to post
Share on other sites

By deafult that mod is ODOL format, I used this (https://odolconverter.bytex.digital/) website to convert it to MLOD, not sure if it was required or not but I heard ODOL is old. Although, after converting, it looks like this arma3_x64_2O1jlOMssg.png

 

Here is the model.cfg as requested

Spoiler

class CfgSkeletons
{
    class Skeleton
    {
        isDiscrete=0;
        skeletonInherit="";
        skeletonBones[]={"pelvis", "", "spine", "pelvis", "spine1", "spine", "spine2", "spine1", "spine3", "spine2", "neck", "spine3", "neck1", "neck", "head", "neck1", "face_hub", "head", "face_jawbone", "face_hub", "face_jowl", "face_jawbone", "face_chopright", "face_jawbone", "face_chopleft", "face_jawbone", "face_liplowermiddle", "face_jawbone", "face_liplowerleft", "face_jawbone", "face_liplowerright", "face_jawbone", "face_chin", "face_jawbone", "face_tongue", "face_jawbone", "face_cornerright", "face_hub", "face_cheeksideright", "face_cornerright", "face_cornerleft", "face_hub", "face_cheeksideleft", "face_cornerleft", "face_cheekfrontright", "face_hub", "face_cheekfrontleft", "face_hub", "face_cheekupperright", "face_hub", "face_cheekupperleft", "face_hub", "face_lipuppermiddle", "face_hub", "face_lipupperright", "face_hub", "face_lipupperleft", "face_hub", "face_nostrilright", "face_hub", "face_nostrilleft", "face_hub", "face_forehead", "face_hub", "face_browfrontright", "face_forehead", "face_browfrontleft", "face_forehead", "face_browmiddle", "face_forehead", "face_browsideright", "face_forehead", "face_browsideleft", "face_forehead", "face_eyelids", "face_hub", "face_eyelidupperright", "face_hub", "face_eyelidupperleft", "face_hub", "face_eyelidlowerright", "face_hub", "face_eyelidlowerleft", "face_hub", "eyeleft", "face_hub", "eyeright", "face_hub", "leftshoulder", "spine3", "leftarm", "leftshoulder", "leftarmroll", "leftarm", "leftforearm", "leftarmroll", "leftforearmroll", "leftforearm", "lefthand", "leftforearmroll", "lefthandring", "lefthand", "lefthandring1", "lefthandring", "lefthandring2", "lefthandring1", "lefthandring3", "lefthandring2", "lefthandpinky1", "lefthandring", "lefthandpinky2", "lefthandpinky1", "lefthandpinky3", "lefthandpinky2", "lefthandmiddle1", "lefthand", "lefthandmiddle2", "lefthandmiddle1", "lefthandmiddle3", "lefthandmiddle2", "lefthandindex1", "lefthand", "lefthandindex2", "lefthandindex1", "lefthandindex3", "lefthandindex2", "lefthandthumb1", "lefthand", "lefthandthumb2", "lefthandthumb1", "lefthandthumb3", "lefthandthumb2", "rightshoulder", "spine3", "rightarm", "rightshoulder", "rightarmroll", "rightarm", "rightforearm", "rightarmroll", "rightforearmroll", "rightforearm", "righthand", "rightforearmroll", "righthandring", "righthand", "righthandring1", "righthandring", "righthandring2", "righthandring1", "righthandring3", "righthandring2", "righthandpinky1", "righthandring", "righthandpinky2", "righthandpinky1", "righthandpinky3", "righthandpinky2", "righthandmiddle1", "righthand", "righthandmiddle2", "righthandmiddle1", "righthandmiddle3", "righthandmiddle2", "righthandindex1", "righthand", "righthandindex2", "righthandindex1", "righthandindex3", "righthandindex2", "righthandthumb1", "righthand", "righthandthumb2", "righthandthumb1", "righthandthumb3", "righthandthumb2", "weapon", "spine1", "launcher", "spine1", "camera", "pelvis", "leftupleg", "pelvis", "leftuplegroll", "leftupleg", "leftleg", "leftuplegroll", "leftlegroll", "leftleg", "leftfoot", "leftlegroll", "lefttoebase", "leftfoot", "rightupleg", "pelvis", "rightuplegroll", "rightupleg", "rightleg", "rightuplegroll", "rightlegroll", "rightleg", "rightfoot", "rightlegroll", "righttoebase", "rightfoot"};
    };
};
class CfgModels
{
    class Campaign_Hat
    {
        htMin=0;
        htMax=0;
        afMax=0;
        mfMax=0;
        mFact=0;
        tBody=0;
        skeletonName="Skeleton";
        sectionsInherit="";
        sections[]={"camo"};
        class Animations
        {
        };
    };
};
 

 

This is the version currently on my machine, tidied it up a little
https://drive.google.com/file/d/1oCcQ5RU944pDR8ycPV2Dg_6cXjUzE5Jl/view?usp=sharing

Share this post


Link to post
Share on other sites

ODOL isn't so much "old" as it is Binarized and "optimised" to function better in game.

As the site itself says, its not designed for converting for re-use and as such I suspect some of the information held within the Binarized ODOL was lost and/or corrupted (such as the reference to 'OFP2_ManSkeleton', which isn't even present in your model.cfg).

To be honest your best bet is contact the original author and see if they'll send you the original model(s) to use (in proper MLOD format, not this broken and for educational-use-only converted format).

Otherwise, the ad-hoc fix would be to try and overwrite the broken reference by defining your own.

Spoiler

class CfgSkeletons
{
	class ManSkeleton
	{
		isDiscrete = 0;
		skeletonInherit = "";
		skeletonBones[] =
		{
			"Pelvis","",
			"Spine","Pelvis",
			"Spine1","Spine",
			"Spine2","Spine1",
			"Spine3","Spine2",
			"Camera","Pelvis",
			"weapon","Spine1",
			"launcher","Spine1",
			
			// Head skeleton in hierarchy
			"neck","Spine3",
			"neck1","neck",
			"head","neck1",
			
			// New facial features
			"Face_Hub","head",
			"Face_Jawbone","Face_Hub",
			"Face_Jowl","Face_Jawbone",
			"Face_chopRight","Face_Jawbone",
			"Face_chopLeft","Face_Jawbone",
			"Face_LipLowerMiddle","Face_Jawbone",
			"Face_LipLowerLeft","Face_Jawbone",
			"Face_LipLowerRight","Face_Jawbone",
			"Face_Chin","Face_Jawbone",
			"Face_Tongue","Face_Jawbone",
			"Face_CornerRight","Face_Hub",
			"Face_CheekSideRight","Face_CornerRight",
			"Face_CornerLeft","Face_Hub",
			"Face_CheekSideLeft","Face_CornerLeft",
			"Face_CheekFrontRight","Face_Hub",
			"Face_CheekFrontLeft","Face_Hub",
			"Face_CheekUpperRight","Face_Hub",
			"Face_CheekUpperLeft","Face_Hub",
			"Face_LipUpperMiddle","Face_Hub",
			"Face_LipUpperRight","Face_Hub",
			"Face_LipUpperLeft","Face_Hub",
			"Face_NostrilRight","Face_Hub",
			"Face_NostrilLeft","Face_Hub",
			"Face_Forehead","Face_Hub",
			"Face_BrowFrontRight","Face_Forehead",
			"Face_BrowFrontLeft","Face_Forehead",
			"Face_BrowMiddle","Face_Forehead",
			"Face_BrowSideRight","Face_Forehead",
			"Face_BrowSideLeft","Face_Forehead",
			"Face_Eyelids","Face_Hub",
			"Face_EyelidUpperRight","Face_Hub",
			"Face_EyelidUpperLeft","Face_Hub",
			"Face_EyelidLowerRight","Face_Hub",
			"Face_EyelidLowerLeft","Face_Hub",
			"EyeLeft","Face_Hub",
			"EyeRight","Face_Hub",			
			
			// Left upper side
			"LeftShoulder","Spine3",
			"LeftArm","LeftShoulder",
			"LeftArmRoll","LeftArm",
			"LeftForeArm","LeftArmRoll",
			"LeftForeArmRoll","LeftForeArm",
			"LeftHand","LeftForeArmRoll",
			"LeftHandRing","LeftHand",
			"LeftHandRing1","LeftHandRing",
			"LeftHandRing2","LeftHandRing1",
			"LeftHandRing3","LeftHandRing2",
			"LeftHandPinky1","LeftHandRing",
			"LeftHandPinky2","LeftHandPinky1",
			"LeftHandPinky3","LeftHandPinky2",
			"LeftHandMiddle1","LeftHand",
			"LeftHandMiddle2","LeftHandMiddle1",
			"LeftHandMiddle3","LeftHandMiddle2",
			"LeftHandIndex1","LeftHand",
			"LeftHandIndex2","LeftHandIndex1",
			"LeftHandIndex3","LeftHandIndex2",
			"LeftHandThumb1","LeftHand",
			"LeftHandThumb2","LeftHandThumb1",
			"LeftHandThumb3","LeftHandThumb2",
			
			// Right upper side
			"RightShoulder","Spine3",
			"RightArm","RightShoulder",
			"RightArmRoll","RightArm",
			"RightForeArm","RightArmRoll",
			"RightForeArmRoll","RightForeArm",
			"RightHand","RightForeArmRoll",
			"RightHandRing","RightHand",
			"RightHandRing1","RightHandRing",
			"RightHandRing2","RightHandRing1",
			"RightHandRing3","RightHandRing2",
			"RightHandPinky1","RightHandRing",
			"RightHandPinky2","RightHandPinky1",
			"RightHandPinky3","RightHandPinky2",
			"RightHandMiddle1","RightHand",
			"RightHandMiddle2","RightHandMiddle1",
			"RightHandMiddle3","RightHandMiddle2",
			"RightHandIndex1","RightHand",
			"RightHandIndex2","RightHandIndex1",
			"RightHandIndex3","RightHandIndex2",
			"RightHandThumb1","RightHand",
			"RightHandThumb2","RightHandThumb1",
			"RightHandThumb3","RightHandThumb2",
			
			// Left lower side
			"LeftUpLeg","Pelvis",
			"LeftUpLegRoll","LeftUpLeg",
			"LeftLeg","LeftUpLegRoll",
			"LeftLegRoll","LeftLeg",
			"LeftFoot","LeftLegRoll",
			"LeftToeBase","LeftFoot",
			
			// Right lower side
			"RightUpLeg","Pelvis",
			"RightUpLegRoll","RightUpLeg",
			"RightLeg","RightUpLegRoll",
			"RightLegRoll","RightLeg",
			"RightFoot","RightLegRoll",
			"RightToeBase","RightFoot"
		};
		// location of pivot points (local axes) for hierarchical animation
		pivotsModel="Samples_F\TemplateRTM\ManSkeleton_Pivots.p3d";
	};
};

Notice pivotModel line towards the end...Hopefully the ArmA3 samples are still kicking around on Steam...

 

Share this post


Link to post
Share on other sites

Thanks. I will have another play as contacting the author is going to be a difficult one as this file is at least 6 years old.

Share this post


Link to post
Share on other sites
1 hour ago, JManL46 said:

Thanks. I will have another play as contacting the author is going to be a difficult one as this file is at least 6 years old.

Its your call, but even if my above method does work (which I'm not 100% confident on), your hat will still look like its made out of statically-charged wool viewed through heat-haze...

Share this post


Link to post
Share on other sites

Hmmm, it still spawned in my groin when adding the line you suggested. I've never made a model so forgive me if this is a silly question - Is it possible to make a model based off a texture? I have the working texture for the hat...

Share this post


Link to post
Share on other sites
33 minutes ago, JManL46 said:

Hmmm, it still spawned in my groin when adding the line you suggested. I've never made a model so forgive me if this is a silly question - Is it possible to make a model based off a texture? I have the working texture for the hat...

If the model supports 'hiddenSelections' and 'setObjectTexture' then you can just use the original model as its not your textures that are the problem but merely the ODOL->MLOD conversion process which is (intentionally) screwing up your geometry. 

Your best bet is to read the original config and see if there are any 'hiddenSelectionTextures' arrays defined. If there aren't then you're (most likely) SOL.

You're not guaranteed to be SOL but if the original author only ever planned to include the one hat with one texture (and as such never bothered setting them up) or didn't know how (or couldn't be bothered) to use hiddenSelections and instead used several models that were the same but had different textures defined in each then you are most definitely SOL.

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

×