Kam*_*cki 4 three.js reactjs react-three-fiber
在我的应用程序中,我想向加载的 .obj 模型添加纹理。我的 .fbx 加载模型也有同样的情况。下面是我的示例代码,但这仅适用于 sphereGeometry 等内容,不适用于加载的模型。
提前致谢!
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader'
import { useTexture } from '@react-three/drei'
const OBJModel = ({ file }: { file: string }) => {
const obj = useLoader(OBJLoader, file)
const texture = useTexture(textureFile)
return (
<mesh>
<primitive object={obj} />
<meshStandardMaterial map={texture} attach="material" />
</mesh>
)
}
Run Code Online (Sandbox Code Playgroud)
primitive不是网格的子集。它可以是 的子级group。primitive 需要几何形状和材料作为道具。Mesh 需要几何形状和材料作为道具。很明显,两者不能用作彼此的子集。Mesh或primitive. 我建议使用Mesh它有丰富的文档。primitive没有足够的记录。OBJ的通过useLoader里面可能有复杂的群体。模型通常包含较大的集合,例如group或scene。组和场景不能有纹理。Mesh能。OBJ(result of useLoader) = scene => group => mesh => geometry, texture
Run Code Online (Sandbox Code Playgroud)
需要遍历才能从网格中获取几何图形。
OBJ(result of useLoader) = scene => group => mesh => geometry, texture
Run Code Online (Sandbox Code Playgroud)
我已经在codesandbox中实现了它。这是工作代码:
https://codesandbox.io/s/crazy-dawn-i6vzb?file=/src/components/Rock.tsx:257-550
| 归档时间: |
|
| 查看次数: |
5343 次 |
| 最近记录: |