当前位置: 首页 > news >正文

【2-入门与调试设置】1.坐标辅助器与轨道控制器

文章目录

  • 前言
  • 坐标辅助器的使用
  • 轨道控制器的使用


前言

快速入门开发三维场景时,坐标辅助器和轨道控制器是关键工具。坐标辅助器通过线段形式显示世界坐标系,帮助开发者明确物体位置。而轨道控制器则通过监听页面事件,如鼠标滚轮和滑动,控制相机旋转、缩放和平移,并可实现带阻尼的平滑运动。此外,控制器支持自定义属性,如自动旋转和监听事件对象,以更灵活地控制三维场景。

坐标辅助器的使用

当我们在 three.js 中创建 3D 场景时,我们需要使用一个坐标系来定位和控制对象的位置和方向。three.js 使用的坐标系是右手坐标系,这意味着 X 轴向右,Y 轴向上,Z 轴指向屏幕外。

在右手坐标系中,我们可以使用右手规则来确定一个向量的方向。右手规则指的是,将右手伸出,并将大拇指指向 X 轴的正方向,食指指向 Y 轴的正方向,中指指向 Z 轴的正方向。这样,我们就可以通过确定三个轴的正方向来确定一个向量的方向。

在这里插入图片描述

在官网搜索打开 AxesHelper 类官方文档

在这里插入图片描述

坐标辅助器显示 X、Y、Z 三个轴,红色为 X 轴,绿色为 Y 轴,蓝色为 Z 轴。

const axesHelper = new THREE.AxesHelper(5)
scene.add(axesHelper)

在这里插入图片描述


轨道控制器的使用

轨道控制器用于控制相机的位置和方向,实现拖动、旋转和缩放等操作。 2.在 Three.js 模块中导入轨道控制器,通过 new 创建控制器实例。 3.轨道控制器监听页面事件,如鼠标滚轮滚动,实现相机的旋转和缩放。 4.可以设置阻尼系数,使相机移动具有惯性,看起来更自然。 5.可以设置自动旋转和旋转速度,通过监听 body 事件实现全局控制。 6.禁用旋转、平移和缩放功能,以更好地控制相机。

官网搜索打开 OrbitControls 类官方文档可以查看到轨道控制器的属性和方法,如何使用。

import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'controls = new OrbitControls(camera, renderer.domElement)
// 将其设置为true以启用阻尼(惯性),这将给控制器带来重量感
controls.enableDamping = true
// 当.enableDamping设置为true的时候,阻尼惯性有多大,默认0.05 值越大,阻尼越大,惯性越小
controls.dampingFactor = 0.05
// 当controls对象状态改变时触发的事件 调试输出controls的位置和目标信息
controls.addEventListener('change', function () {console.log(controls.object.position, camera.position)console.log(controls.target)
})function animate() {requestAnimationFrame(animate)controls.update()renderer.render(scene, camera)
}

http://www.lqws.cn/news/527707.html

相关文章:

  • 英特尔汽车业务败走中国,喊出“All in”才过两个月
  • 观测云产品更新 | 外部数据源、日志、监控、事件、基础设施等
  • TCP 协议安全性全面分析:漏洞、应用场景与防护策略
  • 芯谷科技--降压型DC-DC转换器D4005
  • [OS_27] 现代应用程序架构
  • ESP32 VSCODE进入menuconfig时ESP-IDF idf.py menuconfig卡进度条,setuptools版本太高解决方法
  • 小程序学习笔记:实现上拉触底加载随机颜色案例全解析
  • 深度剖析 Apache Pulsar:架构、优势与选型指南
  • 图像质量对比感悟
  • [论文阅读] 人工智能 + 软件工程 | AI 与敏捷开发的破局之路:从挫败到成功的工作坊纪实
  • 推荐一个前端基于vue3.x,vite7.x,后端基于springboot3.4.x的完全开源的前后端分离的中后台管理系统基础项目(纯净版)
  • HTML 按钮单击事件示例
  • 2-深度学习挖短线股-4-预测数据计算
  • 前端项目3-01:登录页面
  • 实测推荐:一款能看4K直播的万能播放器,支持多端同步
  • 全面比较帮你确定何时选择SLM而非LLM
  • C# .NET Framework 中的高效 MQTT 消息传递
  • React HOC(高阶组件-补充篇)
  • Django 零基础起步:开发你的网站第一步
  • IDE如何快速切换JLINK版本
  • Redis 持久化
  • Axure版AntDesign 元件库-免费版
  • 广州华锐互动:技术与创意双驱动的 VR 先锋​
  • Python 中的 random 模块
  • 49-有效的字母异位词
  • 设计模式精讲 Day 14:命令模式(Command Pattern)
  • Web基础关键_001_HTML(一)
  • docker环境下java参数传递与获取
  • FANUC机器人教程:用户坐标系标定及其使用方法
  • 学习永无止境