javascript - Three.js 寻找屏幕边缘二维投影的位置

标签 javascript three.js html5-canvas

我正在使用此答案的代码来查找 Three.js 中 3D 对象的屏幕位置:

Converting 3D position to 2d screen position [r69!]

我正在从场景中 3d 对象的位置到屏幕上的 2d 点绘制一条 2d 线。有时 3D 对象位于视口(viewport)之外。在这种情况下,我想从屏幕上的 2d 点到看不见的物体的边缘画一条线,但我希望它在正确的 Angular 和正确的位置上是准确的。

有人有什么建议吗?

最佳答案

您可以使用 THREE.Line() 对象 Material 的 THREE.Raycaster().depthTest = false 属性来做那个“把戏”。

raycaster.setFromCamera(mouse, camera);
raycaster.ray.at(1, dummyObject.position);

它为我们提供了一个距离相机不远(1 个单位)的点,您可以从该点将线的起点设置为对象。

还有

var line = new THREE.Line(lineGeom, new THREE.LineBasicMaterial({ color: color }));
line.material.depthTest = false;

该线始终可见,并且不能被其他对象隐藏。

jsfiddle例子。您可以使用缩放和旋转来使链接到红点的对象移出视口(viewport),并且红色链接线将处于直 Angular 。

关于javascript - Three.js 寻找屏幕边缘二维投影的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41715085/

相关文章:

javascript - 究竟如何进行这个循环的进步呢? (兼容Internet Explorer 9,时间准确)

javascript - 放大 HTML5 Canvas

javascript - 匹配日期格式的正则表达式

Three.js:使图像纹理贴合物体而不扭曲或重复

javascript - OrbitControls 不适用于加载文件

javascript - Canvas 到 svg 用动画翻译

javascript - Elfinder:添加关闭按钮

javascript - Jquery rpg游戏逻辑并将数据推送到html

javascript - 从其他 div 的 onClick 更改悬停按钮类

javascript - three.js 问题 : application suddenly wont work on Chrome - old code, 无法与新的 three.js 库一起使用