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 = intersects[0].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

      });

      }

相关推荐
林恒smileZAZ28 分钟前
Vue<前端页面版本检测>
前端·javascript·vue.js
014-code4 小时前
订单超时取消与库存回滚的完整实现(延迟任务 + 状态机)
java·开发语言
lly2024065 小时前
组合模式(Composite Pattern)
开发语言
我是Superman丶5 小时前
Element UI 表格某行突出悬浮效果
前端·javascript·vue.js
游乐码5 小时前
c#泛型约束
开发语言·c#
Dontla5 小时前
go语言Windows安装教程(安装go安装Golang安装)(GOPATH、Go Modules)
开发语言·windows·golang
chushiyunen5 小时前
python rest请求、requests
开发语言·python
Huanzhi_Lin5 小时前
关于V8/MajorGC/MinorGC——性能优化
javascript·性能优化·ts·js·v8·新生代·老生代
铁东博客5 小时前
Go实现周易大衍筮法三变取爻
开发语言·后端·golang
baidu_huihui5 小时前
在 CentOS 9 上安装 pip(Python 的包管理工具)
开发语言·python·pip