Three.js——相機

在Three.js中,相機(Camera)是用于定義視圖和渲染場景的一個關鍵組件。相機決定了你從哪個角度和位置觀察場景中的物體,以及如何呈現這些物體。Three.js 提供了幾種不同類型的相機,每種相機都有其特定的用途和特性。以下是Three.js中常用的相機類型及其特點:

常見的相機類型

PerspectiveCamera(透視相機):

模擬人類眼睛的視角,具有透視效果,遠處的物體顯得較小。
常用于3D場景中,以提供更真實的視覺體驗。
構造函數參數:PerspectiveCamera(fov, aspect, near, far)
fov(視野):垂直視野角度,以度為單位。
aspect(縱橫比):通常是畫布的寬高比。
near(近剪切面):攝像機到近剪切面的距離。
far(遠剪切面):攝像機到遠剪切面的距離。

const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.set(0, 0, 5);

OrthographicCamera(正交相機):

不具有透視效果,平行投影,遠處的物體不會顯得較小。
常用于2D場景或需要精確測量的場景。
構造函數參數:OrthographicCamera(left, right, top, bottom, near, far)
left、right、top、bottom:定義視景體的邊界。
near(近剪切面):攝像機到近剪切面的距離。
far(遠剪切面):攝像機到遠剪切面的距離。

const aspect = window.innerWidth / window.innerHeight;
const camera = new THREE.OrthographicCamera(-aspect * 5, aspect * 5, 5, -5, 0.1, 1000);
camera.position.set(0, 0, 5);

相機的基本操作

設置位置:

使用 position 屬性設置相機的位置。

camera.position.set(x, y, z);

看向目標:

使用 lookAt 方法設置相機的朝向。

camera.lookAt(new THREE.Vector3(0, 0, 0));

更新投影矩陣:

在修改相機參數后,調用 updateProjectionMatrix 方法更新相機的投影矩陣。

camera.updateProjectionMatrix();

創建一個簡單的Three.js場景并使用透視相機

// 創建場景
const scene = new THREE.Scene();// 創建透視相機
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;// 創建渲染器
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);// 創建幾何體和材質
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });// 創建網格對象并添加到場景中
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);// 渲染循環
function animate() {requestAnimationFrame(animate);// 旋轉立方體cube.rotation.x += 0.01;cube.rotation.y += 0.01;// 渲染場景renderer.render(scene, camera);
}animate();

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

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

相關文章

Unity OutLine 模型外描邊效果

效果展示: 下載鏈接

【Rust日報】ratatui版本更新

[new ver] ratatui v0.26.3 一個構建終端用戶界面的庫。新版本包括: 修復Unicode 截斷 bug對顏色更好地序列化更快的渲染棄用assert_buffer_eq宏暴露錯誤類型常量函數和類型 官網: https://ratatui.rs/ 鏈接: https://ratatui.rs/highlights/v0263/ [new lib] ansi2…

618電商選品爆款攻略,誰掌握誰爆單

618電商節是各大電商平臺和品牌商家的重要促銷節點,選品和營銷策略對于銷售成績至關重要。以下是一些選品和營銷攻略的要點: 一、市場分析與目標定位 1、分析當前經營類目市場的流行趨勢、熱門品類以及消費者需求的變化。 目前市場上商品繁多&#xf…

Java 命令執行某一個特定類

在Java中,要執行一個特定的類(通常是包含main方法的類),你需要使用java命令,并指定類的完全限定名(包括包名)。通常,這還需要你設置正確的類路徑(classpath)&…

Apache Cassandra和Java:介紹如何在Java中連接和使用Apache Cassandra這款數據庫

1. Apache Cassandra簡介 Apache Cassandra是一個開源的分布式NoSQL數據庫系統,最初由Facebook開發,用來處理大量的結構化數據 across many commodity servers. Cassandra在高可用性和無單點故障的同時,提供了出色的數據分布策略。 Apache Cassandra的主要特點: 分布式…

超詳細避坑指南!OrangpiAIPro轉換部署模型全流程!

目錄 OrangepiPro初體驗 前述: 一、硬件準備 二、安裝CANN工具鏈(虛擬機) 三、配置模型轉換環境(虛擬機) 1.安裝miniconda 。 2.創建環境。 3.安裝依賴包 四、轉換模型 1. 查看設備號(開發板&…

一步一腳印:輕松掌握服務器硬件的奧秘

在這個信息化飛速發展的時代,無論是企業還是個人,對數據處理和存儲的需求日益增長。服務器,作為互聯網的基石,其重要性不言而喻。但對于大多數人來說,服務器的內部世界似乎既復雜又遙遠。不過,不用擔心&…

在Anaconda中修改查找和安裝軟件包的存儲庫的來源channels

以下是一些關鍵的步驟和命令&#xff0c;用于修改Anaconda的channels&#xff1a; 查看當前channels 使用命令 conda config --show channels 可以查看當前配置的channels。 添加新的channel 使用命令 conda config --add channels <channel_url> 來添加一個新的channel…

TIM定時器PWM輸出

tim.c #include "tim.h" #include "stm32mp1xx_tim.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h"//tim4初始化(蜂鳴器) void tim4_init(){//1.使能GPIOB的外設時鐘RCC->MP_AHB4ENSETR | (0x1<<1);//使能TI…

辦公必備!一鍵拆分文件,效率翻倍的秘密

需求介紹 1、我有一張數據表“測試數據.xlsx” 2、我要根據A1“COUNTY_CODE”分類拆分成幾張數據表&#xff08;這里從9657到9658共12類&#xff0c;就是拆分成12張數據表&#xff09; 3、根據12個分類&#xff0c;發送數據郵件給對應的收件人 4、收件人及抄送人、共同抄送人…

Appium系列(2)元素定位工具appium-inspector

背景 如實現移動端自動化&#xff0c;依賴任何工具時&#xff0c;都需要針對于頁面中的元素進行識別&#xff0c;通過識別到指定的元素&#xff0c;對元素進行事件操作。 識別元素的工具為appium官網提供的appium-inspector。 appium-inspector下載地址 我這里是mac電腦需要下…

基于Cloudflare/CloudDNS/GitHub使用免費域名部署NewBing的AI服務

部署前準備&#xff1a; Cloudflare 賬號 https://dash.cloudflare.com/login CloudDNS 賬號 https://www.cloudns.net/ GitHub 賬號 https://github.com/Harry-zklcdc/go-proxy-bingai Cloudflare 部署 Worker CloudDNS 獲取免費二級域名 GitHub New Bing Ai 項目 https://git…

揭秘黃金分割數列:斐波那契數列的奇妙之旅

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、黃金分割數列——斐波那契數列的簡介 二、實現斐波那契數列的函數 三、斐波那契數列在…

前端開發之xlsx的使用和實例,并導出多個sheet

前端開發之xlsx的使用和實例 前言效果圖1、安裝2、在頁面中引用3、封裝工具類&#xff08;excel.js&#xff09;4、在vue中使用 前言 在實現業務功能中導出是必不可少的功能&#xff0c;接下來為大家演示在導出xlsx的時候的操作 效果圖 1、安裝 npm install xlsx -S npm inst…

Discuz!X3.4論壇網站公安備案號怎樣放到網站底部?

Discuz&#xff01;網站的工信部備案號都知道在后臺——全局——站點信息——網站備案信息代碼填寫&#xff0c;那公安備案號要添加在哪里呢&#xff1f;并沒有看到公安備案號填寫欄&#xff0c;今天馳網飛飛和你分享 1&#xff09;工信部備案號和公安備案號統一填寫到網站備案…

數據預處理

數據預處理 引入一.配置java , hadoop , maven的window本機環境變量1.配置2.測試是否配置成功 二.創建一個Maven項目三.導入hadoop依賴四.數據清洗1.數據清洗的java代碼2.查看數據清洗后的輸出結果 引入 做數據預處理 需要具備的條件 : java,hadoop,maven環境以及idea軟件 一…

斯坦福2024人工智能指數報告 2

《人工智能指數報告》由斯坦福大學、AI指數指導委員會及業內眾多大佬Raymond Perrault、Erik Brynjolfsson 、James Manyika、Jack Clark等人員和組織合著&#xff0c;旨在追蹤、整理、提煉并可視化與人工智能&#xff08;AI&#xff09;相關各類數據&#xff0c;該報告已被大多…

靜態網站部署指南

一、資源準備 1.1 服務器 # 當前的服務器,公網ip:127.0.0.1 # 通過ssh協議連接訪問服務器1.2 域名 目前個人擁有的域名有: 域名所有者有效期wujinet.top個人2029-04-151.3 網站代碼 純靜態網站,網站源碼由筆者自行開發并提供發布部署的技術支持。 二、技術棧 2.0 源碼…

linux部署rustdesk

1.拉取RustDesk鏡像 sudo docker image pull rustdesk/rustdesk-server2.啟動hbbs服務 sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v pwd:/root -td --nethost rustdesk/rustdesk-server hbbs3.啟動hbbr服務 sudo dock…

spring boot 之 結合aop整合日志

AOP 該切面僅用于請求日志記錄&#xff0c;若有其他需求&#xff0c;在此基礎上擴展即可&#xff0c;不多逼逼&#xff0c;直接上代碼。 引入切面依賴 <!-- 切面 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>sp…