Как загружать файлы mtl с помощью gltf в react-three-fiber

#reactjs #three.js #gltf #react-three-fiber

#reactjs #three.js #gltf #react-three-fiber

Вопрос:

Я загрузил набор файлов с сайта и экспортировал файлы glb, gltf и mtl в blender. Я могу заставить файл glb или gltf отображаться в сцене react-three-fiber, но я не уверен, как правильно отобразить текстуры. Я наткнулся на пару демонстраций, но они кажутся старыми и что бы не работало.

Вот как я загружаю файл.

 import desk from '../../assets/desk.gltf'; // or .glb file

const [gltf, set] = useState();
useMemo(() => new GLTFLoader().load(desk, set), []);
return gltf ? <primitive object={gltf.scene} scale={[0.05, 0.05, 0.05]} position={[0,0,1]} 
rotation={[Math.PI/2,Math.PI,0]}/> : null
 

Ответ №1:

Боюсь, вы смешиваете две темы. MTL файлы относятся к OBJ формату. Это означает, что визуальные аспекты геометрии активов хранятся в одном или нескольких внешних MTL файлах.

glTF для этого нет отдельных файлов. Определения материалов определяются непосредственно в манифесте glTF JSON. Таким образом, загрузка фактического ресурса glTF достаточна для загрузки определений материалов.

Комментарии:

1. ОК. Это имеет смысл. У меня возникла проблема, когда каждый файл, который я загружаю с разных сайтов, отображается серым цветом без текстуры. Когда я импортирую их в Blender, происходит то же самое, даже если эти файлы присутствуют в папке.

2. При использовании glTF лучше всего работать с glb файлами, поскольку все ресурсы (JSON-манифест glTF, двоичные файлы, текстуры) упакованы в один двоичный архив.

3. Окно просмотра макета по умолчанию в Blender изначально отображается серым цветом без текстуры. Вы должны нажать «предварительный просмотр материала» или перейти на панель «Затенение», чтобы увидеть текстуры в Blender.