web3d-three.js场景设计器-TransformControls模型控制器

场景设计器-TransformControls 控制器

  • 该控制器可以指定模型进入可控制模式-如图

  • 有三种控制方式

    • translate --移动模式

    • rotate -- 旋转模式

    • scale -- 缩放模式

  • 方便布局过程中快捷对模型进行摆放操作。

  • 引入方式

    • import { TransformControls } from 'three/examples/jsm/controls/TransformControls.js';
  • 使用方式

    • // 对TransformControls的使用

      this.transformControls = new TransformControls(this.camera, this.renderer.domElement);

      this.scene.add(this.transformControls);

  • 选取操作

    • // 模型移动

      initChange(transformControls) {

      var changeRaycaster = new THREE.Raycaster();

      var changeMouse = new THREE.Vector2();

      this.renderer.domElement.addEventListener('click', (event)=> {

      changeMouse.x = (event.offsetX / this.renderer.domElement.clientWidth) * 2 - 1;

      changeMouse.y = -(event.offsetY / this.renderer.domElement.clientHeight) * 2 + 1;

      changeRaycaster.setFromCamera(changeMouse, this.camera);

      var intersects = changeRaycaster.intersectObjects(this.modelsArray); //

      // console.log('相机的模型', intersects, intersects.length);

      if (intersects.length > 0) {

      var selectedObject = intersects0.object;

      transformControls.attach(selectedObject);

      // 为移动模式

      transformControls.setMode("translate");

      // 为旋转模式

      //transformControls.setMode("rotate");

      // 为缩放模式

      //transformControls.setMode("scale");

      } else {

      // 如果点击的不是模型,那么解除模型与TransformControls的附加

      transformControls.detach();

      }

      });

      transformControls.addEventListener('dragging-changed', (event)=> {

      this.controls.enabled = !event.value;

      //mapControls.enabled = !event.value; // 如果TransformControls正在拖动,则禁用MapControls

      });

      }

相关推荐
gis开发之家3 分钟前
《Vue3 从入门到大神50篇》Vue3 源码详解(二十):生命周期钩子源码解析 —— onMounted / onUpdated 如何实现?
前端·javascript·前端框架·vue3·vue3源码
全栈项目管理程序猿5 分钟前
ArcGIS JS 基础教程(9):天空盒与大气效果
javascript
平凡的阿泽23 分钟前
我用TRAE Work手搓了一个「谁是卧底」小游戏
前端·javascript
Highcharts25 分钟前
Highcharts 实战:基于 Gauge 仪表盘打造实时动态时钟可视化开发全解析
javascript·数据可视化
运维行者_25 分钟前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
Patrick在香港27 分钟前
Python爬虫框架实战:优雅抓取香港政府公开API数据的通用方案
java·开发语言·爬虫·python·ai编程·数据可视化·可用性测试
嘟嘟071734 分钟前
用单例模式管理弹窗:从一段原生 JS 理解 Singlet
前端·javascript·代码规范
hey_sml36 分钟前
MySQL常用操作速记:从字符集到游标全解析
java·开发语言·mysql
广东程序猿小展36 分钟前
《007初露锋芒》风灵月影13项修改器下载 007初露锋芒修改器使用方法
开发语言·javascript·ecmascript
用户6919026813391 小时前
Harness工程的概念,以及简单的代码示例
javascript·架构