Jump to content

AT ST tags and import export weird problems...


Recommended Posts

Posted

Ok so ...

https://jkhub.org/topic/6026-bespin-cloud-city-vader-sp-mission-wip/page-8?do=findComment&comment=114020 problem origin from this topic
 

Weird situation..

My model didnt use the at_st_side weapon but I fixed it! But in half. The AT_ST_Side works BUT it doesn't comes from the tags. It comes from the weapon_0 tag for some reason :/

So i made a little test ! I imported the default normal model of the At_ST and exported it in blender . NO changes at all. Just the export. And i put the model.glm in the new player model folder - atst2. So i made npc (copied whole lines from the default one and just change the name and the model to use .. in this case atst2) And start the game. So it should work right? Yeah... but it also shoots from the middle -Main and Side.

Even if the tags are the same, even if the model has the same body parts names and even if everything in the modview looks nice... it doesnt work like that. Even after exporting the default model.

Tags are not a problem here ... maybe there is some problem with the name or the vehicle file but i dont ...


iaZoV.jpg
iak9u.jpg

 

Posted

At this point you might as well dismember the ATST2. It's a long shot, but try blasting to dust its *weapon tag: maybe if it can't find the tag it will resort to shooting from the *flash tags? Pure speculation.

Posted

mmm... sure there is not any tag missing? if the tag shooting is missing of got something of wrong, the weapons are shooted by the origin of the model.

i've not worked again with not humanoid models,  so i really not know how help you much : \

Posted

There is no way .. to do this. I dont think that Vehicle file do anything here. I changed it , make with the same name as the model file, change paths (I just copied WHole lines from atst_vehicle.vehicle file and just changed names and paths..)

There is no way with missing tags .. As i said before ATST2 which is just new model is exactly the same model as default one.. but because it is called atst2 not atst it doesnt work .. maybe it is because of vehicle file but i dont think so..

Also i wanted to make sure 100% .. Even the HD replacment atst that we have in the file section IT has the same issue when i changed paths in skin , vehicle files just to see how it would work.. and yeah .. it worked in the same way :S

I managed to make him shooting from cannons that i wanted but .. It worked only when i changed name of the folder to the - atst

Yeah .. it replace the normal atst model but I wanted this to work separately. Maybe there is still something that i am doing wrong but i am sure that there is NO problem with tags but with the vehicle file OR there is some shitty code line in the game that makes tags work like that ONLY with the model called atst or vehicle file...

This is vehicle file : called ugn_vehicle.veh

 

Ugn_veh_vehicle
{
name            Ugn_veh_vehicle
type            VH_WALKER
numHands        2
hideRider        1
killRiderOnDeath     1
lookYaw            45
lookPitch        45
length            80
width            80
height            272
centerOfGravity        "-0.222 0 0"
speedMax        290
speedMin        -80
acceleration        7
decelIdle        20
strafePerc        0.0
bankingSpeed        0.0
rollLimit        2
pitchLimit        0
braking            10
mouseYaw        0.003
mousePitch        0.01
turningSpeed        5
turnWhenStopped        0
traction        100
friction        100
maxSlope        0.7
mass            400
armor             1500
toughness         75.0
model            Ugn_veh
skin            default
radarIcon        "gfx/menus/radar/atst"
explosionRadius     400
explosionDamage     1000
explodeFX        "ships/ship_explosion2"
explosionDelay        2450
soundOn         "sound/chars/atst/atst_hatch_close.mp3"
soundOff         "sound/chars/atst/atst_hatch_open.mp3"

weap1            atst_laser
weap1Delay        250
weap1AmmoMax        50
weap1AmmoRechargeMS    500

weapMuzzle1        atst_laser
weapMuzzle2        atst_laser

//weapMuzzle3    ???

weap2            atst_rocket
weap2Delay        1000
weap2Aim        1
weap2AmmoMax        20

weapMuzzle4        atst_rocket

cameraOverride            1
cameraRange            300
cameraVertOffset        150
//cameraPitchOffset        0
cameraFOV            100
//This just doesn't work on levels with fog, so... leave it off
//cameraAlpha            0.25
cameraPitchDependantVertOffset    0
}

 

The name of the model folder is Ugn_veh - (just from Ugnaught vehicle)

the npc: called ugn_veh.npc
 

ugn_veh
{
    playerModel    ugn_veh
    weapon        WP_ATST_MAIN
    weapon        WP_ATST_SIDE
//    headModel    ugn_veh
    //torsoModel    ugn_veh
    //legsModel    ugn_veh
    headYawRangeLeft        20
    headYawRangeRight        20
    headPitchRangeUp        30
    headPitchRangeDown        30
    torsoYawRangeLeft        0
    torsoYawRangeRight        0
    torsoPitchRangeUp        0
    torsoPitchRangeDown        0
    health        2000
    reactions        5
    aim        4
    move        5
    aggression    5
    evasion        5
    intelligence    5
    playerTeam    TEAM_ENEMY
    enemyTeam    TEAM_PLAYER
    height        272    
    width        80
//    race        bot
    class        CLASS_ATST
    yawSpeed    60
    runSpeed    150
    walkSpeed    150
    hFOV        90
    vfov        50
    snd            atst
}

 

The npc_vehicle - called ugn_veh_vehicle.npc
 

ugn_veh_vehicle
{
    weapon        WP_BOWCASTER
    weapon        WP_ROCKET_LAUNCHER
    weapon        WP_EMPLACED_GUN
    playerModel   ugn_veh
    playerTeam    TEAM_FREE
    enemyTeam    TEAM_FREE
    class        CLASS_VEHICLE
    height        272    
    width        80
    health        3000
}

 

 

Posted

Maybe the answer to your question is on the misc_atst_drivable entity's code?

 

After making another model i found that that ... it is 100% code issue ..

 

Today i was making model that i will use with the mark1 skeleton. I made an npc first but i use the default mark1 model for test. Weird fact this model actually work fine even in Jka. But... i just made the new npc with lower health. I copied whole lines from the default npc and just changed names but IT USES THE SAME GODDAMN MODEL. And... blaster shots are invisible, bowcaster and movements work fine BUT AGAIN.. THERE IS SOMETHING WRONG.

 

I guess that there is some code line that use atst npc or atst called model and give the tags only to that npc or that model.. Atst_class make it walk like atst , shot like it and make it unknockdown able. .. but tags doesnt work with the atst_class

 

When i will came back home i will make final test - npc file with atst_class that use NORMAL atst model. And i will call that npc -atst_fail. If this will not work.. i dont know. Maybe i will just replace the default models with mine (no problem with the mark1 to be honest but with the atst.. i wanted both to work)

Posted

After making another model i found that that ... it is 100% code issue ..

 

Today i was making model that i will use with the mark1 skeleton. I made an npc first but i use the default mark1 model for test. Weird fact this model actually work fine even in Jka. But... i just made the new npc with lower health. I copied whole lines from the default npc and just changed names but IT USES THE SAME GODDAMN MODEL. And... blaster shots are invisible, bowcaster and movements work fine BUT AGAIN.. THERE IS SOMETHING WRONG.

 

I guess that there is some code line that use atst npc or atst called model and give the tags only to that npc or that model.. Atst_class make it walk like atst , shot like it and make it unknockdown able. .. but tags doesnt work with the atst_class

 

When i will came back home i will make final test - npc file with atst_class that use NORMAL atst model. And i will call that npc -atst_fail. If this will not work.. i dont know. Maybe i will just replace the default models with mine (no problem with the mark1 to be honest but with the atst.. i wanted both to work)

 

I know that feeling too well :( I guess only a coder can fix that, or make a custom class for AT-ST like enemies, without having to be an AT-ST. 

Langerd likes this
Posted

I never checked atst AI code of SP, but i did some test with an Custom NPC file and an humanoid model with swords or shootinng weapons

for tryi how fight the CLASS_ATST.

what i learned its. 

- atst class cannot use the sabers. or can? i not remember in this moment.

- atst class shoot ever every weapons bolts by the torso of the model. O_o, not by the r_hand tag.

- atst not jump, simply chase the player until smash walking upon jaden

- if an enemy with atst crash walk on your jedi or player, he die immediatly.

 

consiederation: i think the origin of muzzle flash and altmuzzleflash fire, and so, also of weapon shoots, is setted by the code for a specific NPC name. maybe there is some qstring parameter related to specific atst setting, exactly like cultist commando, destroyer or galakmech. if is really this, this can be fixed only with a change on this string of code. instead of setting the tag position for a specific npc, setting the tag positin for all the AT_ST class should fix the problem.

.


atst AI code.

 

 
#define    MIN_MELEE_RANGE        640
#define    MIN_MELEE_RANGE_SQR    ( MIN_MELEE_RANGE * MIN_MELEE_RANGE )

#define MIN_DISTANCE        128
#define MIN_DISTANCE_SQR    ( MIN_DISTANCE * MIN_DISTANCE )

#define TURN_OFF            0x00000100//G2SURFACEFLAG_NODESCENDANTS

#define LEFT_ARM_HEALTH 40
#define RIGHT_ARM_HEALTH 40

extern void G_SoundOnEnt( gentity_t *ent, soundChannel_t channel, const char *soundPath );
/*
-------------------------
NPC_ATST_Precache
-------------------------
*/
void NPC_ATST_Precache(void)
{
    G_SoundIndex( "sound/chars/atst/atst_damaged1" );
    G_SoundIndex( "sound/chars/atst/atst_damaged2" );

    RegisterItem( FindItemForWeapon( WP_ATST_MAIN ));    //precache the weapon
    RegisterItem( FindItemForWeapon( WP_BOWCASTER ));    //precache the weapon
    RegisterItem( FindItemForWeapon( WP_ROCKET_LAUNCHER ));    //precache the weapon

    G_EffectIndex( "env/med_explode2" );
//    G_EffectIndex( "smaller_chunks" );
    G_EffectIndex( "blaster/smoke_bolton" );
    G_EffectIndex( "droidexplosion1" );
}

//-----------------------------------------------------------------
static void ATST_PlayEffect( gentity_t *self, const int boltID, const char *fx )
{
    if ( boltID >=0 && fx && fx[0] )
    {
        mdxaBone_t    boltMatrix;
        vec3_t        org, dir;

        gi.G2API_GetBoltMatrix( self->ghoul2, self->playerModel,
                    boltID,
                    &boltMatrix, self->currentAngles, self->currentOrigin, (cg.time?cg.time:level.time),
                    NULL, self->s.modelScale );

        gi.G2API_GiveMeVectorFromMatrix( boltMatrix, ORIGIN, org );
        gi.G2API_GiveMeVectorFromMatrix( boltMatrix, NEGATIVE_Y, dir );

        G_PlayEffect( fx, org, dir );
    }
}

/*
-------------------------
G_ATSTCheckPain

Called by NPC's and player in an ATST
-------------------------
*/

void G_ATSTCheckPain( gentity_t *self, gentity_t *other, vec3_t point, int damage, int mod,int hitLoc )
{
    int newBolt;
    
    if ( rand() & 1 )
    {
        G_SoundOnEnt( self, CHAN_LESS_ATTEN, "sound/chars/atst/atst_damaged1" );
    }
    else
    {
        G_SoundOnEnt( self, CHAN_LESS_ATTEN, "sound/chars/atst/atst_damaged2" );
    }

    if ((hitLoc==HL_ARM_LT) && (self->locationDamage[HL_ARM_LT] > LEFT_ARM_HEALTH))
    {
        if (self->locationDamage[hitLoc] >= LEFT_ARM_HEALTH)    // Blow it up?
        {
            newBolt = gi.G2API_AddBolt( &self->ghoul2[self->playerModel], "*flash3" );
            if ( newBolt != -1 )
            {
//                G_PlayEffect( "small_chunks", self->playerModel, self->genericBolt1, self->s.number);
                ATST_PlayEffect( self, self->genericBolt1, "env/med_explode2" );
                G_PlayEffect( "blaster/smoke_bolton", self->playerModel, newBolt, self->s.number);
            }

            gi.G2API_SetSurfaceOnOff( &self->ghoul2[self->playerModel], "head_light_blaster_cann", TURN_OFF );
        }
    }
    else if ((hitLoc==HL_ARM_RT) && (self->locationDamage[HL_ARM_RT] > RIGHT_ARM_HEALTH))    // Blow it up?
    {
        if (self->locationDamage[hitLoc] >= RIGHT_ARM_HEALTH)
        {            
            newBolt = gi.G2API_AddBolt( &self->ghoul2[self->playerModel], "*flash4" );
            if ( newBolt != -1 )
            {
//                G_PlayEffect( "small_chunks", self->playerModel, self->genericBolt2, self->s.number);
                ATST_PlayEffect( self, self->genericBolt2, "env/med_explode2" );
                G_PlayEffect( "blaster/smoke_bolton", self->playerModel, newBolt, self->s.number);
            }

            gi.G2API_SetSurfaceOnOff( &self->ghoul2[self->playerModel], "head_concussion_charger", TURN_OFF );
        }
    }
}
/*
-------------------------
NPC_ATST_Pain
-------------------------
*/
void NPC_ATST_Pain( gentity_t *self, gentity_t *inflictor, gentity_t *other, vec3_t point, int damage, int mod,int hitLoc )
{
    G_ATSTCheckPain( self, other, point, damage, mod, hitLoc );
    NPC_Pain( self, inflictor, other, point, damage, mod );
}

/*
-------------------------
ATST_Hunt
-------------------------`
*/
void ATST_Hunt( qboolean visible, qboolean advance )
{

    if ( NPCInfo->goalEntity == NULL )
    {//hunt
        NPCInfo->goalEntity = NPC->enemy;
    }

    NPCInfo->combatMove = qtrue;

    NPC_MoveToGoal( qtrue );

}

/*
-------------------------
ATST_Ranged
-------------------------
*/
void ATST_Ranged( qboolean visible, qboolean advance, qboolean altAttack )
{

    if ( TIMER_Done( NPC, "atkDelay" ) && visible )    // Attack?
    {
        TIMER_Set( NPC, "atkDelay", Q_irand( 500, 3000 ) );

        if (altAttack)
        {
            ucmd.buttons |= BUTTON_ATTACK|BUTTON_ALT_ATTACK;
        }
        else
        {
            ucmd.buttons |= BUTTON_ATTACK;
        }
    }

    if ( NPCInfo->scriptFlags & SCF_CHASE_ENEMIES )
    {
        ATST_Hunt( visible, advance );
    }
}

/*
-------------------------
ATST_Attack
-------------------------
*/
void ATST_Attack( void )
{
    qboolean    altAttack=qfalse;
    int            blasterTest,chargerTest,weapon;

    if ( NPC_CheckEnemyExt() == qfalse )//!NPC->enemy )//
    {
        NPC->enemy = NULL;
        return;
    }

    NPC_FaceEnemy( qtrue );

    // Rate our distance to the target, and our visibilty
    float        distance    = (int) DistanceHorizontalSquared( NPC->currentOrigin, NPC->enemy->currentOrigin );    
    distance_e    distRate    = ( distance > MIN_MELEE_RANGE_SQR ) ? DIST_LONG : DIST_MELEE;
    qboolean    visible        = NPC_ClearLOS( NPC->enemy );
    qboolean    advance        = (qboolean)(distance > MIN_DISTANCE_SQR);

    // If we cannot see our target, move to see it
    if ( visible == qfalse )
    {
        if ( NPCInfo->scriptFlags & SCF_CHASE_ENEMIES )
        {
            ATST_Hunt( visible, advance );
            return;
        }
    }

    // Decide what type of attack to do
    switch ( distRate )
    {
    case DIST_MELEE:
        NPC_ChangeWeapon( WP_ATST_MAIN );
        break;

    case DIST_LONG:

        NPC_ChangeWeapon( WP_ATST_SIDE );

        // See if the side weapons are there
        blasterTest = gi.G2API_GetSurfaceRenderStatus( &NPC->ghoul2[NPC->playerModel], "head_light_blaster_cann" );
        chargerTest = gi.G2API_GetSurfaceRenderStatus( &NPC->ghoul2[NPC->playerModel], "head_concussion_charger" );

        // It has both side weapons
        if (!(blasterTest & TURN_OFF)  && !(chargerTest & TURN_OFF))
        {
            weapon = Q_irand( 0, 1);    // 0 is blaster, 1 is charger (ALT SIDE)

            if (weapon)                // Fire charger
            {
                altAttack = qtrue;
            }
            else
            {
                altAttack = qfalse;
            }

        }
        else if (!(blasterTest & TURN_OFF))    // Blaster is on
        {
            altAttack = qfalse;
        }
        else if (!(chargerTest & TURN_OFF))    // Blaster is on
        {
            altAttack = qtrue;
        }
        else
        {
            NPC_ChangeWeapon( WP_NONE );
        }
        break;
    }

    NPC_FaceEnemy( qtrue );

    ATST_Ranged( visible, advance,altAttack );
}

/*
-------------------------
ATST_Patrol
-------------------------
*/
void ATST_Patrol( void )
{
    if ( NPC_CheckPlayerTeamStealth() )
    {
        NPC_UpdateAngles( qtrue, qtrue );
        return;
    }

    //If we have somewhere to go, then do that
    if (!NPC->enemy)
    {
        if ( UpdateGoal() )
        {
            ucmd.buttons |= BUTTON_WALKING;
            NPC_MoveToGoal( qtrue );
            NPC_UpdateAngles( qtrue, qtrue );
        }
    }

}

/*
-------------------------
ATST_Idle
-------------------------
*/
void ATST_Idle( void )
{

    NPC_BSIdle();

    NPC_SetAnim( NPC, SETANIM_BOTH, BOTH_STAND1, SETANIM_FLAG_NORMAL );
}

/*
-------------------------
NPC_BSDroid_Default
-------------------------
*/
void NPC_BSATST_Default( void )
{
    if ( NPC->enemy )
    {
        if( (NPCInfo->scriptFlags & SCF_CHASE_ENEMIES) )
        {
            NPCInfo->goalEntity = NPC->enemy;
        }
        ATST_Attack();
    }
    else if ( NPCInfo->scriptFlags & SCF_LOOK_FOR_ENEMIES )
    {
        ATST_Patrol();
    }
    else
    {
        ATST_Idle();
    }
}
 
Posted

You must be doing something wrong, my AT-ST does not use the same skeleton or have the same mesh hierarchy yet it works fine in both SP and MP. The only thing I took from the original AT-ST were it's tags but I repositioned them since the models aren't exact to one another. I can't be too much help though since you're using blender.

Posted (edited)

You must be doing something wrong, my AT-ST does not use the same skeleton or have the same mesh hierarchy yet it works fine in both SP and MP. The only thing I took from the original AT-ST were it's tags but I repositioned them since the models aren't exact to one another. I can't be too much help though since you're using blender.

I think that Your model work with tags is because it replace the original one...

If this would be seperated model the tags would be messed up as well.. I think

 

The Mark1 works fine right now! But only when i replaced the original mark1... When i edited the original npc file - mark1 and make it use the ugn_mark model ... tags where also screwed. And in this case there is no vehicle file..

 

EFXZo.jpg

EFpvB.jpg

 

Now i will check the new npc that use the original atst model but with diffrent name.

 

EDIT: Soooo this is the model thingy ... daymn... 

 

EFU61.jpg

 

Also i think that makers of JKa thought that people will make player models or skins for this game... that is why all player models even if they are new works competely fine.

 

But with these kind of models they used code lines that makes only one model to use tags like this... and model must be called - atst.

This npc is called atst2 and use atst model . That is why it works and my models also works when i replace the original ones with them.. i thought that this is just class and npc work.. shit

Edited by Langerd
Ramikad and yeyo JK like this
Posted

I don't think so, you messed up somewhere, probably the naming of the tags.

 

I keep telling you to post your hierarchy in blender. You also scaled down the skeleton to fit your model, when you did that it probably threw everything off.

 

You should be using your own skeleton and animations, it doesn't look like the AT-ST stuff would even work on that model.

Posted

 

I think that Your model work with tags is because it replace the original one...

If this would be seperated model the tags would be messed up as well.. I think

 

It does replace the original one, but it uses a different mesh and it also comes with more NPCs with different names, so maybe it's not related to a code issue, but something else like minilogoguy18 says.

Posted

It does replace the original one, but it uses a different mesh and it also comes with more NPCs with different names, so maybe it's not related to a code issue, but something else like minilogoguy18 says.

The npcs with diffrent names because it replace the npc file too. This file has new npc's sure .. but they are using the same model - just diffrent skins.

 

Download it , make Your own npc file that use the same model and the same class ...

 

I don't think so, you messed up somewhere, probably the naming of the tags.

 

I keep telling you to post your hierarchy in blender. You also scaled down the skeleton to fit your model, when you did that it probably threw everything off.

 

You should be using your own skeleton and animations, it doesn't look like the AT-ST stuff would even work on that model.

I will check the skeleton but i managed make it to work.. the only thing i had to do is to replace the original atst model with mine. Making new skeleton well.. it is true that i made it easy (lazy to be honest) way for now.. I am making everything by myself - mapping , scripting and modeling ... With mark1 i found out that there is no need but with this model there are some weird stuff going with the legs .. Like You said i should make new skeleton but this model is for test and i dont want to learn how to make the skeleton (and new animations i think..) for now at least. I will come back to this project and if these legs will be problem i will just start to make my own skeleton ..

 

EW093.jpg

EWlSI.jpg

 

About hierarchy .. i tried to make it very similar to the original atst. Maybe it was stupid decission but i was too much pissed off and i thought that game reads tags only with the model parts.. ehh..

 

I imported the atst model and i was making my model on the other layer. I was paying attention on the skeleton size and i took all tags from this atst.

 

As i said before it worked when i replaced the atst with mine model. ALL tags worked fine. That is why i think i didnt made anything wrong with the model..

 

 

Posted

See, the thing that I don't get is why does eveyrthing have a "_0" suffix at the end of everything? Is that just how Blender knows that it's the main mesh and not a LOD? The tags as well wouldn't be named the way they are either in a program that would use the dotXSI->carcass->GLM/GLA method. They wouldn't be named "*hips", it would be "bolt_hips" instead and the compiler would convert it.

 

This is why I said I might not be able to help too much considering it's blender and its so different than using Maya/Max/XSI.

 

@@mrwonko maybe can clear some things up.

 

There is literally no info on making NPC's with custom skeletons in blender, it's probably never even been tried before, people just seem to use it to make Frankenstein models.

Posted

See, the thing that I don't get is why does eveyrthing have a "_0" suffix at the end of everything? Is that just how Blender knows that it's the main mesh and not a LOD? The tags as well wouldn't be named the way they are either in a program that would use the dotXSI->carcass->GLM/GLA method. They wouldn't be named "*hips", it would be "bolt_hips" instead and the compiler would convert it.

 

This is why I said I might not be able to help too much considering it's blender and its so different than using Maya/Max/XSI.

 

@@mrwonko maybe can clear some things up.

 

There is literally no info on making NPC's with custom skeletons in blender, it's probably never even been tried before, people just seem to use it to make Frankenstein models.

When i was importing models that is how i learnt  from observation. The tags have this "*" and the model roots are like that model_root_0 - models are like this model_part_0

 

When there is no LOD's the main is the model_root_0 - always. And many player models that I imported and exported ... didnt have any LODS (only model_root_0) but they worked without them.

 

 

You think that it is the model issue but .. If You have some free time try to make it work with the diffrent npc.. just only try. You are the advanced modeler and You made vehicle models to JK3. But in this situation i am sure that there is something with the code..

 

EWxse.jpg

EWtkC.jpg

EWjll.jpg

 

Big Cannon(bowcaster bolts) and small gun (this rapid fire shots)

 

I managed to make my Ugnaught vehicle model to work with the mark1_class but it worked only when i replace the mark1 model with this... But all the tags works just fine. And I even managed to place tags on the one side (just as i wanted to do ) and it works!

BUT when i made.. for test npc called - mark_test .. copied npc of the mark1 but i changed only the name of it ... it has screwed tags.. the orignal model has screwed tags.(that was before i added my model to the pk3 so it was default , original model)  So ... I just think that it is kind of the same situation as the atst...

 

yeyo JK likes this
Posted

I think it's a step you're doing wrong in blender, it doesn't work anything like 3DS Max or Softimage work, none of the methodology crosses over. I'm certain I could make it work in Softimage but I don't have the time to try and troubleshoot models for poeple, I'll be working like 12 hour days most of this week. I've got multiple cars at work that either need new engines installed or the transmissions rebuilt, not much time for modding this week.

Posted

@@Langerd , for fix the FX origin position, simply try to rename the tag by *flash to bolt_flash on blender and re export the model

"bolt_" should be convert into * when you build the GLM with carcass. Or you're exporting directly on GLM format by blender?

if you get some XSI exporter for build the GLM on carcass, try to rename all tags by "*_tagname" to "bolt_"tagname"

i do the models on max, and not on blender, but on max i got issues when i export model with *_ instead of bolt_

Posted

See, the thing that I don't get is why does eveyrthing have a "_0" suffix at the end of everything? Is that just how Blender knows that it's the main mesh and not a LOD? The tags as well wouldn't be named the way they are either in a program that would use the dotXSI->carcass->GLM/GLA method. They wouldn't be named "*hips", it would be "bolt_hips" instead and the compiler would convert it.

 

This is why I said I might not be able to help too much considering it's blender and its so different than using Maya/Max/XSI.

 

@@mrwonko maybe can clear some things up.

 

There is literally no info on making NPC's with custom skeletons in blender, it's probably never even been tried before, people just seem to use it to make Frankenstein models.

 

Yes, the _0, _1, _2, _3 suffix refer to the LOD. I'm not sure the mesh name has some relevance at all though, it is important to pay attention to its Ghoul2 Properties, which are the Name, Shader, and the Tag and Off tick boxes.

Posted

See, the thing that I don't get is why does eveyrthing have a "_0" suffix at the end of everything? Is that just how Blender knows that it's the main mesh and not a LOD?

The name of the object does not matter at all for the exporter, but since there are potentially multiple LODs I add _0, _1 etc. to the names because there can't be two objects with the same one. The actual exported name is defined in the ghoul 2 properties in the object tab and must be the same across LODs.

 

When in doubt, just import the original model into Blender, the plugin is built in such a way that it will be set up correctly for immediate re-export.

 

There is literally no info on making NPC's with custom skeletons in blender, it's probably never even been tried before, people just seem to use it to make Frankenstein models.

Well, there's a tutorial on a vehicle with a custom skeleton and that's basically the same.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...