» »

Kako nalozim .3DS v OpenGL programcek napisan v C++

Kako nalozim .3DS v OpenGL programcek napisan v C++

Vucko ::

Malo sem zacel programirat OpenGL v Visual C++ in je zelo zanimivo.. Sedaj ko se mi vrtijo razne kugle, kocke in poligoni me zanima se kako nalozit kak model .3DS ?

Hvala

Senitel ::

Klik tukaj, pa si poglej za 3DS. Če kaj nebo jasno vprašaj naprej 8-).

Vucko ::

Hja nevem kaj naj s tem.. tu so samo specifikacije za 3ds file format.. js nebi glih to sam neki programiru zdej nek file importer.. ko nism nek programer.. a ni ze kej naretga na netu..
Js znam glih tok da znam trikotnike pa kvadrate risat pa teksture gor nalepit.. sestavit kocko pa kej podobnega..
Rad bi pa kr kak model iz 3D studia dal not..
Kk si pa ti dal tedi ko si mel en programcek tle na Slo-Techu ko se ti je en objekt vrtel.. Sj a je bil to en programcek tvoj a kk je ze blol..? mensezdi no..

Hvala za nasvete
:)

Senitel ::

Ja jest sem takrat bral direkt iz 3DS-a. Sam tist je že gone... Trenutno bo treba začet eno DX 8.0 zadevo napisat (bo treba - kje sem to že slišal...).
No kar moraš pri 3DS-u vedet, da je sestavljen iz kosov (chunk).
Vsak kos ima na začetku ID, potem pa dolžino kosa (celotno, vključno z ID-jem in dolžino).
Najprej iz 3DS file-a prebereš en DWORD. In če ta DWORD ni enak 0x4D4D, potem to ni 3DS file. Dolžina za tem kosom je pa dolžina celotnega file-a.
In ker je ta kos z oznako 0x4D4D zanimiv, beremo naprej. Najprej preberemo dolžino (še en DWORD), potem pa sledi ID notranjega kosa.
Ta kos ima ID 0x3D3D in označuje vse, kar je nekdo naredil v editorju (brez animacij jasno). Sledi zopet dolžina, ki jo zopet preberemo.
Sedaj pa v datoteki sledi za nas kar nekaj nepomembnih kosov, zato jih preskočimo. To, pa nareditmo tako, da prebereš ID in dolžino (vsako posebej), ugotoviš, da ID ni tisti, ki ga iščemo in nato preskočiš dolžina-8 byteov (pazi na -8 - dolžina glave od kosa).
To ponavljaš, dokler ne najdeš kosa z ID-jem 0x4000. Tukaj se zopet začnejo zanimive stvari in zato vsebine tega kosa ne preskočimo.
Prvi novi podkos bi moral biti že prvi kos s podatki o trikotnikih (nisem pa povsem ziher, če je res prvi tako, da je bolje če iščeš in preskakuješ, dokler ne prideš do tega kosa). Ta kos ima ID 0x4100 (teh kosov je lahko več, za vsak objekt posebej).
V tem kosu (0x4100) nato poiščeš kos z ID-jem 0x4110, in tukaj so končno shranjeni vertexi. Sedaj sledi najprej podatek o številu vertexov (WORD). Sedaj pa sledi še za vsak vertex trojica x,z,y (!) 3x float.
Naslednji kos (0x4120) vsebuje še indekse. Prvi podatek je število trikotnikov (!) in je tipa WORD, nato pa sledi za vsak trikotnik še 4x word, pri čemer so prvi trije podatki ogljišča, četrti pa so zastavice, ki jih običajno ne potrebujemo.

To bi nekako moralo biti dovolj.
Sicer pa ti priporočam, če nisi najbolj vešč programiranja, da se lotiš .ASE file-ov (v 3D Studio MAX daš export pa ASCII Scene Encription). To so navadni tekst file-i, in ko ga odpreš ti bo pomoje vse jasno...

Vucko ::

Ok hvala, bom probu..
Sam dvomim da mi bo kej ratalo..


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Cinema 4D R12

Oddelek: Programska oprema
222422 (1590) Machete
»

[C/C++] pointerji in reference

Oddelek: Programiranje
112041 (1865) Matako
»

Moj novi engine ... preview

Oddelek: Zvok in slika
352494 (1529) TBR
»

Collision detection

Oddelek: Programiranje
81936 (1688) Senitel
»

3d studio max (strani: 1 2 3 )

Oddelek: Zvok in slika
1106366 (5203) bastadu

Več podobnih tem