为导入的gltf模型动态更改三个js中的纹理



无论我做什么,我都无法在使用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作为mapprop提供给meshStandardMaterial。这对我很有效。-

<mesh geometry={nodes.Body_Front_Node.geometry}>
<meshStandardMaterial map={newmaterial} />
</mesh>

最新更新