Three.js中的度量单位是什么



假设我有一个网格。并希望使用以下方法在3D中定位:

mesh.position.set(5, 5, 5);

这些数字是多少?我确信x不是5像素。例如:

mesh.position.x 

确实会返回5,但这是事情变得棘手的地方。

我使用光线投射器是为了知道鼠标在哪里,它是标准化坐标系或像素,使用以下方法:

function onMouseMove(event){ // Calculate mouse movements
// Normalized Coordinate System
mouse.ncs.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.ncs.y = - (event.clientY / window.innerHeight) * 2 + 1;
// Pixel coordinates
mouse.p.x = event.clientX;
mouse.p.y = event.clientY;            
};

但是我怎么说5等于这个像素量呢?如有任何帮助,我们将不胜感激。

使用Raycaster.setFromCamera()时,必须使用归一化坐标,因此从[-1, 1]开始,看起来你已经在转换为它。3D世界的测量单位无关紧要,光线会计算它是否与对象相交。请尝试在文档中遵循此示例。

为了回答您最初的问题,Three.js和WebGL本身就是"无单元的"。你可以假设单位是英寸、米,无论你想要它们是什么。唯一重要的单位是THREE.CSS3DRenderer,其中单位是像素和无单位的混合,因为你处理的是HTML元素。

最新更新