SKMToolSet , Last Chance

Discussion in 'Models, Animations, and Particle Effects' started by XVicious, Aug 11, 2013.

Remove all ads!
  1. XVicious

    XVicious Established Member

    Joined:
    Jun 21, 2013
    Messages:
    427
    Likes Received:
    8
    ***

    With the SKM TOOL set you can do the following,
    conversions to edit existing models in TOEE


    Model files Conversions:
    (TOEE MODEL FILE FORMAT) SKM
    *.SKM to -> wave front *.OBJ (3d cad model)
    *.SKM to -> Anim8or *.an8 (3d CAD Model)

    [edit]

    EXAMPLE: HYDRA CONVERTED INTO 1 HEAD BLACK DRAGON
    [​IMG]

    !!! WARNING use at own risk!!!

    SKMTOOL-set v1.2.1 was designed and coded (finalised) and compiled by XVicious in years 2012-2013 A.D.

    UML - class interface data design
    -linked list Queue sculpted (container type)
    -dynamic List Queue container

    designed compatible with
    anim8or version .95
    available @ http://www.anim8or.com
    http://www.anim8or.com/download/index_v095.html

    [​IMG]
    Code:
    typedef char PAD12[12];
    
    
    typedef char BoneDef[100];
    typedef char MatDef[128];
    typedef unsigned long BitOS;
    
    
    
    typedef struct SKMDATA_ALL
    {
        SKMHeader_T Head[4];
        PAD12 pad;
        BoneDef  bones;
        MatDef  Mater;
        XYZ_ * VERT;
        XYZ_ * Normal;
        Texture_ * Texel;
        XYZi_ * index;
    }SKMDATA_ALL;
    
    
    Code:
    
    typedef struct XYZi_
    {
    unsigned short i;
    }XYZi_;
    
    typedef struct XYZ_
    {
    float x,y,z,w;
    }XYZ_;
    
    typedef struct Texture_
    {
    float x,y,z,u;
    }Normal_;
    
    typedef struct ModelData_
    {
    XYZ_ Vect;
    XYZ_ Norm;
    Texture_ Texel;
    }ModelData_;
    
    
    
    namespace vect
    {
    
    typedef float DataT_;
    typedef int DataT_Key;
    #include <list_.h>
    
    };
    
    namespace vect3
    {
    
    typedef XYZ_ DataT_;
    typedef int DataT_Key;
    #include <list_.h>
    
    };
    
    namespace vect3i
    {
    
    
    
    typedef XYZi_ DataT_;
    typedef int DataT_Key;
    #include <list_.h>
    
    };
    
    namespace vect2
    {
    
    typedef Texture_ DataT_;
    typedef int DataT_Key;
    #include <list_.h>
    };
    
    namespace ModelSD
    {
    
    typedef ModelData_ DataT_;
    typedef int DataT_Key;
    #include <list_.h>
    };
    
    
    
    typedef struct SKMHeader_T
    {
    unsigned long count;
    unsigned long offset;
    }SKMHeader_T;
    
    
    typedef struct SKMData
    {
    
    SKMHeader_T HData[4];
    
    //WORD 2 bytes
    //DWORD 4 bytes
    
    vect3::List_      Vertdata_; //Vertex data size: DWORD
    vect3i::List_      Facedata_; //index data size: Word
    vect3::List_      Normdata_;
    vect2::List_    TexelCoords_;
    
    ModelSD::List_   Model_;
    
    
    }SKMData;
    
    USE Skmtoolset1.2.C coded for multi core users and updated interface.


    Notice for Multi-Processor-Core Users:
    I noticed on my own machine an AMD Quad Core:
    this is a must do for most of these apps to be compatable

    while running the CMD prompt process needs to have process AFFINITY
    set to using only 1 CORE and it needs to BE the Core 0

    it has something to do with the segment and arithmetic registers
    and the width of which the data goes through them. maybe also could be
    instruction scope matrix Stack gets lost??

    you can access Proccess affinity using the TASK MANAGER ->process tab
    right click the CMD process and ->SET AFFINITY

    the best way to install:
    Copy files into own folder under any hard drive you like, then
    SET PATH for your local machine

    path is set as:
    ;c:\skmtools\
    so thus my tools are located in folder
    c:\skmtools\
    Setting a path allows these commands to be accessed via the command prompt
    from any directory, making things alot easier.

    edit:


    added win32 cab self extract installer


    mirror for guests download access 10 second wait time
    http://www.4shared.com/get/r42HkLsgba/skmtoolset121.html
     

    Attached Files:

    Last edited: Sep 14, 2016
  2. Agetian

    Agetian Attorney General Administrator

    Joined:
    Aug 14, 2004
    Messages:
    2,526
    Likes Received:
    0
    Thanks for developing this tool and sharing it with the community! :) Why do you think there is a need to take the post down though? I believe the tool may be of interest to future modders...

    - Agetian
     
  3. XVicious

    XVicious Established Member

    Joined:
    Jun 21, 2013
    Messages:
    427
    Likes Received:
    8
    I had notice that my post's were disapearing after some time of in-activity
    so I only assume that this one would disapear as well, because I wasn't going to continually update the thread.
     
  4. Agetian

    Agetian Attorney General Administrator

    Joined:
    Aug 14, 2004
    Messages:
    2,526
    Likes Received:
    0
    Hmm that's weird, I don't think the board is set up to delete old threads, I assume they're just not listed by default because of their age. I'll stick this thread here in the modeling forum so that it stays on.

    - Agetian
     
  5. Gaear

    Gaear Bastard Maestro Administrator

    Joined:
    Apr 27, 2004
    Messages:
    11,038
    Likes Received:
    42
    Threads will fall off the visible list due to inactivity (true for all forums). You can adjust that with the controls at bottom left of each page.
     
  6. Agetian

    Agetian Attorney General Administrator

    Joined:
    Aug 14, 2004
    Messages:
    2,526
    Likes Received:
    0
    Yep, that's what I thought, Gaear. :) I believe it's OK to make this thread sticky here though so that it's visible all the time, after all, the tool is of potential interest for the future modding needs should those arise.

    - Agetian
     
  7. XVicious

    XVicious Established Member

    Joined:
    Jun 21, 2013
    Messages:
    427
    Likes Received:
    8
    my Thanks for that,

    I have appreciated the content of the CO8 forum for a long while, being a fan of TOEE,
    so it feels good to make a contribution here that people might use in the future ;).

    another good example of what this tool could do is this turtle in this thumb pic.
    Shiningted requested this for a possible turtle in Kotb.
    I had made a few other's too, cats,birds, hair style's that sort.
    there are many possibilities, things that can be re-shaped i.e..

    -X out
     

    Attached Files:

    Last edited: Aug 11, 2013
  8. Zoltec

    Zoltec Pгōdigium

    Joined:
    Apr 22, 2012
    Messages:
    547
    Likes Received:
    16
    @Xvicious It seems you have a long voyage ahead and you already dropped the big big anchor, well then goodluck with that, come back here at your heart's content. I've been enlightened on some things which is unknown previously, thanks for that, what a generous guy you are :) Anyway I've got a message for you not really a priv-te one, I think its worth checking out. ;)
     
  9. Agetian

    Agetian Attorney General Administrator

    Joined:
    Aug 14, 2004
    Messages:
    2,526
    Likes Received:
    0
    Nice job on the turtle so far, keep it up! :)

    - Agetian
     
  10. sevensixtytwo

    sevensixtytwo Member

    Joined:
    Aug 24, 2013
    Messages:
    2
    Likes Received:
    0
    Hullo, guys.

    Can the toolset import OBJs from any 3d editing program (I use Maya)? or does it cater to anim8or only?

    The reason I'm asking is when I try to use wave2skm.exe on my new obj, the command prompt doesn't do anything. it just sits there and I can't type anything else.

    Also, is there a polycount limit for stuff like weapons? What are the specific headers we should change when hex editing?

    Thanks for releasing these tools anyhow. :)
     
  11. XVicious

    XVicious Established Member

    Joined:
    Jun 21, 2013
    Messages:
    427
    Likes Received:
    8
    (if wave2skm is froze its most likely a parse problem or you
    did not send it a (*file.obj) parameter (missing or data missing) )

    Yea, actually its catered too parse obj made by anim8or,

    but if you know how to program and correct the parse problem with maya, the source code is available for DL..

    most obj files i have seen are very simulair so changing the parse is only a matter
    of correcting it.


    you could import obj (from 3d party Maya) into anim8or and then export from anim8or, then try WAVEtoSKM
    (re-translation bridge)
    also possible with blender exports

    1. export/save 3rd party OBJ file
    2. import into anim8or
    3. export from anim8or
    4. wave2skm .obj




    advise: keep your face index as drawn triagnles, no quads or multi-polygons.
    do not create multi-groups or single groups. connect all as one mesh


    the poly limit, I would suggest sticking to relatively close count there,

    for weapons but the count could be as high as
    the offset can reach for triagnles.

    as long as your vertex's dont go farther then (SKM file byte) address 0x0FFFFh ok

    (so yes there is a limit to resolution there)

    the idea is to use an original export model as a base, edit , then import back to
    skm.

    the reason you dont want to create a brand new model is dew to original data needed for animation. (possible though to inject an SKB into a new model)
    *just not recomended, advanced techn...
    i.e. model mind flayer tenticals, I drawn a new model, but I tried to maintain
    a point and poly count that was from the original count from the base.

    so the header I meant memory stacked like so

    (4bytes) count (4bytes) offset (byte in file) paired

    there are 32 bytes at the beggining
    so their are 4 pairs of these counts and offsets

    this would be the data needing edit update
    (IF YOU CHANGE FACE ARANGEMENT,COUNTS OR VERTX COUNTS ARRANGEMENT)

    materials ...,...
    bones count , offset
    vertex ..., ...
    triangle count,offset

    I usually only needed to update the last 2 pairs,
    (vert count/offset) ,(triangle count/offset) the bytes 17-32

    when updating this, you need to scroll and search for your triangle index offset (byte address) using a hex edit then change the above mentioned offests and/or counts.

    hex: 00 : is a 1 byte *char | 00 00 is a word 2 bytes *int | 00 00 00 00 4bytes *double
     
    Last edited: Aug 26, 2013
  12. sevensixtytwo

    sevensixtytwo Member

    Joined:
    Aug 24, 2013
    Messages:
    2
    Likes Received:
    0
    I see. I think I could probably import a maya obj into anim8or or something and then convert it to skm.

    Hmmm, by edit, you mean simply tweaking the base model rather than using a brand new mesh even if its scaled, rotated and positioned the same as the base model because it'll screw with the animation data? If so, that pretty much crimps my plans since I was trying to get my musket model ingame. xD Oh well...

    And as for hex editing, woah boy, I'm a total noob right there. I haven't hexed anything more complex than a Source engine .mdl file. xD

    Thanks for taking the time to reply, XVicious
     
  13. XVicious

    XVicious Established Member

    Joined:
    Jun 21, 2013
    Messages:
    427
    Likes Received:
    8
    dont give up just yet

    [​IMG]


    (for a musket : guide)
    open the crossbow skm with skm2obj, look at the tri counts and point counts
    match the postiion, relation of the original, match the counts or faces and points
    \as you suggested you have done

    wave2skm your obj (re-translated as prev- mentioned.)
    inject crossbow.skm.skb (your.obj.mes)
    inj_insert crossbow.skm (your.obj.mes.inj)

    when it asks you
    do you want to use original face index or counts
    say no!

    because you re-drawn a new set and index (with the same count)
    they would be inserted as you drawn them ,not index like the original

    (dont forget to map the texture ,UV maps)
    if you are missing a texture or any normals maps for lighting
    wave2skm will stall you again.



    (if you match the counts for faces and points you will not
    need to hex edit)

    the tools will do that for you!
     
    Last edited: Aug 26, 2013
  14. salomonkane

    salomonkane Member

    Joined:
    Jan 7, 2010
    Messages:
    8
    Likes Received:
    0
    Feed-Back :

    Hello everyone,

    Hey XVicious,

    Just a little feed-back about your "magic stuff" :

    As you can see, I've been able with SKMToolSet, to export TOEE Troll Model .

    Then, I've rebuild it (rig/skin) and integrate to it custom animations (*),

    Here Mocap & NWN1 animation WIP portage (sprite format & medium .gif) :

    [​IMG]

    [​IMG]

    By cons, I've encounter some import issues, from anim8or to 3ds :

    Issue :

    [​IMG]

    In this case I'had to rebuild some polygons, because translucency/body & head issues .

    Thank's again for your hard work, I've enjoyed a lot to be able to ported model from TOEE to Baldur's Gate, ^^ .

    ToolSet Options Request (About bones & Animation Export) :

    Could we hoping (if it's not possible yet ?) :
    Some TOEE Rigged Models (bones + weight) & Animation Export Options,
    in the next future ... ?

    Cheers :) .

    (*) : In an Baldur's Gate Moding massive animation conversion pipeline Project purpose .

    About :
    Model/Animation/Exchange/Pipeline :
    http://forums.blackwyrmlair.net/index.php?showtopic=5053&pid=50521&st=20&#entry50521
    My TOEE/BG modding investigation (on VFX & before SKMToolSet avenement) :
    http://www.baldursgateworld.fr/lacouronne/menace-sur-le-royaume-de-diamant-eternel/24722-adaptation-des-ressources-de-temple-elemental-evil.html
     
    Last edited: Aug 27, 2013
  15. XVicious

    XVicious Established Member

    Joined:
    Jun 21, 2013
    Messages:
    427
    Likes Received:
    8
    It looks like you need to reverse or flip your normals

    and that would be the fix for your con:

    I have seen that happen in blender,

    select all your faces and flip your normals (front and back),

    that should fix your issue ;)

    Looks great!

    (flip your normals only)
    once you flip them you should see the front of the model rendered, not
    the back, that happens sometimes when the normals are pointing
    the reverse direction, ez fix, reverse or flip them

    the bones+ weights request: the only thing I can say atm about that
    is the *.SKB file exported with the obj carries this data per vertex, but there is no
    tool right now that can translate it for you. for the animimation, all that data is stored in the *.ska files paired with skm in toee. it would apear that TOEE
    is using a script to thread them; such as python to carry out the animations using
    a combo of SKM (originic) and SKA (relative + time frames).

    as far as I know wave OBJ files dont carry bone/weight data any how. It usually
    depends on what model CAD you use to determine its format (for scene's and sequences).
     
    Last edited: Aug 28, 2013
Our Host!