Three.js搭建小米SU7三維汽車實戰(3)軌道控制器

往期內容:
Three.js搭建小米SU7三維汽車實戰(1)搭建開發環境
Three.js搭建小米SU7三維汽車實戰(2)場景搭建

軌道控制器

軌道控制器可以改變相機在空間坐標系中的位置 進而方便從不同的角度觀察物體 1. 軌道控制器響應鼠標事件(按住左鍵旋轉, 滾輪縮放, 按住右鍵平移) 2. 調整相機在空間坐標系中的位置(坐標值) 3. 改變坐標后, 重新渲染

:::info
相對運動
這里有兩套坐標系統
● 3D世界的坐標系, 由紅綠藍三色線表示
● 相機觀察的坐標系
由于人眼的位置是固定不變的, 相當于站在相機的角度看3D世界
相機不變, 3D世界做相對運動

:::

效果

1) 導入組件

OrbitControls是一個附加組件, 在使用之前需要先導入
// 導入軌道控制器
import { OrbitControls } from 'three/addons/controls/OrbitControls.js'

2) 創建控制器

```javascript // 創建軌道控制器 const controls = new OrbitControls(camera, renderer.domElement) ```

● 相機對象
● 渲染dom

3) 動態渲染

```javascript // 4. 動態渲染 function animation() { controls.update() renderer.render(scene, camera)

requestAnimationFrame(animation)
}
animation()


> <font style="color:rgb(38, 38, 38);">完整示例</font>
>```javascript
// 導入threejs
import * as THREE from 'three'
// 導入軌道控制器
import { OrbitControls } from 'three/addons/controls/OrbitControls.js'// 1. 創建場景
const scene = new THREE.Scene()
// 2. 創建相機
const camera = new THREE.PerspectiveCamera(45,window.innerWidth / window.innerHeight,1,1000
)camera.position.z = 50// 5. 創建立方體(幾何+材質)
const cubeGeometry = new THREE.BoxGeometry(1, 1, 1)
const cubeMaterial = new THREE.MeshNormalMaterial()
const cube = new THREE.Mesh(cubeGeometry, cubeMaterial)
// 添加到場景
scene.add(cube)// 6. 顯示坐標軸(x軸: 紅色; y軸: 綠色; z軸: 藍色 rgb)
// x軸水平方向(右正); y軸垂直方向(上正); z軸垂直xy平面即屏幕(外正)
const axesHelper = new THREE.AxesHelper(10)
scene.add(axesHelper)// 3. 創建渲染器
const renderer = new THREE.WebGLRenderer({ antialias: true })
renderer.setPixelRatio(window.devicePixelRatio)
renderer.setSize(window.innerWidth, window.innerHeight)
document.body.appendChild(renderer.domElement)// 7. 創建軌道控制器
const controls = new OrbitControls(camera, renderer.domElement)// 4. 動態渲染
function animation() {controls.update()renderer.render(scene, camera)requestAnimationFrame(animation)
}
animation()

自適應畫布

當瀏覽器的顯示窗口改變時, 會引起尺寸改變(innerWidth/innerHeight). 此時, 需要調整相機的寬高比和渲染器的成像大小
// 監聽window的resize事件, 在回調中重繪canvas
window.addEventListener('resize', () => {// 設置相機寬高比camera.aspect = window.innerWidth / window.innerHeightcamera.updateProjectionMatrix()// 設置渲染器renderer.setSize(window.innerWidth, window.innerHeight)
})

在這里插入圖片描述
大家可以+下方小助手↓回復關鍵詞 su7 免費獲取視頻版和筆記文檔

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88218.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88218.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88218.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++樹狀數組詳解

C樹狀數組深度解析 第1章 引言&#xff1a;為什么需要樹狀數組 1.1 動態序列處理的挑戰 在現代計算機科學中&#xff0c;我們經常需要處理動態變化的序列數據&#xff0c;這類數據具有以下特點&#xff1a; 實時更新&#xff1a;數據點會隨時間不斷變化頻繁查詢&#xff1a;需要…

TeamT5-ThreatSonar 解決方案:構建智能動態的 APT 與勒索軟件防御體系

一、核心功能深度解析&#xff1a;從威脅狩獵到自動化響應的閉環能力 &#xff08;一&#xff09;威脅狩獵&#xff1a;主動挖掘潛伏性攻擊的 “數字偵探” 多層級威脅識別引擎&#xff1a; 靜態特征匹配&#xff1a;內置超 1000 種 APT 后門簽名&#xff08;如 Regin、Duqu 等…

C#基礎篇(10)集合類之列表

C# 中的列表(List)詳解列表(List)概述在C#中&#xff0c;List<T>是System.Collections.Generic命名空間中的一個泛型集合類&#xff0c;它提供了動態大小的數組功能&#xff0c;可以存儲指定類型的元素。列表的創建與初始化// 創建一個空列表 List<int> numbers n…

SpringBoot訂單模塊核心接口設計與實現

目錄 一、 管理端接口實現 (后臺管理系統) 一、訂單搜索 (高權重 - 核心管理功能) 1.Controller (OrderController): 2.Service (OrderService): 3.ServiceImpl (OrderServiceImpl): 1.使用MyBatis分頁插件PageHelper 2.基礎數據查詢 4.Mapper (OrderMapper): 5.Mapper …

EXCEL鏈接模板無法自動鏈接到PowerBI?試試這個方法

在使用EXCEL鏈接模板連接PowerBI時&#xff0c;你有沒有遇到如圖所示的提示呢&#xff1a;下面我來分享一下&#xff0c;出現彈框的原因及解決方法&#xff1a;首先我們先看一下這個英文翻譯&#xff0c;意思就是說&#xff0c;我們只能使一個PowerBI文件處于打開的狀態&#x…

最新全開源禮品代發系統源碼/電商快遞代發/一件代發系統

簡介&#xff1a;最新全開源禮品代發系統源碼/電商快遞代發/一件代發系統測試環境&#xff1a;Nginx PHP7.2 MySQL5.6圖片&#xff1a;

Android 事件分發機制深度解析

一、事件分發機制核心概念1. 事件分發三要素要素作用關鍵方法事件(Event)用戶觸摸動作的封裝MotionEvent分發者負責將事件傳遞給下級dispatchTouchEvent()攔截者決定是否截斷事件傳遞&#xff08;僅ViewGroup&#xff09;onInterceptTouchEvent()消費者最終處理事件的組件onTou…

從威脅檢測需求看兩類安全監測平臺差異

在網絡安全領域&#xff0c;針對不同場景的威脅檢測需求&#xff0c;衍生處了多種技術架構的安全監測平臺。盡管它們的目標均為“識別異常行為、阻斷潛在威脅”&#xff0c;但根據其核心引擎的配置的技術側重點&#xff0c;可大致分為兩類&#xff1a;聚焦基礎入侵檢測的平臺與…

useContext:React 跨組件數據共享的優雅解決方案

關鍵點 useContext&#xff1a;React 提供的 Hook&#xff0c;用于在組件樹中共享全局狀態&#xff0c;簡化跨組件數據傳遞。應用場景&#xff1a;主題切換、用戶認證、語言設置和全局配置管理。實現方式&#xff1a;結合 createContext 和 useContext&#xff0c;實現靈活的狀…

20250706-8-Docker快速入門(下)-Dockerfile介紹與基本使用_筆記

一、Dockerfile構建鏡像1. Dockerfile概述&#xfeff;定義&#xff1a;Dockerfile是一個用于自動構建鏡像的文本文件&#xff0c;由一條條指令組成工作原理&#xff1a;指令逐步執行&#xff0c;每個指令完成不同功能典型指令示例&#xff1a;FROM centos:latest&#xff1a;基…

Git系列--3.分支管理

目錄 一、理解分支 1.1圖示 1.2 打印倉庫下有哪些分支 1.3創建分支 1.4HEAD與切換分支 1.5合并分支 1.6流程圖理解 二、刪除分支 ? 三、合并分支沖突 3.1.問題導入 3.2.解決 3.3合并圖示 四、合并模式 4.1合并?編輯 4.2變基 五、bug分支 5.1背景建立 5.2解決步驟 5.2.1…

Vue.js TDD開發深度指南:工具鏈配置與精細化測試策略

“TDD不是測試優先的開發&#xff0c;而是設計優先的開發。” —— Robert C. Martin 引言 在Vue.js項目中實施測試驅動開發&#xff08;TDD&#xff09;是構建健壯應用的關鍵路徑。但許多開發者在實踐中常遇到&#xff1a; 工具鏈配置復雜導致放棄不同類型組件測試策略混淆測…

基于物聯網的智能家居控制系統設計與實現

標題:基于物聯網的智能家居控制系統設計與實現內容:1.摘要 隨著物聯網技術的飛速發展&#xff0c;智能家居逐漸成為人們關注的焦點。本文旨在設計并實現一個基于物聯網的智能家居控制系統&#xff0c;以提高家居的智能化水平和用戶的生活便利性。通過采用先進的傳感器技術、通信…

Vue 中使用 Cesium 實現可拖拽點標記及坐標實時顯示功能

在 Cesium 地圖開發中&#xff0c;實現點標記的拖拽交互并實時顯示坐標信息是一個常見的需求。本文將詳細介紹如何在 Vue 框架中使用 Cesium 的 Primitive 方式創建點標記&#xff0c;并實現拖拽功能及坐標提示框跟隨效果。先看效果圖功能實現概述我們將實現的功能包括&#xf…

HTML 插件:構建網頁的強大工具

HTML 插件:構建網頁的強大工具 引言 HTML 插件是網頁設計中不可或缺的一部分,它們為網頁增添了豐富的交互性和動態效果。本文將深入探討 HTML 插件的概念、類型、應用及其在網頁開發中的重要性。 什么是 HTML 插件? HTML 插件,也稱為 HTML 組件或 HTML 控件,是指嵌入到…

NeRF、3DGS、2DGS下三維重建相關方法介紹及以及在實景三維領域的最新實踐

一、引言 在計算機視覺與圖形學領域&#xff0c;三維重建技術正經歷從傳統幾何建模向智能化神經表征的范式轉變。近年來&#xff0c;隨著深度學習算法的迭代、傳感器技術的進步及計算硬件的升級&#xff0c;以神經輻射場&#xff08;NeRF&#xff09;和高斯潑濺&#xff08;2D…

rt thread studio 和 KEIL對于使用rt thread 的中間件和組件,哪個更方便

下面我從中間件/組件集成和開發體驗兩個角度&#xff0c;詳細對比 RT-Thread Studio 和 Keil MDK 的便利性&#xff1a;1. 中間件和組件集成 RT-Thread Studio 集成RT-Thread生態&#xff1a;內置RT-Thread的包管理器&#xff08;RT-Thread Package Manager&#xff09;&#x…

Spring Boot 項目開發實戰:入門應用部分原理示例講解

前言Spring Boot 作為當前 Java 開發領域最流行的框架之一&#xff0c;以其 "約定優于配置" 的理念極大簡化了企業級應用的開發流程。本文將基于《Spring Boot 項目開發教程&#xff08;慕課版&#xff09;》中的資產管理系統項目&#xff0c;深入解析 Spring Boot 的…

ByteBrain x 清華 VLDB25|時序多模態大語言模型 ChatTS

資料來源&#xff1a;火山引擎-開發者社區 近年來&#xff0c;多模態大語言模型&#xff08;MLLM&#xff09;發展迅速&#xff0c;并在圖像、視頻、音頻等領域取得了突破性成果。然而&#xff0c;相較于這些研究較為成熟的模態&#xff0c;時間序列這一類型的數據與大模型結合…

WPF學習筆記(25)MVVM框架與項目實例

MVVM框架與項目實例一、MVVM框架1. 概述2. 核心組件與優勢一、MVVM項目1.普通項目2. MVVM架構3. MVVM項目實例1. 項目準備2. LoginViewModel與Login2. MainWindowViewModel4. MVVM項目優化1. BaseViewModel2. RealyCommand3. 效果展示總結一、MVVM框架 1. 概述 官方文檔&…