Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从鼠标单击坐标获取WebGL 3d空间中的对象

如何从鼠标单击坐标获取WebGL 3d空间中的对象
EN

Stack Overflow用户
提问于 2011-09-09 16:26:20
回答 4查看 28.1K关注 0票数 18

我正在用WebGL构建一个棋盘游戏。可以旋转/缩放棋盘。我需要一种方法来将单击画布元素(x,y)转换为3D空间中的相关点(x,y,z)。最终的结果是我想知道(x,y,z)坐标,它包含与用户最接近的对象的接触点。例如,用户单击一个棋子,您想象一条光线穿过3D空间,穿过棋子和游戏板,但我想要的是棋子在触摸点上的(x,y,z)坐标。

我觉得这肯定是一个很常见的问题,但我似乎在我的谷歌中找不到解决方案。必须有某种方法将三维空间的当前视图投影到二维,以便可以将二维空间中的每个点映射到三维空间中的相关点。我希望用户能够将鼠标放在板上的一个空间上,并有点改变颜色。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-10 18:27:51

您正在寻找一个非投影函数,该函数将屏幕坐标转换为从相机位置到3D世界的光线投射。然后,必须执行光线/三角形相交测试,以查找与摄影机最近的三角形,该三角形也与光线相交。

我在jax/camera.js#L568上提供了一个取消投影的示例--但是您仍然需要实现光线/三角形相交。我在jax/triangle.js#L113上实现了这一点。

然而,还有一种更简单、(通常)更快的选择,叫做“挑选”。如果要选择整个对象(例如,国际象棋棋子),并且不关心鼠标实际单击的位置,请使用此选项。执行此操作的WebGL方法是将整个场景以各种不同的蓝色(蓝色是关键点,而红色和绿色用于场景中对象的唯一ID)渲染到一个纹理,然后从该纹理读回一个像素。将RGB解码为对象的ID将得到所单击的对象。同样,我已经实现了这一点,可以在jax/world.js#L82上找到它。(另参见第146、162、175行。)

这两种方法各有优缺点(在后面的一些评论中讨论了here ),您需要找出哪种方法最适合您的需求。对于大型场景,拾取速度较慢,但在纯JS中取消投影非常慢(因为JS本身并不是那么快),所以我最好的建议是同时尝试这两种方式。

仅供参考,您还可以查看GLU项目和非项目代码,我的代码大致基于这些代码:http://www.opengl.org/wiki/GluProject_and_gluUnProject_code

票数 28
EN

Stack Overflow用户

发布于 2011-10-16 13:44:54

我现在正在解决这个问题--我采取的方法是

  1. 渲染对象以拾取缓冲区每个具有唯一颜色的
  2. 读取缓冲区像素,映射回拾取对象
  3. 渲染拾取对象以缓冲具有每个像素颜色的Z深度
  4. 读取缓冲区像素,映射回Z深度
  5. 我们已拾取对象并近似Z为拾取坐标
票数 2
EN

Stack Overflow用户

发布于 2013-06-28 08:44:33

这是工作演示

代码语言:javascript
运行
AI代码解释
复制
function onMouseUp(event) {

    event.preventDefault();        
    x_pos = (event.clientX / window.innerWidth) * 2 - 1;
    y_pos = -(event.clientY / window.innerHeight) * 2 + 1;
    z_pos = 0.5;

    var vector = new THREE.Vector3( x_pos , y_pos , z_pos );

    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(intersectObjects);

    if (intersects.length > 0) {

        xp = intersects[0].point.x.toFixed(2);
        yp = intersects[0].point.y.toFixed(2);
        zp = intersects[0].point.z.toFixed(2);  
        destination = new THREE.Vector3( xp , yp , zp );

        radians =  Math.atan2( ( driller.position.x - xp) , (driller.position.z - zp));
        radians += 90 * (Math.PI / 180);
        console.log(radians);

        var tween = new TWEEN.Tween(driller.rotation).to({ y : radians },200).easing(TWEEN.Easing.Linear.None).start();

    }

weissner-doors.de/drone/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7364693

复制
相关文章
语义分割如何做标注_语义分割转实例分割
在进行Segmentation 训练之前需要准备训练集和验证集,本文将要来介绍如何使用LabelMe进行标记。LabelMe 是个可以绘制多边形、矩形、圆形、直线、点的一套标记工具,可用于分类、目标检测、语义分割、实例分割任务上的数据标注。
全栈程序员站长
2022/09/23
1.9K0
语义分割如何做标注_语义分割转实例分割
用于三维点云语义分割的标注工具和城市数据集
文章:Annotation Tool and Urban Dataset for 3D Point Cloud Semantic Segmentation
点云PCL博主
2022/04/06
2.1K0
用于三维点云语义分割的标注工具和城市数据集
语义分割标注工具Semantic Segmentation Editor 快速安装指南
Semantic-Segmentation-Editor是由日立汽车工业实验室(Hitachi Automotive And Industry Lab)开源的基于Web的语义对象标注编辑器(Semantic Segmentation Editor),该工具专门用于创建机器学习语义分割的训练数据,为自动驾驶研究开发的,但也可以用于标注其他类型的语义目标数据库。它不仅支持普通相机拍摄的2D图像(.jpg和.png文件)还支持LIDAR生成的3D点云(.pcd文件)中目标的标注。它是使用React, Paper.js和three.js开发的Meteor应用程序。
AI算法修炼营
2020/05/26
3.7K0
语义分割标注工具Semantic Segmentation Editor 快速安装指南
【图像分割】浙大--SketchGCN:用于手绘草图语义分割和标注的图形卷积神经网络,准确性显著提高!
论文地址: https://arxiv.org/pdf/2003.00678.pdf
CNNer
2020/10/21
1.3K0
【图像分割】浙大--SketchGCN:用于手绘草图语义分割和标注的图形卷积神经网络,准确性显著提高!
图像语义分割综述
论文:Fully Convolutional Networks for Semantic Segmentation 2015CVPR
languageX
2019/12/01
1.4K0
图像语义分割综述
【深度学习】图像语义分割
语义分割(Semantic Segmentation)是图像处理和机器视觉一个重要分支,其目标是精确理解图像场景与内容。语义分割是在像素级别上的分类,属于同一类的像素都要被归为一类,因此语义分割是从像素级别来理解图像的。如下如所示的照片,属于人的像素部分划分成一类,属于摩托车的像素划分成一类,背景像素划分为一类。
杨丝儿
2022/03/20
7.2K0
【深度学习】图像语义分割
用于语义分割的全卷积网络
摘要 卷积网络在特征分层领域是非常强大的视觉模型。我们证明了经过端到端、像素到像素训练的卷积网络超过语义分割中最先进的技术。我们的核心观点是建立“全卷积”网络,输入任意尺寸,经过有效的推理和学习产生相
用户1332428
2018/03/09
1K0
用于语义分割的全卷积网络
图像标注工具
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Gavin__Zhou/article/details/79121673
GavinZhou
2019/05/26
1.3K0
将Albumentations用于语义分割任务
本文主要基于Using Albumentations for a semantic segmentation task的翻译修改,有少量修改,添加了一些个人理解批注。
烤粽子
2021/07/07
1.2K0
将Albumentations用于语义分割任务
labelme图像标注_ai标注工具
参考:https://blog.csdn.net/u011574296/article/details/79740633
全栈程序员站长
2022/10/01
1.2K0
labelme图像标注_ai标注工具
如何用labelme标注语义分割数据集
采用的软件为labelme,labelme是麻省理工(MIT)的计算机科学和人工智能实验室(CSAIL)研发的图像标注工具,人们可以使用该工具创建定制化标注任务或执行图像标注,主要用于标记语义分割数据集。下面介绍详细的使用方法:
狼啸风云
2019/05/07
7.7K0
如何用labelme标注语义分割数据集
【语义分割】开源 | SAPNet:基于对比学习的分割感知渐进网络,用于单幅图像去噪
论文地址: http://arxiv.org/pdf/2111.08892v1.pdf
CNNer
2021/12/10
1K0
【语义分割】开源 | SAPNet:基于对比学习的分割感知渐进网络,用于单幅图像去噪
图像分割最新资料汇总(语义分割、实例分割、视频分割、医疗图像分割、自动驾驶…)
图像分割(image segmentation)是计算机视觉领域最为经典的研究问题之一,至今仍受到学术界和工业界的高度重视。所谓图像分割指的是根据灰度、颜色、纹理和形状等特征把图像划分成若干互不交迭的区域,并使这些特征在同一区域内呈现出相似性,而在不同区域间呈现出明显的差异性。目前,研究者们最为关注的研究方向主要有三个:
马上科普尚尚
2020/05/11
1.8K0
图像分割最新资料汇总(语义分割、实例分割、视频分割、医疗图像分割、自动驾驶…)
Python开发---语义分割标注转图片掩膜
在深度学习进行图像识别,物体检测,语义分割,实例分割时,需要使用已经标注好的数据集来训练模型。
MiaoGIS
2022/03/02
1.9K0
Python开发---语义分割标注转图片掩膜
语义分割的定义_语义分割模型
语义分割结合了图像分类、目标检测和图像分割,通过一定的方法将图像分割成具有一定语义含义的区域块,并识别出每个区域块的语义类别,实现从底层到高层的语义推理过程,最终得到一幅具有逐像素语义标注的分割图像。
全栈程序员站长
2022/09/25
1K0
语义分割的定义_语义分割模型
笔记:基于DCNN的图像语义分割综述
写在前面:一篇魏云超博士的综述论文,完整题目为《基于DCNN的图像语义分割综述》,在这里选择性摘抄和理解,以加深自己印象,同时达到对近年来图像语义分割历史学习和了解的目的,博古才能通今!感兴趣的请根据自己情况找来完整文章阅读学习。 
全栈程序员站长
2022/08/31
6970
笔记:基于DCNN的图像语义分割综述
图像分割 | FCN数据集制作的全流程(图像标注)
本文介绍如何使用 PyTorch 实现 FCN 对 PASCAL VOC 数据集进行分类。首先,使用 Docker 安装 PyTorch 和 torchvision,然后使用 torchvision.datasets.VOCSegmentation 载入 PASCAL VOC 数据集。接着,使用 torchvision.models.detection.faster_rcnn.FasterRCNN 将数据集进行分类,并输出预测结果。最后,使用自定义的 colorization 函数将预测结果着色,并保存为图像文件。
码科智能
2018/01/02
5K0
图像分割 | FCN数据集制作的全流程(图像标注)
用于语义分割的特征共享协作网络
论文是学术研究的精华和未来发展的明灯。小白决心每天为大家带来经典或者最新论文的解读和分享,旨在帮助各位读者快速了解论文内容。个人能力有限,理解难免出现偏差,建议对文章内容感兴趣的读者,一定要下载原文,了解具体内容。
AI算法与图像处理
2021/02/05
4670
用于语义分割的特征共享协作网络
算法赛推送-遥感图像语义分割
比赛链接:https://www.heywhale.com/home/competition/61c95b5dc4437e0017d5feea/
致Great
2022/01/25
9620
图像语义分割之FCN和CRF
(呕血制作啊!)前几天刚好做了个图像语义分割的汇报,把最近看的论文和一些想法讲了一下。所以今天就把它总结成文章啦,方便大家一起讨论讨论。本文只是展示了一些比较经典和自己觉得比较不错的结构,毕竟这方面还是有挺多的结构方法了。
全栈程序员站长
2022/09/25
1.1K0
图像语义分割之FCN和CRF

相似问题

用于监督分类的图像标注工具

40

如何创建用于语义分割的像素标记图像?

10

灰度图像的语义分割

20

每像素多个标签图像的语义分割

10

哪些F1-分数用于语义分割任务?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文