Avatar billede anjensen1 Novice
11. juni 2005 - 12:57 Der er 2 kommentarer og
1 løsning

3d .c fil -static int cylinder01_indicesArray -Hvad vises?

egentlig bør titlen være:
"3d .c fil -static int cylinder01_indices[] -Hvad vises?"
Men E accepterer ikke [] -nå..


Jeg søger oplysninger på hvad det er strukturen
"_indices[]" egentlig indeholder
Her er et snip:
static int myObj_indices[] = {
    0, 2, 1,
    0, 3, 2,
    4, 6, 5,
    4, 7, 6,
    8, 10, 9,.......
}

.c 3d formatet indeholder desuden de 2 struktuer
_coords[]
_texcoords[]
og
_normals[]
De strukts. er jeg 100% klar over
Problemet ligger i hvordan "_indices[]" spiller -sammen- med _coords[] og _normals[] ..
(hvis der da er en sammenhæng..)
pft.
Avatar billede anjensen1 Novice
12. juni 2005 - 17:06 #1
:) njeh 3d.c er ikke et generisk format.. Det er specifikt
Trækker spørgsmålet tilbage, for det er der ingen der kan sige noget om -sorry
Avatar billede jpk Nybegynder
13. juni 2005 - 09:00 #2
Jeg går ud fra du ved lidt om 3D-geometri, siden du arbejder med ovenstående, men hvis du er i tvivl om noget i mit svar, skal bu bare spørge...

I 3D-grafik programmering bruger man ofte indekserede vertices (koordinater) til at beskrive sine primitives. Det giver nemlig ofte bedre performance.

Forestil dig at du skal rendere en simpel firkant og du anvender trekanter som primitiver (det gør stort set alle idag) samt at din 3D-engine anvender counter-clockwise culling (ex DirectX).
Det kræver altså 2 trekanter at lave én firkant.

Om understående skitse vil blive formateret rigtig ved jeg ikke, men ellers se bort fra den... (det skulle forestille en firkant sammensat of 2 trekanter)
____
|  /|
|  / |
| /  |
|/___|


Vertices kunne se sådan ud:

0: (-1, -1, 0)
1: (-1, 1, 0)
2: (1, 1, 0)
3: (1, -1, 0)
4: (-1, -1, 0)
5: (1, 1, 0)


Samme firkant kunne imidlertid laves med:

0: (-1, -1, 0)
1: (-1, 1, 0)
2: (1, 1, 0)
3: (1, -1, 0)

og indices:

0: 0
1: 1
2: 2
3: 3
4: 0
5: 2


Fordelen er altså at man angiver hvilke punkter der indgår i en trekant. 0-2 er første trekant, 4-5 er den anden trekant.
Det vil naturligvis kun være en fordel hvis flere trekanter deler samme koordinater, det er dog ofte tilfældet!

Det virker måske som om det kræver mere hukommelse, men det er netop ikke tilfældet hvis en del trekanter deler samme koordinater. Husk på at hver vertex (koordinat) typisk bruger 3 floats, mens et index "kun" bruger én heltalsværdi.


Altså, efter min mening er _indices arrayet du ser i koden, netop beregnet til overstående formål.
Avatar billede anjensen1 Novice
23. juni 2005 - 12:00 #3
Tak for indputtet jpk! Jeg er kommet videre med det :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester