threejs創建一個旋轉的正方體【完整代碼】

效果:

中文網three.js docs

1.搭建環境 安裝three

首先我們需要新建一個項目 vue/react都可 這里以vue為演示

npm i three

找到一個新的頁面 在頁面script的地方導入three?

import * as THREE from "three"

或者自己逐個導入

import {PerspectiveCamera,Scene,WebGLRenderer,
} from "three";
import * as THREE from "three"

2.搭建場景

<script>
import {PerspectiveCamera,Scene,WebGLRenderer,
} from "three";
import * as THREE from "three"
export default {mounted() {const scene = new Scene()const camera = new PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );const renderer = new WebGLRenderer();renderer.setSize( window.innerWidth, window.innerHeight );document.body.appendChild( renderer.domElement );}
</script>

簡單介紹:

scence:場景-畫布

camera:相機-PerspectiveCamera(投影攝像機:模擬人眼)-類似于模擬人的眼睛

render:渲染器-(畫布+人=畫) 這里就是一整幅畫

將這一整幅畫插入到body中

3.新建一個立方體

import {PerspectiveCamera,Scene,WebGLRenderer,
} from "three";
import * as THREE from "three"
export default {mounted() {const scene = new Scene()const camera = new PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );const renderer = new WebGLRenderer();renderer.setSize( window.innerWidth, window.innerHeight );document.body.appendChild( renderer.domElement );const geometry = new THREE.BoxGeometry( 1, 1,1 );const material = new THREE.MeshBasicMaterial( {wireframe:true,color: 0x42b983} );const cube = new THREE.Mesh( geometry, material );scene.add( cube );camera.position.z = 5;},}

?簡單介紹:

BoxGeometry:three提供的正方體 xyz

MeshBasicMaterial:基礎材料?wireframe:true:將材料以線條的方式顯示

Mesh:將形狀+材料合并

創造一個立方體 設置好材料 形成一個完整的正方體 將這個完整的正方體添加到場景中

并且將相機拿遠一點 就是camera.postion.z=5

如果不拿遠 我們的視角就在相機內部 如下圖

4.將正方體運動起來

function animate() {requestAnimationFrame( animate );cube.rotation.x += 0.01;cube.rotation.y += 0.01;renderer.render( scene, camera );}animate();

?requestAinmationFrame:動畫針 重復調用animate函數

cube.rotation.y += 0.01:將正方體沿著x軸y軸旋轉0.1

renderer.render( scene, camera ):重新渲染

按照瀏覽器的刷新頻率去讓正方體沿xy旋轉 并且重新渲染

這樣肉眼看起來就像立方體動了起來

5.完整代碼

import {PerspectiveCamera,Scene,WebGLRenderer,
} from "three";
import * as THREE from "three"
export default {mounted() {const scene = new Scene()const camera = new PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );const renderer = new WebGLRenderer();renderer.setSize( window.innerWidth, window.innerHeight );document.body.appendChild( renderer.domElement );const geometry = new THREE.BoxGeometry( 1, 1,1 );const material = new THREE.MeshBasicMaterial( {wireframe:true,color: 0x42b983,} );const cube = new THREE.Mesh( geometry, material );scene.add( cube );camera.position.z = 5;function animate() {requestAnimationFrame( animate );cube.rotation.x += 1;cube.rotation.y += 0.01;renderer.render( scene, camera );}animate();},}

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

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

相關文章

京東采銷面對面,洞悉行業新趨勢 京東3C數碼生態大會在武漢圓滿舉行

為促進湖北省3C數碼產業發展&#xff0c;本地企業降本增效、促進行業交流、充分發揮京東集團全鏈路生態服務能力&#xff0c;支持地方3C特色產業提質增量。2023年11月23日&#xff0c;由京東零售、京東物流主辦&#xff0c;湖北省電子商務行業協會聯合協辦的“聚力共贏、攜手共…

【Kotlin精簡】第9章 Kotlin Flow

1 前言 上一章節我們學習了Kotlin的協程【Kotlin精簡】第8章 協程&#xff0c;我們知道 協程實質是對線程切換的封裝&#xff0c;能更加安全實現異步代碼同步化&#xff0c;本質上協程、線程都是服務于并發場景下&#xff0c;其中協程是協作式任務&#xff0c;線程是搶占式任務…

保姆級 ARM64 CPU架構下安裝部署Docker + rancher + K8S 說明文檔

1 K8S 簡介 K8S是Kubernetes的簡稱&#xff0c;是一個開源的容器編排平臺&#xff0c;用于自動部署、擴展和管理“容器化&#xff08;containerized&#xff09;應用程序”的系統。它可以跨多個主機聚集在一起&#xff0c;控制和自動化應用的部署與更新。 K8S 架構 Kubernete…

從Redis反序列化UserDetails對象異常后中發現FastJson序列化的一些問題

最近在使用SpringSecurityJWT實現認證授權的時候&#xff0c;出現Redis在反序列化userDetails的異常。通過實踐發現&#xff0c;使用不同的序列化方法和不同的fastJson版本&#xff0c;異常信息各不相同。所以特地記錄了下來。 一、項目代碼 先來看看我項目中redis相關配置信息…

視頻號小店常見問題分享,讓你少走彎路,少花冤枉錢!

我是電商珠珠 視頻號團隊自22年7月&#xff0c;就開始發展起了自己的電商平臺-視頻號小店。 關于視頻號小店有很多人可能還不太了解&#xff0c;尤其是對于新手來說&#xff0c;并不知道是干什么的。 我踏足電商這個領域也已經五六年了&#xff0c;視頻號小店也做了一年多了…

SpringBoot集成MapStruct

引入mapstruct依賴 <dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>${org.mapstruct.version}</version> </dependency>配置maven-compiler-plugin <build><plugins>&…

VMware Workstation 17 虛擬機自啟動失效 解決腳本

VMware Workstation17新增加了虛擬機自啟配置 但是很奇怪在我的一臺計算機上能夠自啟&#xff0c;在另一臺計算機上就失效 編寫腳本 以命令方式完成虛擬機開機自啟 #虛擬機自啟.batif "%1""hide" goto CmdBegin start mshta vbscript:createobject("w…

緩存組件狀態,提升用戶體驗:探索 keep-alive 的神奇世界

&#x1f90d; 前端開發工程師&#xff08;主業&#xff09;、技術博主&#xff08;副業&#xff09;、已過CET6 &#x1f368; 阿珊和她的貓_CSDN個人主頁 &#x1f560; 牛客高級專題作者、在牛客打造高質量專欄《前端面試必備》 &#x1f35a; 藍橋云課簽約作者、已在藍橋云…

Day31| Leetcode 455. 分發餅干 Leetcode 376. 擺動序列 Leetcode 53. 最大子數組和

進入貪心了&#xff0c;我覺得本專題是最燒腦的專題 Leetcode 455. 分發餅干 題目鏈接 455 分發餅干 讓大的餅干去滿足需求量大的孩子即是本題的思路&#xff1a; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {…

仿ChatGPT對話前端頁面(內含源碼)

仿ChatGPT對話前端頁面&#xff08;內含源碼&#xff09; 前言布局樣式和Js部分關鍵點全部源碼 前言 本文主要講解如何做出類似ChatGPT的前端頁面。具體我們的效果圖是長這樣&#xff0c;其中除了時間是動態的之外&#xff0c;其他都是假數據。接下來讓我們從布局和樣式的角度…

Android Tombstone 與Debuggerd 原理淺談

一、前言 Android系統類問題主要有stability、performance、power、security。Android集成一個守護進程tombstoned是android平臺的一個守護進程&#xff0c;它注冊成3個socket服務端&#xff0c;客戶端封裝在crash_dump和debuggerd_client。 crash_dump用于跟蹤定位C crash&am…

前端入門(三)Vue生命周期、組件技術、事件總線、

文章目錄 Vue生命周期Vue 組件化編程 - .vue文件非單文件組件組件的注意點組件嵌套Vue實例對象和VueComponent實例對象Js對象原型與原型鏈Vue與VueComponent的重要內置關系 應用單文件組件構建 Vue腳手架 - vue.cli項目文件結構refpropsmixin插件scoped樣式 Vue生命周期 1、bef…

MBA-論證有效性分析

論證有效性分析∶分析下述論證中存在的缺陷和漏洞&#xff0c;選擇若干要點&#xff0c;寫一篇 600 字左石的文章.對該論證的有效性進行分析和評論。&#xff08;論證有效性分析的一般要點是∶概念特別是核心概念的界定和使用是否準確并前后一致&#xff0c;有無各種明顯的邏輯…

cineSync 3.3新功能: 深入iconik集成、激光工具、OTIOZ支持等

cineSync 3.3為大家帶來了靈活性和精準度&#xff0c;使連接審閱會話與iconik中的媒體管理和存儲更加容易&#xff0c;并且引入了顏色配置文件以快速測試顏色配置&#xff0c;還有通過激光指針等新工具帶來新的可能性。 在ftrack&#xff0c;我們意識到當今的遠程創意工作流比以…

vue3 導出數據為 excel 文件

文章目錄 安裝插件封裝組件 -- Export2Excel.js多表封裝界面使用 -- 數據處理成二維數組更多 菜鳥最近做了一個需求&#xff0c;就是需要上傳表單并識別&#xff0c;然后識別出來的內容要可以修改&#xff0c;然后想的就是識別內容變成 form 表單&#xff0c;所以并沒有使用 Sp…

反爬蟲機制與反爬蟲技術(二)

反爬蟲機制與反爬蟲技術二 1、動態頁面處理與驗證碼識別概述2、反爬蟲案例:頁面登錄與滑塊驗證碼處理2.1、用例簡介2.2、庫(模塊)簡介2.3、網頁分析2.4、Selenium準備操作2.5、頁面登錄2.6、模糊移動滑塊測試3、滑塊驗證碼處理:精確移動滑塊3.1、精確移動滑塊的原理3.2、滑…

【模塊補充】importlib

importlib 【一】介紹 importlib 模塊是 Python 中用于動態加載和導入模塊的內置模塊。它提供了一組函數和類&#xff0c;使得我們可以在運行時根據需要加載模塊&#xff0c;并且可以對已導入的模塊進行操作和管理。 【二】詳解及示例&#xff1a; 【1】動態加載模塊&#…

PyQt6簡介

鋒哥原創的PyQt6視頻教程&#xff1a; 2024版 PyQt6 Python桌面開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili2024版 PyQt6 Python桌面開發 視頻教程(無廢話版) 玩命更新中~共計12條視頻&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面開發 視頻教程(無廢話版…

企業遠程訪問業務系統:對比MPLS專線,貝銳蒲公英為何更優優勢?

如今&#xff0c;企業大多都會采用OA、ERP、CRM等各種數字化業務系統。 私有云、公有云混合架構也變得越來越常見。 比如&#xff1a;研發系統部署在公司本地私有云、確保數據安全&#xff0c;OA采用公有云方案、滿足隨時隨地訪問需求。 如此一來&#xff0c;也產生了遠程訪問…

js前端跨屏效果

效果: 三個球 源碼: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>三個球</title> </h…