Frage

Ich versuche manuell (keine Bibliotheken wie drei.js) ein JSON 3D -Modell in meinen WebGL -Code zu laden, aber es fällt mir schwer, wenn meine Modelle mehr als eine Textur haben. Woher weiß ich in einer über konvertierten OBJ-> JSON-Datei, welche Textur für die folgenden Gesichter "aktiv" ist? OBJ -Dateien verwenden 'Usemtl' Tag, um das verwendete Textur/das verwendete Material zu identifizieren, aber ich kann diesen Zeiger bei der Arbeit mit Jsons nicht finden. Mit der Zeit verwende ich den obj-> JSON-Konverter von geschrieben von Alteredq

Danke ein Haufen, Rod

War es hilfreich?

Lösung

Schauen Sie sich diese Datei an: three.js / src / extras / loaders / JSONLoader.js.

Das erste Element jedes Gesichts in der faces Array der JSON -Datei ist ein Bitfeld. Das erste Bit besagt, ob dieses Gesicht drei O vier Indizes hat. Und das zweite Bit sagt, ob dieses Gesicht ein Material zugewiesen ist. Der Materialindex erscheint nach Indizes, falls vorhanden.

Beispiel: faces: [2, 46, 44, 42, 0, 1, 45, 46, 48, 3, ...

Erstes Gesicht (Dreieck mit Material):

Type: 2 (00000010b)
Indices: 46, 44, 42
Material index: 0

Zweites Gesicht (Quad ohne Material):

Type: 1 (00000001b)
Indices: 45, 46, 48

Drittes Gesicht (Quad mit Material):

Type: 3 (00000011b)
Indices: ...

Überprüfen Sie den Quellcode für die vollständige Bedeutung dieses Bitfeldes.

Andere Tipps

In dem Obj-> JSON-Konverter, den ich für die Kickjs Game Engine geschrieben habe, hat jedes Material seine eigene Indizesspanne.

Dies bedeutet ein einfaches OBJ -Modell wie z.

    mtllib plane.mtl
    o Plane
    v 1.000000 0.000000 -1.000000
    v 1.000000 0.000000 1.000000
    v -1.000000 0.000000 1.000000
    v -1.000000 0.000000 -1.000000
    usemtl Material
    s 1
    f 2 3 4
    usemtl Material.001
    f 1 2 4

Würde in dieses übersetzt werden (mit zwei Indizes; eine für jedes Material):

    [
       {
          "vertex": [1,0,1,-1,0,1,-1,0,-1,1,0,-1],
          "name": "Plane mesh",
          "normal": [0,-1,0,0,-1,0,0,-1,0,0,0,0],
          "indices0": [0,1,2],
          "indices1": [3,0,2]
       }
    ]

Verwenden Sie den Online -Model Viewer für die Konvertion:

http://www.kickjs.org/example/model_viewer/model_viewer.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top