社区
JavaScript
帖子详情
threejs如何拾取sprite
4525
2020-06-05 07:04:20
threejs如何拾取sprite,想鼠标操作sprite
...全文
1302
10
打赏
收藏
threejs如何拾取sprite
threejs如何拾取sprite,想鼠标操作sprite
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
霍庆祝
2020-12-28
打赏
举报
回复
1
addEventListener("click", (event: { clientX: number; clientY: number; }) => { console.log(event.clientX,event.clientY); // 拿到鼠标在屏幕的坐标 let mouseX = event.clientX;//鼠标单击位置横坐标 let mouseY = event.clientY;//鼠标单击位置纵坐标 const rect=this.container?.getBoundingClientRect();//拿到div相对屏幕坐标的偏移量 //屏幕坐标转标准设备坐标 const x = ((mouseX - rect!.left) / this.container.clientWidth) * 2 - 1; const y = - ((mouseY - rect!.top) / this.container.clientHeight) * 2 + 1; let standardVector = new THREE.Vector3(x, y);//标准设备坐标 //标准设备坐标转世界坐标 let worldVector = standardVector.unproject(this.camera); //射线投射方向单位向量(worldVector坐标减相机位置坐标) let ray = worldVector.sub(this.camera.position).normalize(); //创建射线投射器对象 let raycaster = new THREE.Raycaster(this.camera.position, ray);//光线投射的起点向量。 光线投射的方向向量,应该是被归一化的。 raycaster.camera=this.camera//设置一下相机 //返回射线选中的对象 let intersects:any = raycaster.intersectObjects(this.scene.children); console.log(intersects); // if (intersects.length > 0) { // intersects[0].object.material.color.set(randomColor()) // } });
霍庆祝
2020-12-28
打赏
举报
回复
2
设置一下相机就行了 raycaster.camera=this.camera
A奶糖001
2021-11-18
举报
回复
@霍庆祝
请教一下怎么设置
O起个大早听鸟叫O
2020-11-17
打赏
举报
回复
大佬,你的问题解决了吗,如果解决,可否告诉下解决方法
聪明的飞机
2020-09-11
打赏
举报
回复
请问我的场景加入精灵后,使用射线报错是什么原因?不管在场景哪个位置双击使用射线都会报错:THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.
Leon-Amazing
2022-03-02
举报
回复
@聪明的飞机
哥,我也遇到了这个问题,你解决了吗?
RaymondLam00
2022-06-10
举报
回复
1
@Leon-Amazing
哥,我也遇到这个问题,你解决了吗?
m0_62165332
2022-07-26
举报
回复
@RaymondLam00
将精灵那一部分从场景中移除
2条回复
Thre
ejs
之射线
拾取
模型
参考资料 射线Ray … 射线
拾取
Sprite
控制场景 知识点 注:基于
Thre
e.jsv0.155.0 射线Ray Raycaster(射线
拾取
模型) 屏幕坐标转标准设备坐标 Raycaster(鼠标点击选中模型) Canvas尺寸变化(射线坐标计算) 射线
拾取
层级模型(模型描边) 射线
拾取
Sprite
控制场景 代码实现 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">
Thre
e.js入门学习笔记09:
Thre
e.js对象
拾取
,鼠标点击对象响应事件
thre
e.js
thre
e.js 射线
拾取
thre
e.js 射线
拾取
Thre
e.js
THRE
E.Raycaster 射线
拾取
详解 (解决射线无法射到object3,group里的children)
简介 由于浏览器是一个2d视口,而在里面显示
thre
e.js的内容是3d场景,所以,现在有一个问题就是如何将2d视口的x和y坐标转换成
thre
e.js场景中的3d坐标。好在
thre
e.js已经有了解决相关问题的方案,那就是
THRE
E.Raycaster射线,用于鼠标
拾取
(计算出鼠标移过的三维空间中的对象)等等。
THRE
E.Raycaster构造函数和对象方法 new Raycaster(...
thre
ejs
学习(十一)非全屏canvas下,射线
拾取
坐标错位问题
问题 在非全屏状态下,使用射线进行模型
拾取
,如果按照官方例子来做,会出现屏幕坐标转换三维坐标有误差,导致
拾取
模型错误; 非全屏canvas 解决方案 需要重新计算鼠标点击坐标位置
sprite
Click: function (event) { event.preventDefault(); // 鼠标转换三维坐标 // this.mouse.x = (event.clientX / document.getElementById("other").offset
JavaScript
87,904
社区成员
224,614
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章