2010-02-23 13 views
2

J'utilise le chargeur 3DS ici:modèle 3DS chargement - arbre/hiérarchies

http://www.flipcode.com/archives/Another_3DS_LoaderViewer_Class.shtml

Il fait un bon travail de chargement et le rendu du modèle, mais il manque de sens de heirarchy. Par conséquent, tous les objets du modèle sont rendus à l'origine.

Dans le code sous: void Model_3DS::MainChunkProcessor(long length, long findex) est la ligne:

// I left this in case anyone gets very ambitious 
case KEYF3DS : 
    //KeyFrameChunkProcessor(h.len, ftell(bin3ds)); 
    break; 

Personne n'a mis en œuvre ce partout, et je ne vois pas d'autres chargeurs 3DS qui mettent en œuvre aussi. Les gens semblent seulement poster et jusqu'à ce qu'ils atteignent ce point d'avoir été satisfaits de tout ce qui rend à l'écran du tout.

À quoi ressemblerait KeyFrameChunkProcessor?

+1

comme sidenote, je la fin utilisé la bibliothèque ASSIMP pour charger les 3ds et récupérer le heirarchy –

Répondre

2

Google m'a conduit here:

Keyframer chunk 
--------------- 

    id   Description 
    ----  ----------- 
    B00A  unknown 
    7001  See first description of this chunk 
    B008  Frames 
    B009  unknown 
    B002  Start object description 

* B008 - Frame information 

simple structure describing frame info 

start end size type   name 
    0 3 4 unsigned long start frame 
    4 7 4 unsigned long end frame 

*B002 - Start of Object info 

Subhunks 

    id  Description 
    ---- ----------- 
    B010 Name & Hierarchy 
    B011* Name Dummy Object 
    B013 unknown 
    B014* unknown 
    B015 unknown 
    B020 Objects pivot point ? 
    B021 unknown 
    B022 unknown 
    B030 unknown 

* B010 - Name & Hierarchy descriptor 

start end size type   name 
0  ? ? ASCIIZ  Object name 
?  ? ? unsigned int unknown 
?  ? ? unsigned int unknown 
?  ? ? unsigned int Hierarchy of Object 

The object hierarchy is a bit complex but works like this. 
Each Object in the scene is given a number to identify its 
order in the tree. Also each object is orddered in the 3ds 
file as it would appear in the tree. 
The root object is given the number -1 (FFFF). 
As the file is read a counter of the object number is kept. 
Is the counter increments the object are children of the 
previous objects.But when the pattern is broken by a number 
what will be less than the current counter the hierarchy returns 
to that level. 

for example. 

    object hierarchy 
    name 

     A  -1 
     B  0     This example is taken 
     C  1     from 50pman.3ds 
     D  2 
     E  1     I would really reccomend 
     F  4     having a look at one of the 
     G  5     examples with the hierarchy 
     H  1     numbers to help work it out. 
     I  7 
     J  8 
     K  0 
     L  10 
     M  11 
     N  0 
     O  13 
     P  14 


          A 
     +-----------------+----------------+ 
     B     K    N 
    +----+----+   +    + 
    C E H   L    O 
    + + +   +    + 
    D F I   M    P 
     + + 
     G J 

Still not done with this chunk yet ! 
If the object name is $$$DUMMY then it is a dummy object 
and therefore you should expect a few extra chunks.