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

      });

      }

相关推荐
wearegogog12310 分钟前
C语言中的输入输出函数:构建程序交互的基石
c语言·开发语言·交互
Fine姐13 分钟前
The Network Link Layer: 无线传感器中Delay Tolerant Networks – DTNs 延迟容忍网络
开发语言·网络·php·硬件架构
晓得迷路了31 分钟前
栗子前端技术周刊第 94 期 - React Native 0.81、jQuery 4.0.0 RC1、Bun v1.2.20...
前端·javascript·react.js
江城开朗的豌豆31 分钟前
React Native 实战心得
javascript
HAPPY酷31 分钟前
给纯小白的Python操作 PDF 笔记
开发语言·python·pdf
liulilittle39 分钟前
BFS寻路算法解析与实现
开发语言·c++·算法·宽度优先·寻路算法·寻路
江城开朗的豌豆39 分钟前
React状态更新踩坑记:我是这样优雅修改参数的
前端·javascript·react.js
阿珊和她的猫1 小时前
autofit.js: 自动调整HTML元素大小的JavaScript库
开发语言·javascript·html
喜欢吃燃面1 小时前
C++算法竞赛:位运算
开发语言·c++·学习·算法
草莓熊Lotso1 小时前
《详解 C++ Date 类的设计与实现:从运算符重载到功能测试》
开发语言·c++·经验分享·笔记·其他