¿Cómo se realiza el rastro de los archivos convertidos de múltiples texturas para la asignación de textura facial?

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

Pregunta

Estoy tratando de cargar manualmente (sin LIB como tres.js) cargar un modelo JSON 3D en mi código WebGL solo por diversión, pero estoy pasando mal cuando mis modelos tienen más de 1 textura. En un archivo OBJ-> JSON convertido, ¿cómo sé qué textura es la "activa" para las caras que siguen? Los archivos OBJ usan la etiqueta 'usemtl' para identificar la textura/material en uso, pero parece que no puedo encontrar ese tipo de puntero cuando trabajo con JSONS. Con el tiempo, estoy usando el convertidor obj-> json escrito por alteredq

Muchas gracias, barra

¿Fue útil?

Solución

Eche un vistazo a este archivo: three.js / src / extras / loaders / JSONLoader.js.

El primer elemento de cada cara en el faces La matriz del archivo JSON es un campo un poco. El primer bit dice que si esa cara tiene tres o cuatro índices. Y el segundo bit dice que si esa cara tiene un material asignado. El índice de material, si los hay, aparece después de los índices.

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

Primera cara (triángulo con material):

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

Segunda cara (quad sin material):

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

Tercera cara (quad con material):

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

Verifique el código fuente en busca de significado completo de ese campo Bit.

Otros consejos

En el convertidor OBJ-> JSON que he escrito para el motor de juego Kickjs, cada material tiene su propia gama de índices.

Esto significa un modelo OBJ simple como

    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

Se traduciría a esto (con dos índices; uno para cada 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]
       }
    ]

Use el Visor de modelos en línea para la converción:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top