Как мульти-текстурные OBJ-> JSON-конвертированные файлы отслеживают отображение текстур лица? - PullRequest
1 голос
/ 16 февраля 2012

Я пытаюсь вручную (без библиотек, таких как Three.js) загрузить 3D-модель JSON в мой код webGL просто для удовольствия, но мне трудно, когда мои модели имеют более 1 текстуры.В конвертированном в OBJ-> JSON файле, как узнать, какая текстура является «активной» для следующих граней?Файлы OBJ используют тег 'usemtl' для определения используемой текстуры / материала, но я не могу найти такой указатель при работе с JSON.Со временем я использую конвертер OBJ-> JSON, написанный alteredq

Спасибо большое, Rod

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Посмотрите на этот файл: three.js / src / extras / loaders / JSONLoader.js.

Первый элемент каждого лица в массиве faces файла JSON - это битовое поле.Первый бит говорит, есть ли у этого лица три или четыре индекса.И второй бит говорит, если этому лицу назначен материал.Индекс материала, если таковой имеется, появляется после индексов.

Пример: faces: [2, 46, 44, 42, 0, 1, 45, 46, 48, 3, ...

Первая грань (треугольник с материалом):

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

Вторая грань (квад без материала):

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

Третье лицо (четверка с материалом):

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

Проверьте исходный код на полное значение этого битового поля.

0 голосов
/ 16 февраля 2012

В конвертере OBJ-> JSON, который я написал для игрового движка KickJS, каждый материал имеет свой собственный диапазон индексов.

Это означает простую модель OBJ, такую ​​как

    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

Будет переведено в это (с двумя индексами; один для каждого материала):

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

Используйте онлайн-просмотрщик моделей для преобразования:

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

...