gpt4 book ai didi

three.js - 如何转换可见光线threejs

转载 作者:行者123 更新时间:2023-12-04 23:19:31 24 4
gpt4 key购买 nike

我想瞄准具有相机视觉的物体(因为用户会看着物体,而不是用鼠标指向它)。

我正在像这样从相机转换光线

rotation.x = camera.rotation.x;
rotation.y = camera.rotation.y;
rotation.z = camera.rotation.z;
raycaster.ray.direction.copy( direction ).applyEuler(rotation);
raycaster.ray.origin.copy( camera.position );

var intersections = raycaster.intersectObjects( cubes.children );

这让我找到了交叉点,但有时似乎会徘徊。所以我想添加目标(十字准线)。这将是光线末端或中间的物体(网格)上的某种东西。

我怎样才能添加它?当我创建一条常规线时,它位于相机前面,因此屏幕会变黑。

最佳答案

您可以将一个由简单几何体构建的十字准线添加到您的相机中,如下所示:

var material = new THREE.LineBasicMaterial({ color: 0xAAFFAA });

// crosshair size
var x = 0.01, y = 0.01;

var geometry = new THREE.Geometry();

// crosshair
geometry.vertices.push(new THREE.Vector3(0, y, 0));
geometry.vertices.push(new THREE.Vector3(0, -y, 0));
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
geometry.vertices.push(new THREE.Vector3(x, 0, 0));
geometry.vertices.push(new THREE.Vector3(-x, 0, 0));

var crosshair = new THREE.Line( geometry, material );

// place it in the center
var crosshairPercentX = 50;
var crosshairPercentY = 50;
var crosshairPositionX = (crosshairPercentX / 100) * 2 - 1;
var crosshairPositionY = (crosshairPercentY / 100) * 2 - 1;

crosshair.position.x = crosshairPositionX * camera.aspect;
crosshair.position.y = crosshairPositionY;

crosshair.position.z = -0.3;

camera.add( crosshair );
scene.add( camera );

三.js r107

http://jsfiddle.net/5ksydn6u/2/

如果你没有一个特殊的用例,你需要像你正在做的那样从你的相机中检索位置和旋转,我想你的“徘徊”可以通过使用这些参数调用你的 raycaster 来解决:
raycaster.set( camera.getWorldPosition(), camera.getWorldDirection() );
var intersections = raycaster.intersectObjects( cubes.children );

转换可见光线
然后,您可以通过使用箭头助手绘制箭头来在 3D 空间中可视化您的光线转换。在您的光线转换之后执行此操作:
scene.remove ( arrow );
arrow = new THREE.ArrowHelper( camera.getWorldDirection(), camera.getWorldPosition(), 100, Math.random() * 0xffffff );
scene.add( arrow );

关于three.js - 如何转换可见光线threejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31655888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com