Comment les fichiers convertis multi-texture obj-> JSON conserve une trace de cartographie texture du visage?

StackOverflow https://stackoverflow.com/questions/9305158

Question

Je suis en train de manuellement (pas libs tels que Three.js) charger un modèle 3D JSON dans mon code WebGL juste pour le plaisir, mais je suis un moment difficile quand mes modèles ont plus de 1 texture. Dans un fichier converti obj-> JSON, comment puis-je savoir quelle texture est pour les « actifs » visages suivi? les fichiers OBJ utilisent balise « usemtl » pour identifier la texture / matériau utilisé, mais je ne peux pas sembler trouver ce genre de pointeur lorsque vous travaillez avec JSONs. Avec le temps, j'utilise le obj-> convertisseur JSON écrit par alteredq

Merci un tas, Rod

Était-ce utile?

La solution

Jetez un oeil à ce fichier. three.js / src / extras / loaders / JSONLoader.js

Le premier élément de chaque face de la matrice de faces du fichier JSON est un champ de bits. Le premier bit dit si ce visage ont trois o quatre indices. Et le second bit dit si ce visage a un matériau affecté. importante de l'indice, le cas échéant, apparaît après des indices.

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

première face (triangle avec le matériau):

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

seconde face (quad sans matériel):

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

troisième face (quad avec du matériel):

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

code de contrôle de source pour son sens de ce champ de bits.

Autres conseils

Dans le obj-> JSON convertisseur je l'ai écrit pour le moteur de jeu KickJS, chaque matériau a sa propre gamme d'indices.

Ce moyen d'un simple modèle OBJ comme

    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

sera traduit dans ce (avec deux indices, l'un pour chaque matériau):

    [
       {
          "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]
       }
    ]

Utilisez le visualiseur de modèles en ligne pour la convertion:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top