vue+three.js渲染3D模型

安裝three.js:

npm install three

頁面部分代碼:

<div style="width: 100%; height: 300px; position: relative;"><div style="height: 200px; background-color: white; width: 100%; position: absolute; top: 0;"><div id="threeView" style="width: 100%; height: 200px; background-color: #f1f1f1; position: absolute; bottom: 0;"></div>
</div>

js部分代碼:

initThree(){console.log('打印場景API',THREE.Scene)scene=new THREE.Scene();var ambient = new THREE.AmbientLight(0xffffff,5);scene.add(ambient) //添加環境光var width = window.innerWidthvar height = 300var k = width/height;camera = new THREE.PerspectiveCamera(45,k,1,1000);camera.position.set(0,0,20);camera.lookAt(new THREE.Vector3(0, 0, 0));renderer = new THREE.WebGLRenderer({antialias: true});renderer.setSize(width, height);renderer.setClearColor(0XECF1F3, 0);const element = document.getElementById('threeView');element.appendChild(renderer.domElement);renderer.render(scene, camera);this.animate();},createControls() {controls = new OrbitControls(camera, renderer.domElement)controls.enableZoom = true;},// 修改為僅使用STLLoader加載模型的方法loadSTLModel() {let loader = new GLTFLoader();loader.load('scene.gltf', function(gltf) {// 使用加載的幾何體創建材質和網格console.log(loader)// const material = new THREE.MeshPhongMaterial({// 	color: 0xffffff// });// const mesh = new THREE.Mesh(geometry, material);const mesh = gltf.scene;scene.add(mesh);const rotationXDegrees = -90 // 模型沿X軸旋轉45度const rotationXRadians = THREE.MathUtils.degToRad(rotationXDegrees);mesh.rotation.y = rotationXRadians;// 添加模型到場景scene.add(mesh);// 調整模型大小mesh.scale.set(3, 3, 3);// 設置模型位置mesh.position.set(0, 0, 0);const animations = gltf.animations;if (animations && animations.length > 0) {// 創建一個動畫混合器this.mixer = new THREE.AnimationMixer(mesh);// 查找你想播放的動畫,例如假設第一個動畫是開門動畫const animationAction = this.mixer.clipAction(animations[0]);this.start=this.mixer.clipAction(animations[0]);animationAction.stop(); // 默認播放動畫}}.bind(this));}

部分效果圖:

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

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

相關文章

【繞過無限Debugger】

文章目錄 引言無限Debugger的工作原理繞過無限Debugger的常用技巧條件斷點法置空法代碼修改與加密 引言 在Web開發中&#xff0c;debugger語句是一種強大的JavaScript功能&#xff0c;允許開發者在代碼中設置斷點&#xff0c;便于調試和理解代碼執行流程。然而&#xff0c;這一…

【文末附gpt升級秘笈】程序的“通用性”與“過度設計”的困境

程序的“通用性”與“過度設計”的困境 四、解決方案的深入闡述 &#xff08;一&#xff09;明確需求和目標&#xff1a;需求驅動設計 在軟件開發的初期&#xff0c;我們需要與業務團隊緊密合作&#xff0c;深入了解項目的實際需求和目標。這不僅包括明確的功能需求&#xf…

filelist中+incdir+的用法

在大多數 Verilog 編譯器&#xff08;如 VCS、ModelSim/Questa、Verilator&#xff09;中&#xff0c;使用 incdir 選項指定包含路徑后&#xff0c;仍然需要在 filelist 文件中列出每一個 Verilog 源文件。incdir 選項僅告訴編譯器在特定目錄中查找頭文件&#xff08;例如 .vh …

go語言day4 引入第三方依賴 整型和字符串轉換 進制間轉換 指針類型 浮點數類型 字符串類型

Golang依賴下載安裝失敗解決方法_安裝go依賴超時怎么解決-CSDN博客 go安裝依賴包&#xff08;go get, go module&#xff09;_go 安裝依賴-CSDN博客 目錄 go語言項目中如何使用第三方依賴&#xff1a;&#xff08;前兩步可以忽略&#xff09; 一、安裝git&#xff0c;安裝程序…

linux學習week1

linux學習 一.介紹 1.概述 linux的讀法不下10種 linux是一個開源的操作系統&#xff0c;操作系統包括mac、windows、安卓等 linux的開發版&#xff1a;Ubuntu&#xff08;烏班圖&#xff09;、RedHat&#xff08;紅帽&#xff09;、CentOS linux的應用&#xff1a;linux在服…

歸并排序與快速排序總結-c++

一&#xff0c;歸并排序 歸并排序&#xff08;Merge sort&#xff09;是建立在歸并操作上的一種有效的排序算法。該算法分治法&#xff08;Divide and Conquer&#xff09;的一個非常典型的應用。 作為一種典型的分而治之思想的算法應用&#xff0c;歸并排序的實現由兩種方法…

KVM網絡模式設置

一、KVM網絡模式介紹 1、NAT ( 默認上網 ) 虛擬機利用host機器的ip進行上網,對外顯示一個ip;virbr0是KVM 默認創建的一個 Bridge,其作用是為連接其上的虛機網卡提供NAT訪問外網的功能,默認ip為192.168.122.1 2、自帶的Bridge 將虛擬機橋接到host機器的網卡上,vm和ho…

mysql如何一句實現二行數據的列對換?

二行數據相同列內容對換 思路&#xff1a;先用多表聯查的方式查詢出這二行數據&#xff0c;再將查詢改成修改語句&#xff0c;需要對換的列相互設置值。 //查詢 SELECT * fromser_ele_detail AS rule1JOIN ser_ele_detail AS rule2 ON ( rule1.account_no rule2.account_no …

240622_昇思學習打卡-Day4-ResNet50遷移學習

240622_昇思學習打卡-Day4-ResNet50遷移學習 我們對事物的認知都是一點一點積累出來的&#xff0c;往往借助已經認識過的東西&#xff0c;可以更好地理解和認識新的有關聯的東西。比如一個人會騎自行車&#xff0c;我們讓他去騎摩托車他也很快就能學會&#xff0c;比如已經學會…

使用容器部署redis_設置配置文件映射到本地_設置存儲數據映射到本地_并開發java應用_連接redis---分布式云原生部署架構搭建011

可以看到java應用的部署過程,首先我們要準備一個java應用,并且我們,用docker,安裝一個redis 首先我們去start.spring.io 去生成一個簡單的web項目,然后用idea打開 選擇以后下載 放在這里,然后我們去安裝redis 在公共倉庫中找到redis . 可以看到它里面介紹說把數據放到了/dat…

理解和實現 LFU 緩存置換算法

引言 在計算機科學中&#xff0c;緩存是一種重要的技術&#xff0c;用于提高數據訪問速度和系統性能。然而&#xff0c;由于緩存空間有限&#xff0c;當緩存滿了之后&#xff0c;就需要一種智能的策略來決定哪些數據應該保留&#xff0c;哪些應該被淘汰。LFU&#xff08;Least…

FLASH閃存

FLASH閃存 程序現象&#xff1a; 1、讀寫內部FLASH 這個代碼的目的&#xff0c;就是利用內部flash程序存儲器的剩余空間&#xff0c;來存儲一些掉電不丟失的參數。所以這里的程序是按下K1變換一下測試數據&#xff0c;然后存儲到內部FLASH&#xff0c;按下K2把所有參數清0&…

找不到mfc140u.dll怎么修復,mfc140u.dll丟失的多種修復方法

計算機丟失mfc140u.dll文件會導致依賴該文件的軟件無法正常運行。mfc140u.dll是Microsoft Visual C 2015的可再發行組件之一&#xff0c;它屬于Microsoft Foundation Class (MFC) 庫&#xff0c;許多使用MFC開發的程序需要這個DLL文件來正確執行。丟失了mfc140u.dll文件。會導致…

無人機無刷電機理論教學培訓課程

本文檔為一份關于Brushless電機理論的詳細教程&#xff0c;由TYTO Robotics編制&#xff0c;旨在幫助用戶理解brushless電機的工作原理、特性以及如何通過實驗測定其關鍵參數Kv和Kt。文檔首先介紹了brushless電機的基本組成&#xff0c;包括靜止的定子和旋轉的轉子&#xff0c;…

AR增強現實在橋梁工程專業課堂上的應用

橋梁工程專業課堂上應用增強現實技術具有多方面的優勢。首先&#xff0c;增強現實技術能夠提供更加直觀、生動、真實的橋梁工程學習環境&#xff0c;使學生能夠更好地理解和掌握橋梁工程的基本原理和設計方法。其次&#xff0c;增強現實技術能夠提供更加豐富的橋梁工程案例和實…

考研數學|線代零基礎,聽誰的課比較合適?

線性代數是數學的一個重要分支&#xff0c;對于考研的學生來說&#xff0c;掌握好這門課程是非常關鍵的。由于你之前沒有聽過線性代數課&#xff0c;選擇一個合適的課程和老師就顯得尤為重要。 以下是一些建議&#xff0c;希望能幫助你找到合適的課程資源。 首先&#xff0c;…

Hadoop3:MapReduce中的ETL(數據清洗)

一、概念說明 “ETL&#xff0c;是英文Extract-Transform-Load的縮寫&#xff0c;用來描述將數據從來源端經過抽取&#xff08;Extract&#xff09;、轉換&#xff08;Transform&#xff09;、加載&#xff08;Load&#xff09;至目的端的過程。ETL一詞較常用在數據倉庫&#…

python學習 - 設計模式 - 狀態模式

大話設計模式 設計模式——狀態模式 狀態模式(State Pattern):當一個對象的內在狀態改變時允許改變其行為&#xff0c;這個對象看起來像是改變了其類 應用場景:當控制一個對象的狀態轉換的條件表達式過于復雜時,把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把復雜的…

LED顯示屏的點間距越小越好嗎

引言 在LED顯示屏市場日趨成熟的同時&#xff0c;小間距顯示屏成為了許多用戶的首選。然而&#xff0c;點間距真的是越小越好嗎&#xff1f;本文將探討這一問題&#xff0c;并提供全面的選購指南。 點間距&#xff1a;并非越小越好 小間距顯示屏因其精細的顯示效果而備受青睞。…