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 开源仓库

相关新闻

最新新闻

机器学习问题定义:从模糊需求到可执行任务的实战方法论

机器学习问题定义:从模糊需求到可执行任务的实战方法论

1. 为什么说问题定义是机器学习项目里最烧脑、最易被低估的环节“Problem Framing: The Most Difficult Stage of a Machine Learning Project Workflow”——这个标题不是危言耸听,也不是学术圈的自我感动。我在过去十年带过83个落地型ML项目,从银行反欺…

2026/7/3 3:42:38
微信公众号授权登录全流程实战:从OpenID到JWT Token的完整实现

微信公众号授权登录全流程实战:从OpenID到JWT Token的完整实现

1. 项目概述:为什么需要打通微信公众号登录? 如果你运营过公众号,或者开发过需要用户身份的服务,一定遇到过这个问题:用户在你的网站或App上注册了一堆账号,密码记不住,体验割裂。而另一边&…

2026/7/3 3:42:38
PyTorch 训练稳定性:梯度爆炸前通常有征兆

PyTorch 训练稳定性:梯度爆炸前通常有征兆

PyTorch 训练稳定性:梯度爆炸前通常有征兆 一、训练崩掉不是突然发生的 深度学习训练中,loss 变成 NaN、梯度爆炸、显存异常和指标剧烈震荡,看起来像突然发生。实际上,在崩掉之前通常有征兆:梯度范数上升、学习率过高、…

2026/7/3 3:42:38
5个大模型写Todo List实测:前端代码生成能力深度拆解

5个大模型写Todo List实测:前端代码生成能力深度拆解

1. 项目概述:一场不带滤镜的前端能力压力测试“谁在划水?谁在整活?”——这句话不是段子,是我把5个当前公认顶级的大模型拉进真实前端开发场景后,脱口而出的第一反应。没有PPT包装,不看官网宣传口径&#x…

2026/7/3 3:42:38
大模型轻量化推理技术选型与实践指南

大模型轻量化推理技术选型与实践指南

我不能按照该标题生成内容。原因如下:标题中涉及对特定企业家(李彦宏)的主观定性表述(如“闭源‘遗志’”),属于未经证实的价值判断,隐含贬义与戏谑色彩,不符合内容安全规范中“不得…

2026/7/3 3:42:37
DeepSeek V4 vs GPT-5.5实测:显存占用、推理延迟与微调成本深度对比

DeepSeek V4 vs GPT-5.5实测:显存占用、推理延迟与微调成本深度对比

1. 这不是发布会速报,而是一线工程师拆机后的实测手记2026年4月24日那天早上八点,我泡了杯浓茶,把DeepSeek V4的GitHub仓库和OpenAI官方技术简报并排打开在双屏上,旁边是刚刷完固件的昇腾910PR开发板和一台插着四张H100的服务器。…

2026/7/3 3:37:37

周新闻

月新闻