Three.js 点击选中多个模型

发布于 2021-07-15 22:04:27 字数 1096 浏览 1408 评论 0

开发 Web3D 应用有时候需要通过鼠标连续点击选中多个三维模型或者说几何体,对于这个问题也比较简单,如果你有这个疑问,首先说明你应该了解如何通过 Threejs 的射线对象选中一个模型,如果你不了解可以去学习一下。

在一个三维场景中,通过鼠标单击选中一个三维模型对象,可以通过JavaScript代码设置单选和多选两种模式。默认情况下设置为单选模式,比如鼠标单击选中一个模型颜色变化,鼠标继续单击其它模型,如果选中了一个模型,原来选中的模型就变为未选中状态。

对多选模式,可以通过UI菜单设置,也可以通过键盘 Ctrl 键配合鼠标单击进入多选模式。对于多选模式实现,可以在代码中创建一个数组对象,每当单击选中一个三维模型,就插入数组中,凡是数组中的三维模型全部显示一种变化的颜色。

//声明一个变量记录Ctrl是否按下的状态
var CtrlBool = false;//初始状态未按下
function CtrlDown(event) {
  // 判断Ctrl按键是否按下
  if(event.ctrlKey){
    CtrlBool=true
  }
}
function CtrlUp(event) {
  // 判断Ctrl按键是否是抬起了
  if(event.ctrlKey){
    CtrlBool=false
  }
}
addEventListener('keyup', CtrlUp); // 键盘抬起事件
addEventListener('keydown', CtrlDown); // 键盘按下事件
addEventListener('click', choose); // 监听窗口鼠标单击事件
//声明一个数组变量,用来存放选中的所有模型对象
var chooseArr = [];
function choose(event) {
...
// 判断Ctrl按键是否处于按下状态
if(CtrlBool){
  // 选中的模型对象插入chooseArr数组中
  chooseArr.push(intersects[0].object)
  intersects[0].object.material.transparent = true;
  intersects[0].object.material.opacity = 0.6;
}
...
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

虐人心

有一天你能到我的心里去,你会看到那里全是你给的伤悲。

0 文章
0 评论
24515 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文