Three.js | наложение текстуры из модели Blender - PullRequest
0 голосов
/ 06 мая 2018

Я использую бесплатную 3d модель от turbosquid. Эта модель использует текстуру, которая выглядит следующим образом:

texture

В Blender все выглядит хорошо:

blender_render

Но однажды экспортированный в three.js, кажется, что текстура не соответствует uv-карте:

three_render

Вот код, который я использую:

var loader = new THREE.JSONLoader();
loader.load('json/Ship.json', function ( geometry, materials ) {
        ship = new THREE.Mesh(geometry, materials[0]);
        scene.add(ship);
    }
);

А вот json, который я однажды экспортировал из Blender:

json

Что мне не хватает? Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 07 мая 2018

В этой модели есть некоторые незначительные сложности, которые, как мне кажется, вызывают проблемы у экспортеров Blender. Они не «неправы», но экспортерам трудно справиться без очистки. Вы можете исправить это вручную (откройте файл .blend в Blender, примените модификаторы, удалите все текстуры, кроме diffuse), но самый простой путь - это, вероятно, преобразование версии OBJ, предоставленной Turbosquid, в glTF. Переход к Цезиевому OBJ-> glTF конвертеру (или OBJ2GLTF, если вам нужно что-то программное) и перетаскивание в OBJ / MTL / текстуру даст правильный результат. ПРИМЕЧАНИЕ: вам нужно переместить файл sh3.jpg в тот же каталог, что и файл MTL; его не должно быть в папке Textures/.

Результат на https://gltf -viewer.donmccurdy.com / - с использованием three.js r92 и THREE.GLTFLoader.

enter image description here

...