Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何在react三光纤中使用gltf加载mtl文件_Reactjs_Three.js_Gltf_React Three Fiber - Fatal编程技术网

Reactjs 如何在react三光纤中使用gltf加载mtl文件

Reactjs 如何在react三光纤中使用gltf加载mtl文件,reactjs,three.js,gltf,react-three-fiber,Reactjs,Three.js,Gltf,React Three Fiber,我从一个站点下载了一组文件,并在blender中导出了glb、gltf和mtl文件。我可以在react three fiber场景中显示glb或gltf文件,但我不确定如何正确显示纹理。我遇到过一些演示,但它们看起来很旧,而且不起作用 下面是我加载文件的方式 import desk from '../../assets/desk.gltf'; // or .glb file const [gltf, set] = useState(); useMemo(() => new GLTFLoa

我从一个站点下载了一组文件,并在blender中导出了glb、gltf和mtl文件。我可以在react three fiber场景中显示glb或gltf文件,但我不确定如何正确显示纹理。我遇到过一些演示,但它们看起来很旧,而且不起作用

下面是我加载文件的方式

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
从“../../assets/desk.gltf”导入桌面;//或.glb文件
const[gltf,set]=useState();
UseMoom(()=>new GLTFLoader().load(桌面,集合),[]);
返回gltf?:无效的

恐怕您混淆了两个主题
MTL
文件与
OBJ
格式相关。这意味着资产几何图形的视觉方面存储在一个或多个外部
MTL
文件中


glTF
没有单独的文件。物料定义直接在
glTF
JSON清单中定义。因此,加载实际glTF资产足以加载物料定义。

OK。这是有道理的。我有一些问题,我从各个网站下载的每个文件都显示为灰色,没有纹理。当我将它们导入Blender时,即使文件夹中存在这些文件,也会发生同样的情况。使用glTF时,最好使用
glb
文件,因为所有资产(glTF JSON清单、二进制文件、纹理)都打包在一个二进制存档中。Blender的默认布局视口最初显示为灰色,没有纹理。您必须单击“材质预览”或访问“着色”面板才能在Blender中查看纹理。