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

14fe3076823b4b498b4d29b4f66eb633.gif

场景设计器-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

          });

      }

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/600749.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# visual studio COM创建及调用

1.visual studuio操作 1.1visual Studio创建类库项目ClassLibrary1。 1.1.1ClassLibrary1项目Class1.cs内容如下: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.T…

torch.where用法介绍

torch.where用法1介绍 torch.where(condition, x, y) → Tensor这个用法介绍直接搜就可以,不做介绍 torch.where用法2介绍(在yolov8中计算TP中出现) torch.where(condition) → Tensor返回的condition中为True的索引 直接举一个例子吧 condition torch.tensor(…

50N65-ASEMI高压N沟道MOS管50N65

编辑:ll 50N65-ASEMI高压N沟道MOS管50N65 型号:50N65 品牌:ASEMI 封装:TO-247 连续漏极电流(Id):50A 漏源电压(Vdss):650V 功率(Pd):388W 芯片个数:2 引脚数量:…

项目知识—SSM及之后02

1、resultMap写的Base内容必须保证select都使用上 2、VALUE单个 ,VALUES多个

Nginx部署笔记

记录Nginx部署Vue项目的流程,以及部署后前端出现问题的解决方案。 目录 一、安装nginx 二、部署流程 三、解决前端路由history模式刷新页面404的问题 四、Nginx解决前端项目打包缓存问题 五、后话 一、安装nginx http://nginx.org/ ,找到页面右下角的d…

leetcode2975. 移除栅栏得到的正方形田地的最大面积

题目 有一个大型的 (m - 1) x (n - 1) 矩形田地,其两个对角分别是 (1, 1) 和 (m, n) ,田地内部有一些水平栅栏和垂直栅栏,分别由数组 hFences 和 vFences 给出。 水平栅栏为坐标 (hFences[i], 1) 到 (hFences[i], n),垂直栅栏为…

企业微信 get请求 设置可信域名

import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;RestController public class ValidController {GetMapping("/xxxxx.txt")public String getText() {//返回下载的txt里的内容return &…

React 实现 Step组件

简介 本文将会实现步骤条组件功能。步骤条在以下几个方面改进。 1、将url与Step组件绑定,做到浏览器刷新,不会重定向到Step 1 2、通过LocalStorage 存储之前的Step,做到不丢失数据。 实现 Step.jsx (组件) import {useEffect, useState} fro…

Java并行流parallelStream()下InheritableThreadLocal引起的问题

Java并行流parallelStream()下InheritableThreadLocal引起的问题 引起问题的代码。 List orgs00 Arrays.asList(new Org("aaa"),new Org("bbb"),new Org("aa0"));List orgs orgs00.parallelStream() .map(org -> {// 模拟从数据库中获取 …

如何用致远OA连接电商、CRM实现高效营销

连接电商与CRM:高效营销的关键 在竞争激烈的商业环境中,电商企业迫切需要将其营销活动提升到更高的水平。利用致远OA连接电商平台与CRM系统,可以打造一个无缝的信息流,从而实现高效的营销策略。通过自动化的数据同步,…

车流量识别摄像机

车流量识别摄像机是一种利用先进的图像识别技术和智能算法来监测道路上车辆数量和流量的设备。通过安装在道路或交通路口的摄像头,可以实时准确地统计车辆的通过情况,进而为交通管理、道路规划以及交通安全提供重要数据支持。 车流量识别摄像机主要通过计…

机器学习的三个方面

1 机器学习的三个方面 1.1 数据 包括数据采集、增强和质量管理,相当于给人工智能模型学习什么样的知识 第一、什么专业的知识; 第二、知识是否有体系,也就是说样本之间是否存在某种关联、差异等,这个涉及到样本选择等问题&#x…

SqlServer内存使用情况

-- 查询执行中sql语句 SELECT TOP 500 [session_id], [request_id], [start_time] AS 开始时间, getdate() as 当前时间, [status] AS 状态, [command] AS 命令, dest.[text] AS sql语句, DB_NAME([database_id]) AS 数据库名, [blocking_session_id] AS 正在阻塞其他会话的会话…

Docker资源配额

Docker资源配额指的是对Docker容器或服务在系统资源使用方面的限制。 通过资源配额,可以控制和限制Docker容器可以使用的CPU、内存、磁盘空间和网络带宽等资源。 根据应用程序的需求和系统环境来设置适当的资源配额:过于严格的配额可能导致应用程序性能下…

码云Gitee复制 GitHub 项目

码云提供了直接复制 GitHub 项目的功能,方便我们做项目的迁移和下载。 1.新建仓库 2.导入仓库 3.强制同步 如果 GitHub 项目更新了以后,在码云项目端可以手动重新同步,进行更新!

CSS新增文本描边-text-stroke属性

-webkit-text-stroke属性 概念:-webkit-text-stroke属性为文本添加描边效果。所谓的描边效果,指的是给文字添加边框 语法: -webkit-text-stroke:width color;Chrome和Firefox这两个浏览器都只能识别带有-webkit前缀的text-stroke属性 -web…

金和OA C6 UploadFileEditorSave.aspx 任意文件上传漏洞

产品介绍 金和网络是专业信息化服务商,为城市监管部门提供了互联网监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。 漏洞概述 金和 OA C6 uploadfileeditorsave接口处存在任意文件上传漏洞,攻击者可以通过构造特殊…

洛谷——P1983 [NOIP2013 普及组] 车站分级(拓扑排序、c++)

文章目录 一、题目[NOIP2013 普及组] 车站分级题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示 二、题解基本思路:代码 一、题目 [NOIP2013 普及组] 车站分级 题目背景 NOIP2013 普及组 T4 题目描述 一条单…

面试题:说一下Java开启异步线程的几种方法?

文章目录 整体描述实现方法一、注解Async1. 添加注解2. 创建异步方法Service和实现类3. 调用异步方法 二、AsyncManager1. 创建AsyncManager类2. 创建一个耗时的操作类3. 执行异步操作 三、线程池1. 创建线程池2. 创建一个耗时的操作类3. 执行线程池 总结 整体描述 在java中异…

使用STM32的定时器和PWM实现LCD1602的背光控制

使用STM32的定时器和PWM功能来控制LCD1602的背光是一种常见的方法,它可以实现背光的亮度调节和闪烁效果。在本文中,我们将讨论如何利用STM32的定时器和PWM来实现LCD1602的背光控制,并提供相应的代码示例。 1. 硬件连接和初始化 首先&#x…