【发布时间】:2021-08-18 09:53:32
【问题描述】:
我正在使用 react-three-fiber 开发我的第一个应用程序。我目前像这样生成视口:
const Viewport = (props) => {
return (
<Canvas
onCreated={({ gl, raycaster }) => {
gl.setClearColor("darkgrey");
props.setraycaster(raycaster);
}}
>
{/* Canvas Config */}
<CameraControls />
<ambientLight intensity={0.5} />
{/* Objects */}
{props.scene.objects.map((o, i) => (
<Suspense fallback={<LoadingBox />} key={i}>
<Element3D obj={o} displaymode={props.displaymode} key={i} />
</Suspense>
))}
</Canvas>
);
};
如您所见,我正在对应该在道具的视口中显示的内容进行建模,然后将它们显示为画布中的 Element3D 组件。
我还想在我的应用程序的另一部分进行光线投射,以检查对象之间的遮挡。为此,我需要告诉光线投射器它应该考虑的所有对象。
所以,我需要一个最终出现在我的 Canvas 上的所有 Object3D 的列表。我的问题是如何获得这样的清单。
如果你需要知道,这是 Element3D 组件的重要部分:
const scene = useLoader(OBJLoader, props.obj.meshPath);
return (
<primitive object={scene.children[0]}>
{
<meshBasicMaterial
attach="material"
transparent
side={THREE.DoubleSide}
>
<primitive attach="map" object={texture} />
</meshBasicMaterial>
}
</primitive>
)
【问题讨论】:
标签: three.js react-three-fiber