【发布时间】:2021-10-18 03:15:00
【问题描述】:
【问题讨论】:
标签: reactjs three.js react-three-fiber
【问题讨论】:
标签: reactjs three.js react-three-fiber
您可以use refs to access underlying objects,从而修改它们的位置、旋转等。
由于PerspectiveCamera 是Object3D,您可以将此网格添加为子网格,以便它们一起移动。
import { useRef } from 'react';
import { useThree } from '@react-three/fiber';
const MyMesh = () => {
const { camera } = useThree();
const ref = useRef();
useEffect(() => {
// Add mesh to camera
const meshRef = ref.current;
camera.add(meshRef);
// Cleanup on unmount
return () => {
camera.remove(meshRef);
};
}, [camera, ref.current]);
return <mesh ref={ref} position={[0, 0, -5]} />;
};
在这里,我通过 useThree 钩子通过其上下文访问 Fiber 的摄像头。
或者,您可以在每一帧复制相机的属性并应用偏移量。这将导致相同的显示行为。
您可以通过useFrame 挂钩访问渲染循环。这在三个内部运行,因此在 React 中没有开销。值得注意的是,您也可以从钩子的回调中访问 Fiber 的上下文。
import { useRef } from 'react';
import { useFrame } from '@react-three/fiber';
const MyMesh = () => {
const ref = useRef();
useFrame(({ camera }) => {
// Move mesh to be flush with camera
ref.current.position.copy(camera.position);
ref.current.quaternion.copy(camera.quaternion);
// Apply offset
ref.current.translateZ(-5);
});
return <mesh ref={ref} />;
};
【讨论】: