Kartering van Wavefront .obj se vt na OpenGL tekstuur koördinate
Vra
'n kunstenaarsvriend het vir my 'n .obj-lêer gestuur wat deur 3DS Max 2009 uitgevoer is wat drie tekstuurkoördinate bevat as parameters vir die vt
bevel.En dit is korrek volgens .obj spesifikasie.Ek is egter nie seker hoe om U-V-W-koördinate te karteer wat voorsien word vir 'n gewone 2D .jpg-tekstuur nie.
Dit is relatief belangrik vir my, aangesien ek met 3DS Max gespeel het en probeer uitvind hoe om dit te dwing om net U-V-koördinate uit te voer, maar daar blyk geen eenvoudige manier te wees nie.In hierdie geval is dit net 'n skybox, maar in ander gevalle is dit dalk iets meer kompleks en nie met die hand regmaakbaar nie.
Dankie!
Oplossing
Daar is 'n artikel in die artikel Wat Is UVW Mapping wat verduidelik?:
Jy kan die vraag waarom jy 'n behoefte diepte koördineer soos W vir 'n 2D vliegtuig. Een rede hiervoor is omdat dit soms nuttig om in staat wees om om te draai die geaardheid van 'n kaart, in vergelyking met sy meetkunde. Om dit te doen, moet jy die derde koördineer. Die W koördineer het ook 'n betekenis vir 3-dimensionele prosedurele materiaal.
In jou geval, jy kan eenvoudig die W ignoreer koördineer en lees net die eerste twee dryf van lyne wat met 'vt
. Dit veronderstel dat jy nie baie bekommerd oor die ekstra ruimte geneem deur die W koördineer sedert obj is nogal 'n ondoeltreffende lêer formaat te begin met.
Ek persoonlik hou nie van die gebruik van obj in OpenGL, want dit bied toppunt normals per gesig in plaas van per toppunt. Om 'n voorwerp te steek behoorlik moet jy óf dupliseer hoekpunte of bereken normals deur die gemiddeld van die omliggende toppunt normals in 'n gesig. As jy wil meer doeltreffend alternatiewe verken, 'n blik op binêre formate, soos die deeglik gedokumenteer .md2 formaat. Ook oorweeg om glDrawElements as jy dit nie reeds is gebruik te maak van.
Ander wenke
jammer as ek jou vraag verkeerd verstaan.Maar kan jy nie net die derde parameter, w, ignoreer nie?Soos ek dit verstaan, is w net 'n koördinaat in 'n vlak loodreg op die vlak wat deur u en v beskryf word, so dit is selde nodig vir eenvoudige 2d-tekstuurkartering.
hoop dit help.