尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Three.js 点击第三人称移动教程
点击第三人称移动 ·Person Move· ▶ 在线运行案例案例合集三维可视化功能案例threehub.cn开源仓库github地址https://github.com/z2586300277/three-cesium-examples400个案例代码:网盘链接你将学到什么AnimationMixer 骨骼动画播放与过渡glTF/FBX/OBJ 外部模型加载相机交互控制器GSAP / anime.js 属性动画requestAnimationFrame 渲染循环效果说明本案例演示点击第三人称移动效果支持鼠标拾取、绘制或拖拽交互核心用到 OrbitControls、glTF/Draco、GSAP。建议先打开文首在线案例查看动态画面再对照下方源码逐步理解。核心概念AnimationMixer驱动 glTF 骨骼动画每帧mixer.update(delta)。动作切换可用crossFadeTo平滑过渡。Loader异步加载模型glTF 返回gltf.scene加载后注意scale与坐标系。Draco 需配置DRACOLoader。OrbitControls轨道旋转缩放开enableDamping时每帧需controls.update()。时间线库驱动 position/rotation/uniform与 rAF 渲染循环配合。实现步骤搭建 Scene / Camera / Renderer 与 OrbitControlsLoader 异步加载模型/纹理资源rAF 循环中 update 并 render代码要点import * as THREE from threeimport { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { GLTFLoader } from three/examples/jsm/loaders/GLTFLoader.js import gsap from gsapconst box document.getElementById(box)const scene new THREE.Scene()const camera new THREE.PerspectiveCamera(75, box.clientWidth / box.clientHeight, 0.1, 1000)camera.position.set(5, 5, 5)const renderer new THREE.WebGLRenderer({ antialias: true, alpha: true, logarithmicDepthBuffer: true })renderer.setSize(box.clientWidth, box.clientHeight)box.appendChild(renderer.domElement)const controls new OrbitControls(camera, renderer.domElement)scene.add(new THREE.AmbientLight(0xffffff, 4), new THREE.GridHelper(40, 20))animate()function animate() {requestAnimationFrame(animate)renderer.render(scene, camera)}let group nullnew GLTFLoader().load(FILE_HOST files/model/Soldier.glb,gltf {group gltf.scenescene.add(group)const clock new THREE.Clock() // 时钟const mixer new THREE.AnimationMixer(group) // 模型动画group.mixerAnimateRender () mixer.update(clock.getDelta()) // 动画帧group.currentAction mixer.clipAction(gltf.animations[3]) // walk 动画})const raycaster new THREE.Raycaster() // 射线const targetPositon new THREE.Vector3() // 目标位置const plane new THREE.Plane(new THREE.Vector3(0, 1, 0), 0) // 碰撞面// 点击事件 box.addEventListener(click, (event) {const mouse new THREE.Vector2((event.offsetX / event.target.clientWidth)2 - 1, -(event.offsetY / event.target.clientHeight)2 1)raycaster.setFromCamera(mouse, camera)raycaster.ray.intersectPlane(plane, targetPositon)const mesh new THREE.Mesh(new THREE.BoxGeometry(0.1, 0.1, 0.1), new THREE.MeshBasicMaterial())mesh.position.copy(targetPositon)scene.add(mesh)goAddress(group, targetPositon)})let oldgsap nullfunction goAddress(group, targetPositon) {oldgsap?.kill() // 停止上一个动画const distance group.position.distanceTo(targetPositon) // 距离const vector camera.position.clone().sub(group.position) // camera 和 group 差向量group.lookAt(targetPositon) // 模型朝向group.rotation.y Math.PI // 朝向纠正const duration distance / 3 // 距离 / 速度oldgsap gsap.to(group.position, {...targetPositon, duration, ease: none,onStart: () {controls.enabled false // 禁止控制group.currentAction.play() // 播放动画},onUpdate: () {group.mixerAnimateRender() // 动画帧controls.target.copy(group.position) // 目标跟随 camera.position.lerp(group.position.clone().add(vector), 0.1) // 相机跟随},onComplete: () controls.enabled true // 恢复控制})}完整源码GitHub小结本文提供点击第三人称移动完整 Three.js 源码与在线 Demo建议先运行案例再改 uniform/参数做二次实验更多 Three.js 实战案例见 three-cesium-examples 合集 与 GitHub 开源仓库
RELATED

相关推荐

AI与大模型新闻日报 | 2026-07-16

AI与大模型新闻日报 | 2026-07-16

AI与大模型新闻日报20260716大模型技术共 14 条新闻1. 我国首个水风光一体化智慧运营大模型发布来源: IT 之家时间: 2026-07-16 00:42摘要: IT之家 7 月 16 日消息,据央视新闻今日报道,从国投集团雅砻江公司获悉,我国首个水风光一体化智慧运营…

📅 2026/10/29 21:20:50
AD高效设计:一键导入与分类管理原理图库PCB库实战指南

AD高效设计:一键导入与分类管理原理图库PCB库实战指南

1. 为什么需要分类管理的原理图库和PCB库? 刚入行那会儿,我最头疼的就是每次画板子都要重复找元器件封装。有一次赶项目,画个STM32的最小系统板,光是找QFP-100封装就花了半小时,更别提那些电阻电容的封装匹配问题了。后…

📅 2026/9/17 16:32:32
生化危机4高清重制版代码镜像下载2026最新下载最快

生化危机4高清重制版代码镜像下载2026最新下载最快

下载链接 基于旧作引擎的底层资产重构:解析《生化危机4》民间高清化工程的技术实现与核心机制 在游戏软件工程与图形学领域,对老旧商业游戏资产(Legacy Assets)的维护与翻新通常分为两条路径:原厂的重构(…

📅 2026/9/11 4:42:01
MORE NEWS

更多资讯

📰

GraphRAG多模态技术解析与应用实践

1. GraphRAG多模态技术解析:当AI学会"看图说话听音"上周在调试一个跨模态检索系统时,我偶然发现GitHub趋势榜上突然涌现大量标着"GraphRAG"的项目。这个结合了图神经网络(GNN)与检索增强生成(RAG&…

📰

impeccable高级表达指南:从词源到搭配,告别只会用perfect

有些词,你明明认识它,甚至查过字典,但你始终不敢用它。impeccable 就是其中一个。我最早对它有印象,是在读一篇人物专访时看到这句话:His manners were impeccable.(他的举止无可挑剔。)当时第一…

📰

context-mode全解析:LLM长对话的上下文管理与RAG混合实战

最近我在好几个 LLM 应用项目里反复遇到同一个问题:对话一旦超过十几轮,模型就开始把前面说过的事情忘得一干二净。最开始我以为是模型能力不行,后来排查了半天才发现,问题出在我根本没搞懂 context-mode。它不是一个 SDK 里随手一…

📰

SeekDB:自然语言转SQL的高效数据库查询工具

1. SeekDB项目概述:当自然语言遇上数据库查询在数据分析师的日常工作中,最耗时的往往不是分析过程本身,而是编写SQL查询语句。想象一下这样的场景:产品经理突然需要知道"上周华东地区25-30岁女性用户中购买过美妆产品但未下单…

📰

PXIe/PXI全混合8槽4 Link背板:架构解析与系统集成实战

1. 拆解这块“宝藏硬件”:全混合8槽4 Link背板到底在解决什么问题第一次拿到一块标着“PXIe/PXI全混合8槽4 Link”的背板时,很多人的第一反应是“这不就是一块插槽底板吗”。真上手做系统集成才发现,背板是整个测试测量机箱的骨架和神经中枢&…

📰

Flutter在OpenHarmony上的游戏开发实战

1. 项目背景与目标 在移动应用开发领域,跨平台框架Flutter因其高效的渲染性能和丰富的UI组件库而广受欢迎。而OpenHarmony作为国产开源操作系统,正在构建自己的应用生态。将Flutter应用于OpenHarmony平台,特别是游戏类App开发,是一…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬