Ich versuche, ein einfaches Google-Objekt, das von Google SketchUp 8 Pro generiert wurde, auf meine WebGL-App zu zeichnen. Das Modell ist ein einfacher Zylinder.
Ich habe die exportierte Datei geöffnet und die Eckpunkte, Indizes, Normalen und Texturkoordinaten in eine .json-Datei kopiert, um sie in Javascript verwenden zu können. Alles scheint gut zu funktionieren, bis auf die Texturkoordinaten, die einige ziemlich große Werte haben, wie 46.331676 und auch negative Werte. Jetzt weiß ich nicht, ob ich falsch liege, aber sollen 2D-Texturkoordinaten nicht nur in einem Bereich von 0,0 bis 1,0 liegen?
Wenn ich das Modell mit diesen Texturkoordinaten zeichne, sehe ich total komisch aus, und ich kann die Textur nur dann richtig sehen, wenn ich dem Modell sehr nahe bin (nicht wirklich ich, die Kamera), als ob die Textur wahnsinnig gewesen wäre in seiner Größe reduziert und unendlich über die Gesichter des Modells wiederholt. (Ja, ich benutze GL_REPEAT für dieses Textur-Wrap-Ding.)
Was mir aufgefallen ist, dass ich, wenn ich alle diese Koordinaten erhalte und durch 10 oder 100 dividiere, ein viel "normales" Aussehen bekomme, aber immer noch nicht im Bereich von 0,0 bis 1,0.
Hier ist meine JSON-Datei: http://pastebin.com/Aa4wvGvv
Hier sind meine GLSL-Shader: http://pastebin.com/DR4K37T9
Und hier ist die von SketchUp exportierte .X-Datei: http://pastebin.com/hmYAJZWE
Ich habe auch versucht, dieses Modell mit XNA zu zeichnen, aber es funktioniert immer noch nicht. Verwenden dieser HLSL-Shader: http://pastebin.com/RBgVFq08
Ich habe versucht, dasselbe Modell in verschiedene Formate zu exportieren: collada, fbx und x. All das ergibt das Gleiche.
Es sieht so aus, als würde SketchUp Ihre Texturkoordinaten nicht normalisieren oder eine eigene Metrik verwenden. Wenn Sie Texcoords <0 oder> 1 und GL_REPEAT als Texturumbruch verwenden, wird die Textur entsprechend der Geometrie verkleinert und horizontal und vertikal wiederholt.
Versuchen Sie, das Netz in ein anderes Modellierungspaket (MilkShape, Blender) zu importieren und die UV-Karte von dort aus zu reparieren.
quelle