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

      });

      }

相关推荐
Unique2762 分钟前
Linux条件变量
linux·开发语言
stoneSkySpace2 分钟前
算法--js--组合总和
前端·javascript·算法
乌鸦94417 分钟前
《STL--- vector的使用及其底层实现》
开发语言·c++·vector使用及其底层实现+
️77120 分钟前
八股碎碎念02——Synchronized
java·开发语言·jvm
c无序30 分钟前
【Go-4】函数
开发语言·后端·golang
青春:一叶知秋35 分钟前
【Qt开发】Qt核心属性
开发语言·qt
不秃的开发媛36 分钟前
JFace中MVC的表格使用介绍
java·开发语言·mvc
果冻kk1 小时前
Java桌面应用开发详解:自制截图工具从设计到打包的全流程【附源码与演示】
java·开发语言
zxsd_xyz1 小时前
基于labview的声音采集与存储分析系统
开发语言·labview
忘梓.1 小时前
「二叉搜索树·手撕暴走篇」:用C++《一路向北》狂写指针のの死亡轮盘!
java·开发语言·c++