无法让 raycaster.intersectObjects() 从远处返回相交的对象

2024-04-26

我有一个包含几个随机数的散点图Sprite用作数据点的对象。我想检测鼠标指针(光标)和Sprite对象。我用来检测交叉点的设置如下:

var projector = new THREE.Projector();

window.addEventListener('mousedown', function (ev) {
    if (ev.target == renderer.domElement) {
        var vector = new THREE.Vector3((ev.clientX / window.innerWidth) * 2 - 1, -(ev.clientY / window.innerHeight) * 2 + 1, 0.5);
        var projector = new THREE.Projector();
        projector.unprojectVector(vector, camera);

        var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());

        var intersects = raycaster.intersectObjects(particles);
        console.log(intersects[0]);
    }
}, false);

我遇到的问题是,当我单击Sprite从远处观察对象(即单击数据点而不放大绘图),似乎没有返回任何内容raycaster.intersectObjects(particles)。换句话说,长度intersects为 0。所需的行为是当单击数据点时(即,数据点出现在光标下方),raycaster.intersectObjects()返回光标下的对象。

我已经根据迄今为止所做的事情创建了一个小提琴:http://jsfiddle.net/jmg157/ynFzw/ http://jsfiddle.net/jmg157/ynFzw/

一如既往,非常感谢!


当你使用Raycaster,你需要确保在你的CSS中设置

body { margin: 0 }

或等效的东西,否则,检测将被抵消。

另外,Raycaster实施Sprites需要改进。

目前,如果光线经过精灵位置的一定距离内,就会发生检测。检测区域为半径为一个圆sprite.scale.x。不考虑精灵的形状。

三.js r.64

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法让 raycaster.intersectObjects() 从远处返回相交的对象 的相关文章

  • 将几何图形转换为 BufferGeometry

    据我了解 Geometry 存储顶点和面的 javascript 对象结构 而 BufferGeometry 仅通过 Float32Arrays 等存储原始 gl 数据 有没有什么方法可以将标准 Geometry 转换为 BufferGeo
  • THREE.JS 加载 STL 网格数组

    因此 我有一个数据库 其中包含文件引用列以及对其所需的子 STL 文件的任何引用 我可以将一两个模型加载到 THREE js 查看器中 因此所有这些都可以正常工作 但是当我加载四个左右的数组时 事情开始变得毛茸茸的 分配的网格 ID 开始变
  • 三个js如何手动添加三角形到BufferGeometry

    我一直在尝试找到使用 Three js 更改网格顶点的最快方法 我发现 如果我更改 mesh geometry attributes position array 的部分内容 然后设置 mesh geometry attributes po
  • Three.js 支持波斯语/阿拉伯语文本

    我需要以波斯语 阿拉伯语显示一些文本 我加载了包含字符的字体 并使用 TextGeometry 在场景上创建文本 var loader new THREE FontLoader loader load B Zar Regular js fu
  • 如何在 Three.js 中使用反射?

    我想在带有 Three js 的 WebGL 页面中拥有一个反射立方体表面 它应该类似于手机显示屏 反射一些光 但它仍然必须是黑色的 我创建了一个反射立方体 以及反射球体 的示例 并附有详细的注释 现场版本位于 http stemkoski
  • Three.js 通过加载模型上的材质名称为材质添加边框

    是否可以在材料周围添加边框 如图所示 我可以通过以下代码设置材质颜色 object traverse function child if child instanceof THREE Mesh child material color se
  • 绕局部轴旋转

    我正在尝试实现一个对象 围绕一个位置 POI 兴趣点 飞行并面向它 当您按 WASD 时 您可以更改 POI 的旋转 A 和 D gt 更改 y 轴 W 和 S 更改 x 轴 正如您在演示中看到的 http jsbin com yodusu
  • 使用三个 JS 和 React JS 加载 GLTF 模型

    我使用 React JS 加载从 sketchfab 下载的 GLTF 文件时遇到问题 当我尝试在不使用React 使用常规index html和index js 的情况下执行此操作时 它可以工作 但是当我将代码带入React应用程序时 它
  • 可点击的精灵标签?

    我一直在玩精灵文本标签 更具体地说是这个例子 http stemkoski github io Three js Sprite Text Labels html http stemkoski github io Three js Sprit
  • 调试 Three.js 中的低 FPS

    我正在处理 Three js WebGL 场景 当我缩小时 我注意到 60 FPS 以便所有观察结果 约 20 000 个三角形 都在视图中 但当我放大时 FPS 非常低 因此只有一个小三角形的子集在视野中 我想弄清楚是什么导致了这种差异
  • 一次性渲染阴影

    考虑到阴影投射的成本 我想知道对于动态定位的静态对象 例如 程序城市 是否有一个功能或可能 实验性的方法可以在 Three js 中仅渲染一次阴影贴图 甚至在 webgl 中 因此 结果可以在静态对象的下一帧中免费使用 仅当物体移动时才会进
  • 在 Three.js 中获取 Object3D 的大小

    我的场景中有这个 3D 对象 var icon new THREE Object3D var iconTexture THREE ImageUtils loadTexture images icon png iconMaterial new
  • 如何在 Three.js 场景中包含 OVRManager?

    我创建了几个 Three js Javascript 演示应用程序 正在我的新 Oculus Go 中进行试验 我正在尝试让 Go 控制器在我的应用程序中执行某些操作 根据 Oculus 开发人员中心的说法 最好的办法是将 OVRManag
  • 在 Three.js 中从 Web Worker 加载纹理

    当将大纹理图像应用到网格上一段明显的时间时 Three js 会锁定浏览器的主线程 让我们考虑以下示例 var texLoader new THREE TextureLoader texLoader load someLargeTextur
  • CSS3DObject 始终位于 WebGL Mesh 前面

    我正在混合CSS3D Renderer with WebGL Renderer to add HTML3D 空间中的元素WebGL场景 这CSS3DObject在前面WebGL网格即使WebGL Renderer具有较高的 z index
  • 如何在 React Native 中渲染自定义 3D 对象

    我已经成功使用 Three js expo Three 和 expo gl 在 React Native 中配置了红色立方体的 3D 渲染 但我想让用户渲染他们自己可能拥有的自定义 3D 对象 obj 或 mtl 扩展名 但我不确定如何让他
  • 如何优化 Three.js 中多个 sphereGeometry 的渲染?

    我想优化 Three js 中 sphereGeometry 的渲染 因为它成为我的程序的瓶颈 javascript程序如下所示 var sphereThree for var idSphere 0 idSphere lt numSpher
  • 如何在 Three.js 中重新调整三角形面的方向

    用更好的例子进行编辑 我使用 Three js 来显示 MRI 胃图像的外壳 外壳是从 vtk 格式的外部文件加载的 这是一个演示 http www menne biomed de uni 3d alphahull html http ww
  • ThreeJS 动画光色

    我制作了一个定向灯 我想随着时间的推移改变颜色 我正在阅读文档 http threejs org docs index html Reference Math Color 但仍然没有启动并运行 在初始化之前我声明变量 var rmapped
  • Three.js点击单个粒子

    In this example http jsfiddle net agqq96bq 2 您可以看到 2 个可点击的粒子 但它们都受到点击的影响 另外 我只想检测粒子上的点击 而不将它们过滤出场景 像这儿 if intersects len

随机推荐

  • lambda 中的自定义相交

    我想知道是否可以使用 lambda 表达式来解决这个问题 List
  • Kubernetes:用 Calico 替代 Flannel

    我是 Kubernetes 新手 我想尝试不同的 CNI 在我当前的集群中 我正在使用 Flannel 现在 我想使用 Calico 但我找不到清理 Flannel 和安装 Calico 的正确指南 您能指出正确的程序吗 Thanks Ca
  • 涉及优化器的局部变量构造和销毁

    如果我有这个代码 class A class B void dummy A a B b 我知道变量a and b将以相反的分配顺序销毁 b将首先被摧毁 然后a 但我可以确定优化器永远不会交换的分配和构造a and b 或者我必须使用vola
  • 有没有办法在 C++ 中调用类外部的基函数?

    这个问题是类似的 但是是关于从类内部调用函数 如果我重写基类的虚函数 我可以调用它吗 https stackoverflow com questions 672373 can i call a base classs virtual fun
  • 使用 Google 电子表格中的脚本从手机获取我的当前位置

    有没有办法使用 Google Apps 脚本从手机的 GPS 数据中获取我的当前位置 纬度和经度 最好是十进制形式 另外 是否可以打开和关闭 GPS 或者至少检测它是否打开或关闭 这是我尝试做的 我带着电动助力车去一些地方 在每个地方我都会
  • 指定 ghci 中“加载”操作的搜索路径

    In 加载源文件 http www haskell org ghc docs 7 6 1 html users guide loading source files html它指出查找源文件的搜索路径是使用 i 选项指定的 ghci idi
  • XDoclet,一个死工具?

    我正在使用最新的 Eclipse for Java EE 和最新的 JBoss Tools 插件 现在 我正在编写一些 EJB 2 x 代码 我找不到像以前一样生成 xdoclet build xml 文件的方法 经过一番调查后 我开始问自
  • 仅适用于我所在国家/地区的 Google 地图?

    如何在 Android 应用程序中使用 Google 地图 使其仅显示我的国家 地区 我的意思是 世界其他地方不会出现在应用程序中 查看其中之一迈克 威廉姆斯 http econym org uk gmap range htm很棒的 GMa
  • 请求头字段X-Requested

    我正在尝试访问谷歌云存储上的存储桶中的文件 我已经为存储桶设置了 CORS 配置 但当我通过 https 发出请求时 出现此错误 它适用于通过 http 发出的请求 XMLHttpRequest 无法加载 FILENAME 预检响应中的 A
  • 无限地重复可枚举

    是否存在无限重复可枚举的可枚举扩展方法 例如 给定一个返回的枚举 a b c 我想要一个返回无限重复序列的方法 a b c a b c a b c 这听起来有点像可观察 重复 http msdn microsoft com en us li
  • 如何像普通命令行程序一样从 shell 运行 sbt 主类?

    如何从 shell 运行 sbt 应用程序 以便我可以将我的应用程序作为普通的命令行程序运行 就像直接通过scala但不必设置巨大的类路径 我知道我能做到 echo hello sbt run main com foo MyMain3 ar
  • 当我在 Visual Studio 2017 的 C# 中调用方法时,是否有指向显式命名参数的快捷方式?

    在 C 中 我有一个带有许多参数的方法 我想使用所有命名参数调用该方法 VisualStudio 2017 中有执行此操作的快捷方式吗 我使用 EF6 并使用 SQL 2014 从具有 10 多个输入参数的存储过程生成方法 Method p
  • 如何将“&[email protected]”附加到 GoogleWebAuthorizationBroker

    我想将 login hint 附加到向 Google 发出的身份验证请求中 我正在使用以下代码 FileDataStore fDS new FileDataStore Logger Folder true GoogleClientSecre
  • 创建新的 SqlDataAdapter 时出现 C# InvalidOperationException

    我编写了一些代码来建立与 SQL Server 的连接 然后执行 select 过程以从 SQL Server 中的数据表中获取所有数据 但它在声明新的 SqlDataAdapter 的命令中抛出 InvalidOperationExcep
  • 如何使用 ASP.NET MVC 控制器操作将文件发送到浏览器?

    我有一个应用程序 允许我的用户上传任何类型的文件 我将其保存在服务器上的文件系统中 该应用程序只能由两个用户访问 因此我无需担心上传任何可疑文件 如何允许用户按下 MVC 表单上的按钮来请求通过浏览器发回文件并显示标准保存 打开对话框 我想
  • C# 如何获取 COM 接口的实例

    我做了很多谷歌搜索 试图找到获取 COM 接口实例的标准方法 微软在他们的文章中提供了一个例子COM 互操作第 1 部分 客户端教程 https msdn microsoft com en us library aa645736 v vs
  • WCF 绑定到 HTTPS

    我知道有很多关于此的帖子 并且我已经浏览了搜索中出现的所有帖子并实现了所提到的所有内容 我有一个 WCF Web 服务 可以在我的本地系统上使用 HTTP 运行 也可以在服务器上使用 HTTP 运行 但客户端要求这通过 HTTPS 进行 这
  • Oracle 中的重复行

    如何防止在选择查询中选择重复的行 我有一个包含以下字段的表 name type user1 user2 user3 date 我的查询要求我仅在用户在前端输入的时间为特定用户选择数据 假设用户输入 1 那么选择查询应仅检索 user1 的数
  • 使用 Rivets.js 迭代 Backbone.js 模型的集合?

    我在用着铆钉 js http rivetsjs com 对于 Backbone 项目中的两个双向数据绑定 并且希望实现迭代绑定 文档表明迭代绑定是可能的 但没有可用的示例 我正在使用一个简单的 Rails API 将 JSON 发送到客户端
  • 无法让 raycaster.intersectObjects() 从远处返回相交的对象

    我有一个包含几个随机数的散点图Sprite用作数据点的对象 我想检测鼠标指针 光标 和Sprite对象 我用来检测交叉点的设置如下 var projector new THREE Projector window addEventListe