问题标签 [mouse-picking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 询问D3DXIntersect函数:(
这是我挑选的示例源代码。我有个问题。
如果我创建三个 3D 对象。所以挑选第三个对象。第一个,第二个对象不起作用。
如果我只创建一个对象。采摘效果很好!
如果我创建两个对象。拾取不是第一个对象,而是第二个对象。
只有创建最后一个对象才能很好地工作。
我不明白为什么会出现这个问题。
请给我一些建议。
three.js - Three.js中球体上的纬度经度
我有一个可以向任何方向旋转的threeJS 地球仪。目前,无论旋转如何,我都可以读取位于地球中心的正确经度和纬度。地球仪的方向使得 raycaster.ray.origin.x 和 raycaster.ray.origin.y 在本初子午线和赤道交叉处读取 0,0。raycaster.ray.origin.z 读取 500。
然而,我试图到达的地方是根据鼠标在地球上单击的位置确定纬度和经度。我试图根据 raycaster.ray.direction.x、y、z 计算它,但无论我是否在对象上,我都会得到读数。
如果我从原点 0,0 读取方向,我的 raycaster.ray.direction.x 和 y 都将读取 0,z 将读取 -100(我将它们乘以 100 以使用更好的数字)。在圆周上,X 将在地球的顶部和底部读取 0,从左到右读取 -40 到 40。Y 将从上到下读取 40 到 - 40,从左到右读取 0,Z 方向将在整个圆周上为 -90。然而,数字将继续增加/减少,直到屏幕边缘。
当地球朝向北极/南极时也是如此,但是,中心的 y 在圆周上是 -100/100 和 -90/90,x 将是 - 100/100 绕地球四分之一和 -90/90 围绕圆周。
是否有一种方法可以获取我单击的位置的值,它只是在对象上而不是整个屏幕上?我无法理解如何将方向与原点相关联。我觉得我到了某个地方,但然后就离开了困惑。这是我得到的一切。任何帮助将不胜感激。
c++ - 使用屏幕外渲染来选择鼠标?
我有很多简单对象的 3d 场景(可能数量很多),所以我认为使用光线跟踪通过鼠标拾取对象并不是一个好主意。
我想做这样的事情:
将所有这些对象渲染到一些opengl屏幕外缓冲区,使用指向当前对象的指针而不是他的颜色
使用真实颜色将相同的场景渲染到屏幕上
- 当用户选择具有(x,y)屏幕坐标的点时,我从屏幕外缓冲区(从相应位置)获取值并有一个指向对象的指针
可能吗?如果是的话——我可以为“用指针绘图”选择什么类型的缓冲区?
webgl - 如何在 Dart WebGL 应用程序中加速波段选择工具
手头的任务是向 Dart WebGL 应用程序添加波段选择工具。该工具将用于通过拖动鼠标在多个对象上绘制一个矩形。因此,可以在单个用户操作中选择/挑选多个对象。我目前正在使用 gl.readPixels() 从屏幕外渲染缓冲区中读取颜色。问题是,当一个大区域被波段选择时, gl.readPixels() 会发出数百万像素。扫描如此大量的颜色会浪费宝贵的时间来定位少数物体。
请任何人指出使用 Dart+WebGL 对多个对象进行波段选择的可能更快的方法。
作为参考,我在下面显示了波段选择工具的当前主要部分。
opengl - GLSL - 片段着色器 - 每个三角形都有不同的颜色
我想编写一个着色器程序,它将网格的每个三角形渲染成不同的颜色(所以我可以选择一个三角形)。我尝试使用 gl_PrimitiveID,但它总是返回 0,例如:
此着色器始终呈现黑色。
opengl - 如何使用 SceneKit 在场景中找到我的鼠标点?
我已经在 SceneKit 中设置了一个场景,并发布了一个命中测试来选择一个项目。但是,我希望能够沿着我场景中的平面移动该项目。我继续收到鼠标拖动事件,但不知道如何将那些 2D 坐标转换为场景中的 3D 坐标。
我的情况很简单。相机位于 0, 0, 50 并指向 0, 0, 0。我只想沿着 z 平面拖动对象,z 值为 0。
命中测试就像一个魅力,但我如何将鼠标点从拖动事件转换到场景中我正在拖动的 3D 对象的新位置?
c++ - 如何将屏幕上的鼠标坐标转换为 3D 坐标
我正在使用 C++ 中的 GLUT 创建一个 3D 应用程序。
现在,我想实现一个类似的方法:
Vector3* MyClass::get3DObjectfromMouse(int mouseX, int mouseY);
我怎样才能实现这个方法?
java - 如何将鼠标坐标转换为世界坐标
我想做的事
挑选一个对象。
要求/条件
- 我的鼠标总是在屏幕中央。
- 只选择第一个/最近的对象
我想知道的
如何将我的鼠标坐标(实际上是 0,0,因为鼠标锁定在中间)转换为世界坐标?
如何获得实际的视图方向?
我认为我必须做的
伪代码
opengl - 没有W的屏幕位置未投影
我了解如何取消投影的基本概念:
但这并没有正确采用 W 坐标 - 当我将事物从世界空间渲染到屏幕空间时W != 1
,由于透视变换(https://www.opengl.org/sdk/docs/man2/ xhtml/gluPerspective.xml )。当我从屏幕空间转换回世界空间时(假设为W=1
),对象位于错误的位置。
据我了解,W
是所有其他坐标的比例因子。如果是这种情况,这是否意味着屏幕矢量(0, 0, -1, 1)
并且(0, 0, -2, 2)
将映射到相同的窗口坐标,并且如果没有进一步的工作,非投影不一定会产生独特的结果?
谢谢!