threejs 安裝教程

? ? ? ? 嗨,我是小路。今天主要和大家分享的主題是“threejs 安裝教程”。? ? ? ??

在當今的數字化時代,用戶對視覺體驗的要求越來越高。傳統的2D網頁已經無法滿足所有需求,而三維(3D)圖形技術則為前端開發者提供了新的方向。

Three.js 是一個強大的 JavaScript 庫,專門用于創建和展示復雜的3D圖形,并且可以直接在瀏覽器中運行。本文將為你詳細介紹在項目開發過程中如何創建vue3項目,并在vue3結合Three.js進行3D網頁的開發,幫助你快速入門并創建令人驚嘆的3D網頁應用。

一、創建vue3項目

1.安裝nvm

注意:想要創建vue3項目,前提是安裝對應的nodejs。在實際的開發中,我們經常會遇到不同的項目使用不同的nodejs版本,就會出現頻繁切換nodejs的情況。為了解決這個問題,推薦小伙伴們使用nvm安裝nodejs。具體的安裝教程,可以點擊查看以下鏈接:NVM 重新設置開發環境-CSDN博客

2.安裝vue3

注意:在安裝nvm時,注意下載對應的nodejs版本。這個項目中主要使用的nodejs是18.20.2版本。在nodejs安裝完成之后,緊接著安裝對應的vite,并運用vite創建vue項目。具體的步驟可以參考以下的npm命令:

#安裝vite
npm install vite --save-dev   #創建vue項目
npm create vite myCase1 --template vue#項目初始化  進入到myCase1項目,安裝對應的依賴
cd myCase1
npm install
#啟動項目
npm run dev

3.安裝vue-router

注意:router的安裝步驟,可以參考以下鏈接:
vue3 創建vue-router-CSDN博客

vue2 配置router_vue2 router.js-CSDN博客

二、安裝threejs

1、vue安裝threejs

// 比如安裝148版本
npm install three@0.148.0 --save

3、加載three.js

three.js依賴可以直接在對應的頁面中進行加載。如下圖:

3、按照概念搭建示例

<template><div class="pageBox"><div class="leftBox" ref="leftRef"></div><div class="rightBox"></div></div></template>
<script setup>
import { onMounted, reactive, ref } from 'vue';
import * as THREE from 'three';
// 引入軌道控制器擴展庫OrbitControls.js
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
// 設置相機控件軌道控制器OrbitControls
const leftRef = ref();
// 定義相機輸出畫布的尺寸(單位:像素px)
let width = 800; //寬度
let height = window.innerHeight; //高度
// 創建3D場景對象Scene
const scene = new THREE.Scene();// 實例化一個透視投影相機對象
const camera = new THREE.PerspectiveCamera(50, width / height, 2, 6000);//創建一個長方體幾何對象Geometry
const geometry = new THREE.BoxGeometry(50, 50, 50);//創建一個材質對象Material
const material = new THREE.MeshBasicMaterial({color: 0xff0000,//0xff0000設置材質顏色為紅色
});
//將集合形體和材質融合
const mesh = new THREE.Mesh(geometry, material); //網格模型對象Mesh// 創建渲染器對象
const renderer = new THREE.WebGLRenderer();onMounted(() => {initData()render();//添加相機空間const controls = new OrbitControls(camera, renderer.domElement);// 如果OrbitControls改變了相機參數,重新調用渲染器渲染三維場景controls.addEventListener('change', function () {renderer.render(scene, camera); //執行渲染操作});//監聽鼠標、鍵盤事件//當窗口發生改變時,觸發時間,重新渲染window.onresize = () => {height = window.innerHeight;width = window.innerWidth / 2;renderer.setSize(width, height); //設置three.js渲染區域的尺寸(像素px)initData()}
})
const initData = () => {//設置網格模型在三維空間中的位置坐標,默認是坐標原點mesh.position.set(0, 10, 0);scene.add(mesh);//相機在Three.js三維坐標系中的位置// 根據需要設置相機位置具體值camera.position.set(200, 200, 200);camera.lookAt(mesh.position);//指向mesh對應的位置// AxesHelper:輔助觀察的坐標系const axesHelper = new THREE.AxesHelper(150);scene.add(axesHelper);renderer.setSize(width, height); //設置three.js渲染區域的尺寸(像素px)//將innerHTML置空,避免append重復添加渲染leftRef.value.innerHTML = ''leftRef.value.append(renderer.domElement);
}
//渲染
const render = () => {renderer.render(scene, camera); //執行渲染操作mesh.rotateY(0.01);//每次繞y軸旋轉0.01弧度mesh.rotateX(0.01);//每次繞x軸旋轉0.01弧度mesh.rotateZ(0.01);//每次繞z軸旋轉0.01弧度//重復渲染requestAnimationFrame(render);//請求再次執行渲染函數render,渲染下一幀
}</script>
<style scoped lang="less">
.pageBox {width: 100%;height: 100vh;padding: 0;margin: 0;display: flex;justify-content: space-between;align-items: center;.rightBox {width: 100%;height: 100%;background: yellow;}
}
</style>

三、回顧反思

1.項目流程

注意:視圖效果基礎的三要素是場景、相機和渲染。

第一步將需要創建的幾何形和材質融合在一起,形成新的對象;第二步將相機聚焦新對象的位置,在屏幕展示出來;最后再將整個項目進行持續渲染,呈現整個3D模型渲染效果。

其它項目的不同就是在這基礎上進行進行細化,深化。

2.遇到頁面高寬變動時,幾何圖形運轉加快

注意:在渲染的過程中,注意將innerHTML進行清空,因為append會將項目加載在父類上,不會刪除原來存在的實例,會直接在父類的末尾添加子元素,導致幾何體在一個定位上重復添加,呈現快速轉動的效果。

希望這篇推廣文能夠幫助你更好地理解和使用 Three.js,激發你的創造力,讓你在3D網頁開發的世界里大放異彩!既然都看到這里了,記得【點贊】+【關注】+【收藏】喲。

參考文章:

3. 開發和學習環境,引入threejs | Three.js中文網

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

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

相關文章

win11編譯pytorch cuda128版本流程

Geforce 50xx系顯卡最低支持cuda128&#xff0c;torch cu128 release版本目前還沒有釋放&#xff0c;所以自己基于2.6.0源碼自己編譯wheel包。 1. 前置條件 1. 使用visual studio installer 安裝visual studio 2022&#xff0c;工作負荷選擇【使用c的桌面開發】,安裝完成后將…

如何安裝Vm和centos

一、VMware 安裝 &#xff08;一&#xff09;前期準備 下載 VMware 軟件&#xff1a;首先&#xff0c;你需要從 VMware 官方網站下載適合你計算機操作系統版本的 VMware Workstation 軟件安裝包。確保選擇的版本與你的主機操作系統兼容&#xff0c;例如&#xff0c;如果你的主…

OpenGL 04--GLSL、數據類型、Uniform、著色器類

一、著色器 在 OpenGL 中&#xff0c;著色器&#xff08;Shader&#xff09;是運行在 GPU 上的程序&#xff0c;用于處理圖形渲染管線中的不同階段。 這些小程序為圖形渲染管線的某個特定部分而運行。從基本意義上來說&#xff0c;著色器只是一種把輸入轉化為輸出的程序。著色器…

服務器離線部署DeepSeek

目標 本次部署的目標是在本地服務器上部署DeepSeek。但是該服務不能連接外網&#xff0c;因此只能使用離線部署的方式。為了一次完成部署。現在云服務器上進行嘗試。 云服務器部署嘗試 云服務器配置 CentOS72080Ti 11GB 安裝準備 1、上傳iso并配置為本地yum源 安裝前先將…

刪除idea recent projects 記錄

1、退出idea&#xff08;一定要全部退出idea&#xff0c;要不然刪除后&#xff0c;idea一退出&#xff0c;又保存上了&#xff09; 2、進入 C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2024.1\options 目錄 根據不同的版本號 IntelliJIdea2024.1 這個地方…

【MySql】EXPLAIN執行計劃全解析:15個字段深度解讀與調優指南

文章目錄 一、執行計劃核心字段總覽二、關鍵字段深度拆解1. type&#xff08;訪問類型&#xff09;——查詢性能的晴雨表典型場景分析&#xff1a; 2. key_len&#xff08;索引使用長度&#xff09;——索引利用率的檢測儀計算示例&#xff1a; 3. Extra&#xff08;附加信息&a…

如何實現一個 Spring Boot Starter

在 Spring Boot 中&#xff0c;Starter 是一種自動配置的模塊&#xff0c;它封裝了一些常用的功能&#xff0c;并通過 Spring Boot 的約定大于配置的原則&#xff0c;使開發者能夠快速使用和集成相關功能。通常&#xff0c;Spring Boot Starter 包含了所需的依賴、配置、自動化…

使用python做http代理請求

有這樣一個需求現在有兩臺A&#xff0c;B兩臺電腦組成了一個局域網&#xff0c;在A電腦上開發webjava應用&#xff0c;需要調用第三方接口做http請求&#xff0c;但是這個請求只能在B電腦上請求。 一種解決方案&#xff1a;自定義一個中間服務&#xff0c;在電腦B上運行一個簡…

系統架構設計師考點——嵌入式技術

一、備考指南 嵌入式技術主要考查的是嵌入式基礎知識、嵌入式設計等相關知識&#xff0c;在系統架構設計師的考試中選擇題占2~4分&#xff0c;案例分析有時會考關鍵路徑的技術問答&#xff0c;這個題目一般比較難&#xff0c;但是由于案例分析題是五題選三題&#xff0c;所以…

當AI重構認知:技術狂潮下的教育沉思錄

備注&#xff1a;文章未Deepseek R1模型輔助生成&#xff0c;如有不妥請諒解。 以下使原文&#xff1a; 我有三個娃&#xff0c;各間隔4到5歲&#xff0c;經歷過搜索引擎&#xff0c;短視頻&#xff0c;短劇&#xff0c;本身曾經也是教育專業出生&#xff0c;任何事務都有兩面性…

EasyExcel 實踐案例:打印工資條

文章目錄 &#x1f4a1; 1. 每個員工一個 Excel 文件? 占位符格式&#x1f4cc; Excel 模板&#x1f4cc; Java 代碼&#x1f525; 關鍵點 &#x1f4a1; 2. 每個員工一個 Sheet? 占位符格式&#x1f4cc; Java 代碼&#x1f525; 關鍵點 &#x1f4a1; 3. 一個 Sheet&#x…

編程題-從前序與中序遍歷序列構造二叉樹(中等-重點)

題目&#xff1a; 給定兩個整數數組 preorder 和 inorder &#xff0c;其中 preorder 是二叉樹的先序遍歷&#xff0c; inorder 是同一棵樹的中序遍歷&#xff0c;請構造二叉樹并返回其根節點。 提示: preorder 和 inorder 均 無重復 元素 解法一&#xff08;遞歸&#xff0…

Vue 3 + Vite 項目配置訪問地址到服務器某個文件夾的解決方案

前言 在開發 Vue 3 Vite 項目時&#xff0c;我們經常需要將項目部署到服務器的某個特定文件夾下。例如&#xff0c;將項目部署到 /my-folder/ 目錄下&#xff0c;而不是服務器的根目錄。這時&#xff0c;我們需要對 Vite 和 Vue Router 進行一些配置&#xff0c;以確保項目能…

【Rust中級教程】2.10. API設計原則之受約束性(constrained) Pt.1:對類型進行修改、`#[non_exhaustive]`注解

喜歡的話別忘了點贊、收藏加關注哦&#xff08;加關注即可閱讀全文&#xff09;&#xff0c;對接下來的教程有興趣的可以關注專欄。謝謝喵&#xff01;(&#xff65;ω&#xff65;) 2.10.1. 接口的更改要三思 如果你的接口要做出對用戶可見的更改&#xff0c;那么一定要三思…

Imagination GPU 3D Graphics Wrokload

本次分享Imagination GPU 的3D 圖像處理負載流程。 總的分為兩個階段 第一階段&#xff1a;Geometry Processing Phase&#xff08;幾何處理階段&#xff09;是渲染管線中的一個關鍵環節&#xff0c;主要負責對三維幾何數據進行處理和變換&#xff0c;以便后續在屏幕上進行顯…

自動化設備對接MES系統找DeepSeek問方案

項目需要現場的PLC設備HTTP協議JSON格式的方式對接MES系統平臺&#xff0c;于是試了一下&#xff1a; 找到的相關資源鏈接在這里。

VoIP之音頻3A技術

音頻3A技術是改善語音通話質量的三種關鍵技術的簡稱&#xff0c;包括聲學回聲消除&#xff08;Acoustic Echo Cancellation, AEC&#xff09;、自動增益控制&#xff08;Automatic Gain Control, AGC&#xff09;、自噪聲抑制&#xff08;Automatic Noise Suppression, ANS&…

量子計算的數學基礎:復數、矩陣和線性代數

量子計算是基于量子力學原理的一種新型計算模式,它與經典計算機在信息處理的方式上有著根本性的區別。在量子計算中,信息的最小單位是量子比特(qubit),而不是傳統計算中的比特。量子比特的狀態是通過量子力學中的數學工具來描述的,因此,理解量子計算的數學基礎對于深入學…

京準電鐘:NTP精密時鐘服務器在自動化系統中的作用

京準電鐘&#xff1a;NTP精密時鐘服務器在自動化系統中的作用 京準電鐘&#xff1a;NTP精密時鐘服務器在自動化系統中的作用 NTP精密時鐘服務器在自動化系統中的作用非常重要&#xff0c;特別是在需要高精度時間同步的場景中。NTP能夠提供毫秒級的時間同步精度&#xff0c;這…

Python實現GO鵝優化算法優化Catboost回歸模型項目實戰

說明&#xff1a;這是一個機器學習實戰項目&#xff08;附帶數據代碼文檔視頻講解&#xff09;&#xff0c;如需數據代碼文檔視頻講解可以直接到文章最后關注獲取。 1.項目背景 在當今的數據驅動時代&#xff0c;機器學習模型在各種應用中扮演著至關重要的角色。特別是在預測分…