three.js學習記錄(第二節:鼠標控制相機移動)

效果展示:

鼠標控制

一、鼠標控制 -?軌道控制器(OrbitControls)

? ? ? ? 1. 從nodeModules中導入OrbitControls,OrbitControls 是一個附加組件,必須顯式導入

import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";

注意:從官網上粘貼的引入路徑有時候是不對的,手動從自己的node_modules中找一下OrbitControls.js文件的路徑,核實準確才有效。

????????2. 通過new OrbitControls實例化一個controls,OrbitControls有兩個參數,分別是camera(相機),domElement(用于事件監聽的HTML元素,即當下繪制在界面的canvas元素)

const controls ?= new OrbitControls(camera, renderer.domElement)

????????3. 在動畫循環requestAnimationFrame中實時更新,不斷加載位置的變化 【方案一】

一般多用【方案一】

function animate() {

? ? ? ? requestAnimationFrame( animate );

? ? ? ? controls.update();

? ? ? ? renderer.render( scene, camera );

}

requestAnimationFrame( animate );

注意:如果此處沒有用動畫requestAnimationFrame,僅僅只是new OrbitControls(camera, renderer.domElement),則鼠標控制的效果是看不到的,即使鼠標在移動的過程中相機camera的位置是在不斷變化的,但這個位置并沒實時渲染到canvas上。

? ? ? ? 4. 如果不使用requestAnimationFrame進行渲染相機位置的變化,還可以通過監聽Orbitcontrol的change事件進行渲染,【方案二】

controls.addEventListener('change',() => {

? ? ? ? renderer.render( scene, camera );

})

????????5. 慣性enableDamping(默認為false),鼠標控制相機旋轉時,false情況下鼠標抬起的一瞬間,旋轉效果就立即停止;設置為true時,必須配合動畫requestAnimationFrame,在動畫中通過update方法更新控制器,即當鼠標抬起,物體的旋轉會有個緩沖過程,慢慢停下(更符合物體運動規律)

const controls  = new OrbitControls(camera, renderer.domElement)
controls.enableDamping = true
controls.addEventListener('change',() => {controls.update();renderer.render( scene, camera );
})

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

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

相關文章

Shortest Routes II(Floyd最短路)

題目描述There are n cities and m roads between them. Your task is to process q queries where you have to determine the length of the shortest route between two given cities.輸入The first input line has three integers n, m and q: the number of cities, roads…

分享一個基于Hadoop的二手房銷售簽約數據分析與可視化系統,基于Python可視化的二手房銷售數據分析平臺

💕💕作者:計算機源碼社 💕💕個人簡介:本人八年開發經驗,擅長Java、Python、PHP、.NET、Node.js、Spark、hadoop、Android、微信小程序、爬蟲、大數據、機器學習等,大家有這一塊的問題…

STM32的PWM

PWM作為硬件中幾乎不可或缺的存在,學會 PWM,等于打通了 STM32 的“定時器體系”。學一次,STM32 全系列(甚至 AVR、PIC、ESP32)都能通用。硬件只要一個 I/O 就能驅動功率模塊,非常省成本。不會 PWM&#xff…

OpenCompass傻瓜式入門教程

文章目錄1 我也許不是傻瓜,卻只想做個傻瓜2 環境要求3 安裝3.1 下載源碼3.2 創建虛擬環境3.3 安裝4 下載數據5 查看支持的模型和數據集6 評測6.1 指定模型路徑6.2 指定配置文件6.2.1 評測本地qwen2.5模型6.2.1.1 查看opencompass支持的qwen2.5模型6.2.1.2 創建配置文…

【軟件測試】電商購物項目-各個測試點整理(三)

目錄:導讀 前言一、Python編程入門到精通二、接口自動化項目實戰三、Web自動化項目實戰四、App自動化項目實戰五、一線大廠簡歷六、測試開發DevOps體系七、常用自動化測試工具八、JMeter性能測試九、總結(尾部小驚喜) 前言 1、優惠券的測試點…

流處理、實時分析與RAG驅動的Python ETL框架:構建智能數據管道(上)

> **2025年某電商大促,每秒20萬訂單涌入系統**——他們的風控團隊僅用**47毫秒**就識別出欺詐交易。背后的秘密武器,正是融合流處理、實時分析與RAG的下一代Python ETL框架。 ### 一、范式革命:從批處理到AI增強的ETL 4.0 #### 1.1 數據處理演進史 ```mermaid graph LR …

開源 Arkts 鴻蒙應用 開發(十五)自定義繪圖控件--儀表盤

文章的目的為了記錄使用Arkts 進行Harmony app 開發學習的經歷。本職為嵌入式軟件開發,公司安排開發app,臨時學習,完成app的開發。開發流程和要點有些記憶模糊,趕緊記錄,防止忘記。 相關鏈接: 開源 Arkts …

???????中國工業企業專利及引用被引用數據說明

1319 中國工業企業專利及引用被引用數據說明數據簡介專利近年發文趨勢及主題分布今天數據皮皮俠團隊為大家分享一份2023年12月25日最新更新的中國工業企業專利及引用被引用數據,供大家研究使用。數據來源原始數據來源于國家統計局,由皮皮俠團隊整理計算。…

MySQL知識點(上)

MySQL知識點 一:MySQL概述 MySQL是一款開源的數據庫軟件,是一種關系型數據庫管理系統(ROBMS),也叫做表數據庫管理系統 如果需要快速安全地處理大量的數據,則必須使用數據庫管理系統;任何基于數據…

shell腳本實現sha256sum校驗并拷貝校驗通過的文件

#!/bin/bash# 目標目錄 TARGET_DIR"/appdata/jn1m/versions/old/bin"# 校驗文件 CHECKSUM_FILE"checksum.txt"# 檢查目標目錄是否存在 if [ ! -d "$TARGET_DIR" ]; thenecho "錯誤:目標目錄 $TARGET_DIR 不存在"exit 1 fi#…

中小型泵站物聯網智能控制系統解決方案:構建無人值守的自動化泵站體系

一、系統核心架構與功能設計1.物聯網感知層設備互聯:網關對接壓力傳感器、超聲波液位計、智能電表、振動傳感器等,實時采集水泵運行狀態(流量、壓力、溫度、振動)、液位、水質(pH值、濁度)、能耗等關鍵參數…

網絡通信---Axios

1、什么是 Axios? Axios? 是一個基于 ?Promise? 的 ?HTTP 客戶端,用于瀏覽器和 Node.js 環境,用來發送 ?HTTP 請求(如 GET、POST、PUT、DELETE 等)?。 它常用于: 向后臺 API 發送請求獲取數據提交表…

Ubuntu 軟件源版本不匹配導致的依賴沖突問題及解決方法

在使用 Ubuntu 系統的過程中,軟件包管理是日常操作的重要部分。但有時我們會遇到各種依賴沖突問題,其中軟件源與系統版本不匹配是常見且棘手的一種。本文就來詳細分享一次因軟件源版本不匹配引發的依賴沖突問題,以及具體的解決思路和流程。一…

思考:高速場景的行星輪混動效率如何理解

行星輪混動 E-CVT(電子無級變速器)是一種專為混合動力汽車設計的動力分配系統,其核心原理是通過行星齒輪組和電機的協同工作,實現動力分流與無級變速。 一、核心結構與組成 E-CVT的核心部件包括 行星齒輪組 和 雙電機(…

跨域及解決方案

跨域(Cross-Origin)是指瀏覽器在執行 JavaScript 的時候,因為同源策略(Same-Origin Policy)的限制,阻止了一個網頁去請求不同源(域名、端口、協議有任意一個不同)的資源。 1. 什么是…

PCA降維全解析:從原理到實戰

一文讀懂PCA降維:原理、實現與可視化全解析?本文6000字,涵蓋PCA核心原理、數學推導、代碼實戰及高頻面試題,建議收藏閱讀?一、為什么需要降維?數據爆炸時代的生存法則當數據集的特征維度激增(如基因數據、推薦系統用…

Kafka工作機制深度解析:Broker、Partition 與消費者組協作原理

🐯 Kafka工作機制深度解析:Broker、Partition 與消費者組協作原理 🏁 前言 Kafka 已成為互聯網公司流式數據處理的事實標準,廣泛應用于日志收集、實時計算、事件驅動架構等場景。 很多開發者會用 Kafka,但不了解它底…

深入解析live555:開源流媒體框架的技術原理與應用實踐

引言:流媒體領域的"老兵"與技術基石 在實時音視頻傳輸技術的發展歷程中,live555作為一款誕生于1990年代末的開源項目,至今仍在流媒體服務器、嵌入式設備和安防監控等領域發揮著不可替代的作用。它由Live Networks公司開發并維護&a…

EN55014家用電器、電動工具和類似設備的電磁兼容

一、EN 55014標準定義與屬性?EN 55014 是針對家用電器、電動工具及類似設備的電磁兼容(EMC)標準,主要規定了這類產品在電磁騷擾發射(避免干擾其他設備)和抗擾度(抵抗其他設備干擾)方…

python自學筆記9 Seaborn可視化

Seaborn:統計可視化利器 作為基于 Matplotlib 的高級繪圖庫,有一下功能:一元特征數據 直方圖 import matplotlib.pyplot as plt import pandas as pd import seaborn as sns # import os # # 如果文件夾不存在,創建文件夾 # if…