为什么 setFromMatrix() 位置不起作用?



我正在使用3D对象,突然有这个问题。我将场景保存在服务器中,这样当我刷新网页时,场景中的对象就不会消失,但问题是场景中的对象不在正确的位置,它们总是在(0,0,0)位置,我认为这不应该发生,因为我已经在渲染前设置了它的位置,但我不知道我是否这样做是正确的。

const ObjectBuilder = (props) => {
const { geometry, object } = props;
const objRef = useRef();
const matrix = new THREE.Matrix4();
const loader = new THREE.BufferGeometryLoader();
const position = new THREE.Vector3();
const parsedGeom = loader.parse( geometry );
matrix.set(...object.matrix);
position.setFromMatrixPosition( matrix );
const handleClick = (e) => {
e.stopPropagation();
props.click({ data: objRef });
}
console.log('matrix', matrix); //elements: [0, 0, 1111, 0, 50, 0, 0, 0, 0, 50, 0, 0, 0, 0, 1]
console.log('position:', position); // x: 0, y:0, z:0
return(
<mesh
name="map_object"
ref={objRef}
onClick={handleClick}
receiveShadow
castShadow
scale={50}
geometry={parsedGeom}
position={position}
matrix={matrix}
>   
<meshStandardMaterial
color="white"
metalness={0.3}
roughness={0.5}
/>  
</mesh>
);
}

提前感谢你们!

console.log('matrix', matrix);//元素:[0 0 0 1111年,50岁,0,0,0,0,0,0,0,0,1]

这看起来不对。你的评论只显示了15个数组元素,尽管elements属性应该包含16个。

假设objectTHREE.Object3D的一个实例,下面一行也不正确。

matrix.set(...object.matrix);

不能对THREE.Matrix4实例使用扩展操作符。

最新更新