Jump to content
Sign in to follow this  
ADuke

Custom Head stuck between legs

Recommended Posts

Hi,

I am working on a head for my soldier model which was a port from the ArmA1 sample models, the model has worked in ArmA2 for a very long time.

The head model on the other hand I just made and I have some trouble with it, in-game the head appears between the legs of the soldier model.

Here is some more info..

Model.cfg

class cfgSkeletons {

class default; // External class reference

class Head {

isDiscrete = 0;

skeletonInherit = "";

skeletonBones[] = {

"neck", "",

"neck1","neck",

"head","neck1",

"jaw","head",

"chin","head",

"jaw_rf","head",

"jaw_rm","head",

"jaw_rs","head",

"jaw_lf","head",

"jaw_lm","head",

"jaw_ls","head",

"ear_r","head",

"ear_l","head",

"lip_lc","head",

"lip_lwlb","head",

"lip_lwlf","head",

"lip_lwm","head",

"lip_lwrf","head",

"lip_lwrb","head",

"lip_rc","head",

"lip_uprb","head",

"lip_uprf","head",

"lip_upm","head",

"lip_uplf","head",

"lip_uplb","head",

"nose_tip","head",

"nose_r","head",

"nose_l","head",

"zig_lt","head",

"zig_lm","head",

"zig_lb","head",

"zig_rt","head",

"zig_rm","head",

"zig_rb","head",

"cheek_r","head",

"cheek_l","head",

"eyebrow_lb","head",

"eyebrow_lm","head",

"eyebrow_lf","head",

"corr","head",

"eyebrow_rf","head",

"eyebrow_rm","head",

"eyebrow_rb","head",

"eye_upr","head",

"eye_lwr","head",

"eye_upl","head",

"eye_lwl","head",

"cheek_rf","head",

"cheek_rm","head",

"cheek_rb","head",

"cheek_lf","head",

"cheek_lm","head",

"cheek_lb","head",

"forehead_l","head",

"forehead_m","head",

"forehead_r","head",

"l_eye","head",

"r_eye","head",

"l_pupila","head",

"r_pupila","head",

"neck_t","head",

"neck_b","head",

"neck_r","head",

"neck_l","head",

"tongue_b","head",

"tongue_m","head",

"tongue_f","head"

};

};

class OFP2_ManSkeleton : default {

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",

"headcutscene", "head",

"jaw","head",

"chin","head",

"jaw_rf","head",

"jaw_rm","head",

"jaw_rs","head",

"jaw_lf","head",

"jaw_lm","head",

"jaw_ls","head",

"ear_r","head",

"ear_l","head",

"lip_lc","head",

"lip_lwlb","head",

"lip_lwlf","head",

"lip_lwm","head",

"lip_lwrf","head",

"lip_lwrb","head",

"lip_rc","head",

"lip_uprb","head",

"lip_uprf","head",

"lip_upm","head",

"lip_uplf","head",

"lip_uplb","head",

"nose_tip","head",

"nose_r","head",

"nose_l","head",

"zig_lt","head",

"zig_lm","head",

"zig_lb","head",

"zig_rt","head",

"zig_rm","head",

"zig_rb","head",

"cheek_r","head",

"cheek_l","head",

"eyebrow_lb","head",

"eyebrow_lm","head",

"eyebrow_lf","head",

"corr","head",

"eyebrow_rf","head",

"eyebrow_rm","head",

"eyebrow_rb","head",

"eye_upr","head",

"eye_lwr","head",

"eye_upl","head",

"eye_lwl","head",

"cheek_rf","head",

"cheek_rm","head",

"cheek_rb","head",

"cheek_lf","head",

"cheek_lm","head",

"cheek_lb","head",

"forehead_l","head",

"forehead_m","head",

"forehead_r","head",

"l_eye","head",

"r_eye","head",

"l_pupila","head",

"r_pupila","head",

"neck_t","head",

"neck_b","head",

"neck_r","head",

"neck_l","head",

"tongue_b","head",

"tongue_m","head",

"tongue_f","head",

"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",

"leftupleg","pelvis",

"leftuplegroll","leftupleg",

"leftleg","leftuplegroll",

"leftlegroll","leftleg",

"leftfoot","leftlegroll",

"lefttoebase","leftfoot",

"rightupleg","pelvis",

"rightuplegroll","rightupleg",

"rightleg","rightuplegroll",

"rightlegroll","rightleg",

"rightfoot","rightlegroll",

"righttoebase","rightfoot"

};

pivotsModel = "";

};

};

class CfgModels {

class Default {

sections[] = {};

sectionsInherit = "";

};

class flag_vojak : Default {

sections[] = {"latka"};

};

class Head : Default {

sections[] = {"osobnost", "brejle"};

skeletonName = "Head";

};

class ArmaMan : Default {

sections[] = {

"Head_Injury",

"Body_Injury",

"l_leg_injury",

"l_arm_injury",

"r_arm_injury",

"r_leg_injury",

"clan",

"helmet",

"pouches",

"pouches2",

"face",

"uniform",

"shemagh",

"backpack",

"halogear",

"backshit1",

"backshit2"

};

skeletonName = "OFP2_ManSkeleton";

};

class ad_assault : ArmaMan {};

class ad_assault_night : ArmaMan {};

class ad_bdu : ArmaMan {};

class ad_head_FAST_od : ArmaMan {};

};

};

Config Entries for head

class CfgHeads

{

class DefaultHead; // External Class Reference

class ad_head_FAST_od: DefaultHead

{

model = "\ad_soldiers\ad_head_FAST_od.p3d";

class wounds

{

tex[] = {};

mat[] = {"ca\Characters\Heads\Male\DefaultHead\data\hhl_white.rvmat", "ca\characters\heads\male\blackhead\data\hhl_black_Wounds1.rvmat", "ca\characters\heads\male\blackhead\data\hhl_black_Wounds2.rvmat"};

};

};

};

class CfgFaces

{

class Default;

class Man: Default

{

class Default;

class AD_FAST_OD_FACE: Default

{

name = "A. Duke night";

head = "ad_head_FAST_od";

texture = "\ca\characters\hhl\hhl_60_hair_co.paa";

material = "\ca\characters_e\heads\male\defaulthead\data\camo2_hhl.rvmat";

identityTypes[] = {"AD_FAST_OD_FACE",50};

};

I have this in the soldier's config...

identityTypes[] = {"AD_FAST_OD_FACE"};

faceType = "Man";

Has anyone seen this before and know a fix for it?

Thanks,

-AD

Share this post


Link to post
Share on other sites
Please provide a screen shot of model.

You want a screenshot of the soldier model or the head model?

In-game or in o2?

Share this post


Link to post
Share on other sites

Here ya go..

Soldier Model

soldiermodel.jpg

Head Model

headmodel.jpg

Share this post


Link to post
Share on other sites

Well, I thought the problem was the faceType and identityType entries in my config so i did this...

class CfgHeads

{

class DefaultHead; // External Class Reference

class ad_winter_head: DefaultHead

{

model = "\ad_soldiers\ad_winter_head.p3d";

class wounds

{

tex[] = {};

mat[] = {"ca\Characters\Heads\Male\DefaultHead\data\hhl_white.rvmat", "ca\characters\heads\male\blackhead\data\hhl_black_Wounds1.rvmat", "ca\characters\heads\male\blackhead\data\hhl_black_Wounds2.rvmat"};

};

};

class ad_head_FAST_od: DefaultHead

{

model = "\ad_soldiers\ad_head_FAST_od.p3d";

class wounds

{

tex[] = {};

mat[] = {"ca\Characters\Heads\Male\DefaultHead\data\hhl_white.rvmat", "ca\characters\heads\male\blackhead\data\hhl_black_Wounds1.rvmat", "ca\characters\heads\male\blackhead\data\hhl_black_Wounds2.rvmat"};

};

};

};

class CfgFaces

{

class Man;

class AD_Faces : Man

{

class Default

{

name = "AD_Default_Face";

head = "DefaultHead";

texture = "\ca\characters\hhl\hhl_60_hair_co.paa";

material = "\ca\characters\heads\male\DefaultHead\data\hhl_white.rvmat";

identityTypes[] = {};

};

class Custom : Default

{

name = "AD_Custom_Face";

head = "DefaultHead";

texture = "\ca\characters\hhl\hhl_60_hair_co.paa";

material = "\ca\characters\heads\male\DefaultHead\data\hhl_white.rvmat";

identityTypes[] = {};

};

class AD_FAST_OD_FACE: Default

{

name = "AD FAST OD";

head = "ad_head_FAST_od";

texture = "\ca\characters\hhl\hhl_60_hair_co.paa";

material = "\ca\characters_e\heads\male\defaulthead\data\camo2_hhl.rvmat";

identityTypes[] = {"AD_FAST_OD_FACE",50};

};

};

};

and put these in my soldier's config...

identityTypes[] = {"AD_FAST_OD_FACE"};

faceType = "AD_Faces";

But the head is still stuck between the soldier's legs.

I could really use some help here.

-AD

Share this post


Link to post
Share on other sites

That model looks like bysta.p3d. Why not put the helmet on the soldier model and use the default heads with a custom face?

Share this post


Link to post
Share on other sites
That model looks like bysta.p3d. Why not put the helmet on the soldier model and use the default heads with a custom face?

Because if I can get it to work, I would like to have a set of heads that I can switch out between character models, I have heard of different addon makers being successful in doing this.

It would save a lot of space in an addon to have different heads rather than creating completely new character models when all I want is for them to have different helmets.

Share this post


Link to post
Share on other sites

You are certain you head proxy is in the correct location? Is the autocenter named property perhaps set to one in one of your models?

Share this post


Link to post
Share on other sites
You are certain you head proxy is in the correct location? Is the autocenter named property perhaps set to one in one of your models?

The head was taken directly from the Bysta.p3d example model, the only change that I made to it was adding the helmet.

Could you explain a bit more about the "Autocenter named property"?

Thank you for your help,

EDIT: I figured out the autocenter property, it is set to 1 in my soldier model, should I set it to 0?

-AD

Edited by ADuke

Share this post


Link to post
Share on other sites

OK, so I checked every LOD in both the head model and soldier model, I set every instance of "Autocenter" in the named properties to 0, I rebinarized and looked in game and the issue still occurs.

Let me ask something...

In my Model.cfg I have the head model inheriting from "ArmaMan", same as my soldier model, is this the way it should be?

-AD

Share this post


Link to post
Share on other sites
Just redefine NVG proxy into Head selection.

The NVG proxy is, and always has been, part of the head selection.

Are you assuming that I am making custom glasses?

This is a custom head.

Share this post


Link to post
Share on other sites

I've been thinking about your problem and i think you can probably accomplish what you want by using hidden selections instead of a custom head.

Share this post


Link to post
Share on other sites

Copy the camera MemLoD point from 'BISoldier.p3d' or 'BISkeleton.p3d' from the 'BIModels.zip' example A1 models into your MemLoD of your head model.

Rebuild and give it a go in game.

In my Model.cfg I have the head model inheriting from "ArmaMan", same as my soldier model, is this the way it should be?

-AD

Yes, that's correct.

PS. Post your build.log after building this too if ya can. helps deduce problems.

PS2. Oh, And again (as per previous thread) what is the character model you are using this head with? Reason I ask is... does it have a 'replaceable head' proxy for bysta?

Edited by Synide

Share this post


Link to post
Share on other sites

I was able to do this via the profile selection at the main loading screen for TF86. We used to have a custom "facepack" that had head models with attachments, helmets, etc. Is actually, in my opinion, a much better way of doing headgear than putting stuff on the model. There are several advantages: having one model and changing the heads easily, which reduces file size, amount of work on the addon makers part and increases flexibility in an addon (i.e. new helmets / update can be added with simple config changes). This method also allows you the ability to alter parts of the head model to remove clipping (as can be seen here Example.)

Here is the model for the head in the example Download. I was able to place these on units by using the setface command in the editor for screenshots (or set identity, can't remember, it's been a while), but they always showed up in the proper place. Hope that helps!

Share this post


Link to post
Share on other sites
I was able to do this via the profile selection at the main loading screen for TF86. We used to have a custom "facepack" that had head models with attachments, helmets, etc. Is actually, in my opinion, a much better way of doing headgear than putting stuff on the model. There are several advantages: having one model and changing the heads easily, which reduces file size, amount of work on the addon makers part and increases flexibility in an addon (i.e. new helmets / update can be added with simple config changes). This method also allows you the ability to alter parts of the head model to remove clipping (as can be seen here Example.)

Here is the model for the head in the example Download. I was able to place these on units by using the setface command in the editor for screenshots (or set identity, can't remember, it's been a while), but they always showed up in the proper place. Hope that helps!

Thanks a lot for that ardvarkdb!!

I had of course come across one of your previous threads about this and knew it had to be possible. I was hoping you would show up here.

So the key is using the setFace or setIdentity commands in the soldier, instead of changing the proxy path?

I am definitely going to do it that way then, but instead of doing it every time in the editor I am going to do it in an eventHandler within the config.

Will post my progress.

Thanks everyone for your time.

-AD

Share this post


Link to post
Share on other sites
I was able to do this via the profile selection at the main loading screen for TF86. We used to have a custom "facepack" that had head models with attachments, helmets, etc. Is actually, in my opinion, a much better way of doing headgear than putting stuff on the model. There are several advantages: having one model and changing the heads easily, which reduces file size, amount of work on the addon makers part and increases flexibility in an addon (i.e. new helmets / update can be added with simple config changes). This method also allows you the ability to alter parts of the head model to remove clipping (as can be seen here Example.)

It's the same with hidden selections I suppose, but I wonder what you mean about work? Having several different, similar p3ds doesn't add that much work. The bulk of global changes would be coming from copy and paste stuff which only takes a couple of minutes. With hidden selections, though, you would have the unit's equipment and attire (and even textures) customizable within the config, and the unit's identity would be settable separately, and his gear would be alterable within a mission with setobjecttexture (but iirc saving games is problematic?). If you didn't want the p3d to be too busy with multiple gear choices, I think if you're clever you can do proxies bound to a specific bone as long as you don't require the gear to deform. In the case of helmets, I think you would only be required to have the chin straps on the local p3d.

Share this post


Link to post
Share on other sites

So thanks to ardvarkdb I was successful in my endeavor.

My units were actually using hiddenselections beforehand, so I have 1 model with 10 different variations with different camo patterns, also with hidden "HALO gear" (oxy mask, parachute pack, rebreather) which become "revealed" during my halo scripts.

When you add switchable headgear to that equation it adds to the customization in leaps and bounds.

Not only can I have different camo patterns using the same model, but also....

1. Those different variants can have different head gear

(IE one with a helmet, and one with a ballcap or boonie)

2. Those heads have all of the animation advantages of ArmA2 heads

(IE mouth moving when talking over comms)

3. Those heads can have face textures permanently assigned to them.

(No switching faces in the profile editor,forcing me to back out to the main menu, between missions if I want a camo face pattern, I just ask our server admin to drop in my guy with the camo face before he launches the mission)

I'm not sure about it being more or less work, but I know 1 thing...

It DRASTICALLY cuts down the size of my addon, making it a lot easier to distribute the addon among friends when I make changes, this is key to the difference between having to pay for file hosting, or just attaching the addon to an email or IM.

Anyway, it is kind of a complex procedure to get it to work, if anyone wants to know how to do it, feel free to PM me.

Thanks to everyone for the help,

-AD

Share this post


Link to post
Share on other sites

Anyway, it is kind of a complex procedure to get it to work, if anyone wants to know how to do it, feel free to PM me.

-AD

Glad you worked it out m8. Why not write a quick tutorial and upload on Armaholic. Will save you a rather full Inbox methinks.

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  

×