Three.js实现模型,模型材质可拖拽效果 DragControls

news2025/1/20 3:46:58

Three.js提供了一个拖拽的API DragControls 用于实现模型材质拖拽效果

DragControls:是一个用于在Three.js中实现拖拽控制的辅助类。它简化了在Three.js中实现拖拽物体的过程。

DragControls的构造函数接受三个参数:

objects:一个包含需要进行拖拽的物体的数组。
camera:相机对象,用于将屏幕坐标转换为三维空间坐标。
domElement:渲染器的DOM元素,用于监听鼠标事件。

DragControls实例提供了以下方法和事件:

addEventListener(type, listener):添加事件监听器。支持的事件类型包括’dragstart’、‘drag’和’dragend’。
removeEventListener(type, listener):移除事件监听器。
dispose():释放DragControls实例,清除事件监听器。
DragControls实例还会自动处理鼠标事件,并触发相应的事件。当用户开始拖拽物体时,会触发’dragstart’事件;当物体正在被拖拽时,会触发’drag’事件;当用户停止拖拽物体时,会触发’dragend’事件。

在事件监听器中,可以通过event.object获取被拖拽的物体,通过event.position获取物体在拖拽过程中的位置

注意:DragControls 支持拖拽的材质类型为 type =“Mesh” ,其他类型的材质可能没实际效果

在上一篇 Three.js加载外部glb,fbx,gltf,obj 模型文件 的文章基础上新增一个 setModelMeshDrag(设置模型材质可拖拽方法)

	// 模型材质可拖拽
	setModelMeshDrag() {
	       const modelMaterialList= []
	       // 获取到需要拖拽的模型材质
  		   this.model.traverse((v) => {
			 if (v.isMesh && v.material && v.type=="Mesh") {
				   modelMaterialList.push(v)	
			    }
		    })
		    // 创建拖拽实列
			this.dragControls = new DragControls(this.modelMaterialList, this.camera, this.renderer.domElement);
			// 拖拽事件监听
			this.dragControls.addEventListener('dragstart', () => {
			    // 设置控制器不可操作
				this.controls.enabled = false
			})
			this.dragControls.addEventListener('dragend', () => {
				this.controls.enabled = true
			})
	}

完整的代码可参考:https://gitee.com/ZHANG_6666/Three.js3D/blob/master/src/views/renderModel.js

界面效果
在这里插入图片描述

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

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

相关文章

(AS笔记)上传aar包到Maven中央仓库

目录 一、SonaType账户注册与登录 (1)注册 (2)登录 二、创建工单 (1)Github子域名验证 (2)自定义域名验证 三、登录Nexus Repository Manager 四、GPG签名生成和发布 五、Andr…

PHP8内置函数中的数学函数-PHP8知识详解

php8中提供了大量的内置函数,以便程序员直接使用常见的内置函数包括数学函数、变量函数、字符串函数、时间和日期函数等。今天介绍内置函数中的数学函数。 本文讲到了数学函数中的随机数函数rand()、舍去法取整函数floor()、向上取整函数 ceil()、对浮点数进行四舍…

【LeetCode每日一题】——1365.有多少小于当前数字的数字

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 排序 二【题目难度】 简单 三【题目编号】 1365.有多少小于当前数字的数字 四【题目描述】 …

RHCE——十一、NFS服务器

NFS服务器 一、简介1、NFS背景介绍2、生产应用场景 二、NFS工作原理1、示例图2、流程 三、NFS的使用1、安装2、配置文件3、主配置文件分析3.1 实验1 4、NFS账户映射4.1 实验24.2 实验3 四、autofs自动挂载服务1、产生原因2、安装3、配置文件分析4、实验45、实验5 一、简介 1、…

【c++】VC编译出的版本,发布版本如何使用

目录 使用release类型进行发布 应用程序无法正常启动 0xc000007b 版本对应 vcruntime140d 应用版本 参考文章 使用release类型进行发布 应用程序无法正常启动 0xc000007b "应用程序无法正常启动 0xc000007b" 错误通常是一个 Windows 应用程序错误&#xf…

手机拍摄的视频太大怎么压缩?快来学视频压缩

随着手机的普及和视频拍摄的简单化,我们经常会在手机上一不小心就拍摄出大量的视频内容。但这些视频文件往往会占用大量的存储空间,给我们的日常生活带来不便。那么,如何压缩这些过大的视频文件呢? 视频压缩的主要原理是利用视频序…

易云维®FMCS厂务系统创造工厂全新的“数字低碳智能”应用场景

近年来,新一代信息技术的高速发展为传统工业与制造业领域带来了新的机遇。信息技术加持下的制造技术发展出了新的生产方式、产业形态与管理模式。通过搭建FMCS厂务系统进行数字化转型来实现数据互联互通与业务高效协同,助力企业向安全、绿色、节能、高效…

软件测试全生命周期全流程解析

一、软件测试的基本概念 1.测试是软件生存周期中十分重要的一个过程,是产品发布、提交给最终用户前的稳定化阶段。 2.软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序内部结构而精心设计的一批 二、软…

winrar代码执行漏洞CVE-2023-38831复现

工具下载: winrar5.50:https://www.rarlab.com/rar/winrar-x64-550.exe 7-z:https://www.7-zip.org/ 创建文件夹目录如下 测试- image(文件夹,此命名随意)- xingkong.png(一张图片&#xff0c…

【Unity3D赛车游戏】【七】如何在Unity中为汽车添加自动变速箱自动换挡?

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

智能工单系统哪家好?如何提升企业维修效率与管理效能?

在互联网信息时代,许多行业已经完成了电子信息化的转变,并从中受益。对于公司而言,SaaS云产品系列提供了更低的成本、更强大的功能以及更好的客户体验。那么,与传统报修工单相比,智能工单有哪些优势呢? 首先…

9个至少提升50%效率的VSCODE插件

在开始编码之前,您首先需要让您的工作流程适合您。让它更高效、更漂亮、更可定制。它会节省您大量的时间和精力,因此您将有更多的能力进行编码。 无论您是前端还是后端开发人员还是高级 Java 程序员,都没关系。这篇文章对你们大多数人来说仍然…

问道管理:融资融券门槛?

融资融券是股票出资中的一种买卖方式,也是现代股市正常运作的重要机制之一。但是,由于融资融券具有利润高、危险大的特色,为了保护大多数出资者的利益,也为了确保股市的安稳运转,国家对融资融券的门槛做出了一系列规则…

一个国产存储一致性及稳定性测试工具介绍

项目地址:https://github.com/zhangyoujia/hd_write_verify 序言 hd_write_verify & hd_write_verify_dump 是测试磁盘稳定性和验证数据一致性的工具。可以测试 物理磁盘、虚拟机磁盘 等。相对于fio和vdbench等工具,此工具更加专注于数据对丢失、数…

lab9 fs

文章目录 Large filestaskhints思路 Symbolic linkstaskhints思路sys_symlinksys_open Large files 目标:11256256*256个block inode的格式在fs.h的struct dinode中被定义,你需要特别注意以下几点 NDIRECTNINDIRECTMAXFILEaddrs[] 在磁盘上找一个文件…

OpenGL手册

基础知识 图元类型 内置变量 GLSL 中文手册 基本类型: 类型说明void空类型,即不返回任何值bool布尔类型 true,falseint带符号的整数 signed integerfloat带符号的浮点数 floating scalarvec2, vec3, vec4n维浮点数向量 n-component floating point vectorbvec2, bvec3, b…

Midjourney学习(三)6个高级应用

使用Remix Mode在原图片的基础上进行二次创作 通过prompt得到大图之后,点击Make Variations按钮,输入Remix Prompt,即可得到意想不到的效果! 局部内容重绘 通过局部重绘可以实现对画面内容更加精细化的控制,同样也是需…

【数学建模】清风数模正课7 多元线性回归模型

多元线性回归分析 回归分析就是,通过研究自变量X和因变量Y的相关关系,来解释Y的形成机制,从而达到通过X去预测Y的目的。 所以回归分析需要完成三个使命,首先是识别重要变量,其次是判断正负相关,最后是估计…

PCB电路板电压电流监测软件

PCB电路板电流监测软件详细设计说明书是一个详细描述软件系统设计和实现的文档,它提供了软件系统的架构、功能模块、接口设计、数据存储和处理、界面设计、数据库设计、系统测试、部署和维护计划等方面的详细信息。模拟量采集/老化房采集软件 该文档的目的是为了确保…

企业工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…