Как загрузить текстуры для obj?

Я пытаюсь загрузить .obj с несколькими текстурами .jpgs. Мой .obj выполняет рендеринг, но без применения материала.

.Mtl выглядит как

newmtl material_0
Ka 0.200000 0.200000 0.200000
Kd 1.000000 1.000000 1.000000
Ks 1.000000 1.000000 1.000000
Tr 1.000000
illum 2
Ns 0.000000
map_Kd tex_0.jpg

Я предполагаю, что путь к .jpgs правильный - если я его изменю, я увижу в консоли ошибку 404.

Мой код кадра:

 <a-scene>
    <a-assets>
           <a-asset-item id="moore-obj" src="obj/moore.obj"></a-asset-item>
           <a-asset-item id="moore-mtl" src="obj/moore.obj.mtl"></a-asset-item>
     </a-assets>
     <a-entity
          obj-model="obj: #moore-obj; mtl: #moore-mtl"
          scale="1 1 1"
          rotation="0 0 0"
          position="1 1 1"></a-entity>
 </a-scene>

3D-модель появляется в сцене, но на нее нет наложенных текстур. Я запускаю это на локальном хосте и не вижу предупреждений CORS.

Объект - http://www.thingiverse.com/thing:36415.


person Terence Eden    schedule 28.07.2016    source источник
comment
Это интересно. На первый взгляд все выглядит квадратным. Какой тип локального сервера вы используете?   -  person ngokevin    schedule 28.07.2016
comment
Простой HTTP-сервер Python. Мне интересно, связано ли это с размером объекта?   -  person Terence Eden    schedule 29.07.2016
comment
Какой URL для 404-го вы видите? Я предполагаю, что просто нужно убедиться, что tex_0.jpg находится в правильной папке. Он должен находиться в том же месте, что и файл mtl.   -  person brianpeiris    schedule 02.08.2016


Ответы (1)


Оказывается, проблема именно в этом файле OBJ. Он использует три материала, но не определяет группы объектов для подобъектов, которые используют каждый из этих материалов, поэтому OBJLoader Three.js не связывает материалы правильно.

Вы можете обойти это, добавив групповые строки перед каждой usemtl строкой в ​​obj-файле.

Например:

g g_0
usemtl material_0
...
g g_1
usemtl material_1

и Т. Д.

person brianpeiris    schedule 13.08.2016