Three.js 拖拽控制教程
拖拽控制 ·Transform Controls· ▶ 在线运行案例案例合集三维可视化功能案例threehub.cn开源仓库github地址https://github.com/z2586300277/three-cesium-examples400个案例代码:网盘链接你将学到什么TransformControls三种模式 translate / rotate / scaleattach(object)绑定要操控的 Object3D拖拽时禁用 OrbitControls避免冲突效果说明GUI 可切换模式并将控制器attach到 Fox 模型、平行光或地面平面拖拽 gizmo 实时变换对象。核心概念const transformControls new TransformControls(camera, renderer.domElement);scene.add(transformControls.getHelper());transformControls.addEventListener(dragging-changed, event { controls.enabled !event.value; // 拖拽中关掉轨道控制 });folder.add(transformControls, mode, [translate, rotate, scale]); transformControls.attach(model);| 模式 | 快捷键默认 | 作用 | |------|---------------|------| | translate | W | 平移 | | rotate | E | 旋转 | | scale | R | 缩放 |代码要点import * as THREE from threeimport { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { GLTFLoader } from three/addons/loaders/GLTFLoader.js import { TransformControls } from three/examples/jsm/controls/TransformControls.js import { GUI } from three/addons/libs/lil-gui.module.min.js;const box document.getElementById(box)const scene new THREE.Scene()const camera new THREE.PerspectiveCamera(50, box.clientWidth / box.clientHeight, 0.1, 1000)camera.position.set(0, 3, 6)const renderer new THREE.WebGLRenderer({ antialias: true, alpha: true, logarithmicDepthBuffer: true })renderer.setSize(box.clientWidth, box.clientHeight)renderer.shadowMap.needsUpdate truerenderer.shadowMap.enabled truebox.appendChild(renderer.domElement)const controls new OrbitControls(camera, renderer.domElement)controls.enableDamping trueconst folder new GUI()// 变换控制器 const transformControls new TransformControls(camera, renderer.domElement)// 模式 translate | rotate | scale folder.add(transformControls, mode, [translate, rotate, scale]).name(模式)const transformControlsRoot transformControls.getHelper()scene.add(transformControlsRoot)transformControls.addEventListener(dragging-changed, event {controls.enabled !event.value})window.onresize () {renderer.setSize(box.clientWidth, box.clientHeight)camera.aspect box.clientWidth / box.clientHeightcamera.updateProjectionMatrix()}new GLTFLoader().load(GLOBAL_CONFIG.getFileUrl(files/model/Fox.glb), (gltf) {const model gltf.scenemodel.scale.set(0.01, 0.01, 0.01)model.traverse((child) {if (child.isMesh) child.castShadow true})scene.add(model)folder.add({ 控制模型: () transformControls.attach(model) }, 控制模型)})const pointLight new THREE.DirectionalLight(0xffffff, 1)pointLight.position.set(1, 2, 0)pointLight.castShadow truescene.add(pointLight)folder.add({ 控制光源: () transformControls.attach(pointLight) }, 控制光源)const plane new THREE.Mesh(new THREE.PlaneGeometry(100, 100), new THREE.MeshStandardMaterial({ color: 0xffffff }))plane.position.y - 0.5plane.rotation.x -Math.PI / 2plane.receiveShadow truescene.add(plane)folder.add({ 控制平面: () transformControls.attach(plane) }, 控制平面)animate()function animate() {requestAnimationFrame(animate)controls.update()renderer.render(scene, camera)}完整源码GitHub小结本文提供拖拽控制完整 Three.js 源码与在线 Demo建议先运行案例再改 uniform/参数做二次实验更多 Three.js 实战案例见 three-cesium-examples 合集 与 GitHub 开源仓库

相关新闻

8位MCU安全连接云端:PIC18F2620与A5000加密芯片实践

8位MCU安全连接云端:PIC18F2620与A5000加密芯片实践

1. 项目背景与核心挑战在工业物联网和嵌入式设备领域,安全连接云端服务一直是个棘手问题。我最近用Microchip的PIC18F2620微控制器和A5000加密芯片做了个有意思的项目——让这个8位MCU也能安全地连接公共/私有云。这听起来可能有些反直觉,毕竟PIC18F2620…

2026/7/2 19:38:48 阅读更多 →
GEO 服务公司源易信息输出一线产业经验,打造跨学段优质AI课堂

GEO 服务公司源易信息输出一线产业经验,打造跨学段优质AI课堂

2025-2026年春季学期,在上海大学管理学院《信息资源管理与系统分析设计》课堂上,上海大学附属中学校长刘华霞带队,信息中心负责人、教导处主任、多个学科负责教师和高中生持续走进课堂,与大学生、高校教师和企业技术导师共同学习A…

2026/7/2 19:36:47 阅读更多 →
企业级技术交付全生命周期服务方法论

企业级技术交付全生命周期服务方法论

1. 项目概述:一个被误读的命名,实则指向企业级技术交付全生命周期服务 “圣殿骑士”——听到这个词,很多人第一反应是中世纪宗教军事组织、《达芬奇密码》里的神秘符号,或是某款游戏里披着锁子甲挥舞长剑的角色。但在这个项目标题…

2026/7/2 19:34:47 阅读更多 →

最新新闻

utpasswd插件开发指南:扩展功能的简易方法

utpasswd插件开发指南:扩展功能的简易方法

utpasswd插件开发指南:扩展功能的简易方法 【免费下载链接】utpasswd utpasswd is a refactoring of passwd. 项目地址: https://gitcode.com/openeuler/utpasswd 前往项目官网免费下载:https://ar.openeuler.org/ar/ utpasswd是openEuler系统中…

2026/7/2 20:59:19 阅读更多 →
QPushButton美化秘籍:Kiran Style按钮样式全解析

QPushButton美化秘籍:Kiran Style按钮样式全解析

QPushButton美化秘籍:Kiran Style按钮样式全解析 【免费下载链接】kiran-widgets-qt5 Kiran Desktop Widgets Library 项目地址: https://gitcode.com/openeuler/kiran-widgets-qt5 前往项目官网免费下载:https://ar.openeuler.org/ar/ 想要让Qt…

2026/7/2 20:57:19 阅读更多 →
为什么选择dpu-utilities:DPU场景下openEuler生态的终极解决方案

为什么选择dpu-utilities:DPU场景下openEuler生态的终极解决方案

为什么选择dpu-utilities:DPU场景下openEuler生态的终极解决方案 【免费下载链接】dpu-utilities dpu-utilities is DPU customized software utility based on openEuler 项目地址: https://gitcode.com/openeuler/dpu-utilities 前往项目官网免费下载&…

2026/7/2 20:55:18 阅读更多 →
终极敏感数据防护框架:openeuler/cdf-crypto如何提升数据安全等级?

终极敏感数据防护框架:openeuler/cdf-crypto如何提升数据安全等级?

终极敏感数据防护框架:openeuler/cdf-crypto如何提升数据安全等级? 【免费下载链接】cdf-crypto A lib that provides a programming framework for high-strength cryptographic algorithms and key security. 项目地址: https://gitcode.com/openeul…

2026/7/2 20:53:17 阅读更多 →
Kiran Authentication Service与UKey集成:硬件令牌认证完整实现

Kiran Authentication Service与UKey集成:硬件令牌认证完整实现

Kiran Authentication Service与UKey集成:硬件令牌认证完整实现 【免费下载链接】kiran-authentication-service Kiran authentication service is used to do system auth with password, fingerprint, face 项目地址: https://gitcode.com/openeuler/kiran-auth…

2026/7/2 20:53:17 阅读更多 →
Kiran Biometrics PAM模块配置教程:实现系统级生物认证

Kiran Biometrics PAM模块配置教程:实现系统级生物认证

Kiran Biometrics PAM模块配置教程:实现系统级生物认证 【免费下载链接】kiran-biometrics Kiran Biometrics is used do fprint and face auth for system. 项目地址: https://gitcode.com/openeuler/kiran-biometrics 前往项目官网免费下载:htt…

2026/7/2 20:49:16 阅读更多 →

日新闻

Path of Building PoE2:5步掌握流放之路2角色构建的终极免费工具

Path of Building PoE2:5步掌握流放之路2角色构建的终极免费工具

Path of Building PoE2:5步掌握流放之路2角色构建的终极免费工具 【免费下载链接】PathOfBuilding-PoE2 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding-PoE2 还在为《流放之路2》复杂的角色构建而头疼吗?面对上千个天赋节点…

2026/7/2 19:10:19 阅读更多 →
SSH密钥生成原理与跨平台安全实践指南

SSH密钥生成原理与跨平台安全实践指南

1. 为什么今天还必须亲手生成 SSH 密钥——不是“过时操作”,而是安全基建的起点你可能已经点开过几十次 GitHub 的 SSH 设置页,也见过终端里一闪而过的ssh-keygen -t ed25519 -C "your_emailexample.com"命令,但真正理解它在 macO…

2026/7/2 19:10:19 阅读更多 →
GAN工程化实战:从图像合成到物理建模的工业落地路径

GAN工程化实战:从图像合成到物理建模的工业落地路径

1. 项目概述:当GAN不再只是“画图玩具”,它正在悄悄重构现实世界的生产逻辑“Astonishing GAN Applications”——这个标题乍看像科技展会的宣传语,但在我过去三年深度参与17个GAN落地项目的实操经验里,它根本不是修辞&#xff0c…

2026/7/2 19:12:20 阅读更多 →

周新闻

月新闻