在 React-three-fiber 中动态编辑 GLTF 模型 Material

Dynamically Edit Material on GLTF Model in React-three-fiber

我正在尝试在简单的反应三纤维场景中动态更改“.gltf”模型的纹理贴图值。如果我理解正确,您必须在 material 上添加纹理文件,然后将 material 添加到模型中吗?在我的场景中,纹理文件被烘焙到“.gltf”文件中。我想用 jsx 更改值,例如 alphaMap 的不透明度。

这是我的沙箱:https://codesandbox.io/s/patient-framework-3holn?file=/src/App.js

我知道这可能真的很简单,但我没有头绪。谢谢!

您可以轻松地操纵场景中对象的属性,无论原始对象是否已烘焙到您的 GLTF 文件中。例如,您可以像这样更改 material 的主要纹理 您的 GLTF 加载后:

var texLoader = new THREE.TextureLoader();
var newTexture = texLoader.load("my/new/texture.jpg");
object.material.map = newTexture;

要么这样做:

<mesh geometry={...}>
  <meshStandardMaterial color={materials.Moon.color} transparent opacity={0.5} />

或者这个:

<mesh geometry={...} material={materials.Moon} material-transparent material-opacity={0.5} >

dash case可以打多深,也可以修改纹理值:

<mesh ... material-map-flipY>

参见:https://github.com/pmndrs/react-three-fiber/blob/master/markdown/api.md#piercing-into-nested-properties