无论我做什么,我都无法在使用react-three纤维导入GLTF模型后获得要更新的纹理。
const { nodes, materials } = useGLTF("/glb4.glb");
const newtexture = useLoader(TextureLoader, "texture1.jpg");
newtexture.flipY = false;
现在我可以写
let newmaterial = new THREE.MeshPhysicalMaterial({ map: newtexture});
使用
将其导入到场景中<mesh
geometry={nodes.Body_Front_Node.geometry}
material={newmaterial}
/>
然而,它会导致没有纹理的灰色材料。即使用新的纹理修改原始的gltf材料也会得到相同的结果。
是否有一种方法可以动态更新gltf模式的纹理?这里是完整的代码盒:https://codesandbox.io/p/github/Mazzz-zzz/fabrigen/main?file=%2Fsrc%2FApp.js
您可以尝试在mesh
下呈现meshStandardMaterial
,并将newmaterial
作为map
prop提供给meshStandardMaterial
。这对我很有效。-
<mesh geometry={nodes.Body_Front_Node.geometry}>
<meshStandardMaterial map={newmaterial} />
</mesh>