<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在vue3專案中,通過three.js使用了一段短小但完整的程式碼實現了實際的三維效果圖。
Three.js是一個輕量級,跨平臺的Javascript庫,可以在瀏覽器上結合HTML5的canvas,SVG或者WebGL,建立和展示3D模型和動畫。
Three.js允許我們在不依賴任何瀏覽器外掛的情況下,建立一個GPU加速的3D動畫場景。
1.利用npm安裝three.js:
npm install three
2.npm安裝軌道控制元件外掛:
npm install three-orbit-controls
3.安裝載入.obj和.mtl檔案的外掛:
npm i --save three-obj-mtl-loader
4.安裝渲染器外掛:
npm i --save three-css2drender
安裝好後在需要呼叫的vue檔案中參照:
import * as Three from 'three'
場景——相機——渲染器是在Three.js中必不可少的三要素,只有以上三者結合才能渲染出可見的內容。
//建立一個三維場景 const scene = new THREE.Scene();
const geometry = new THREE.BoxGeometry(100, 100, 100);//長寬高都是100的立方體 // const geometry = new THREE.SphereGeometry(60,40,40);//半徑是60的圓 //widthSegments, heightSegments:水平方向和垂直方向上分段數。widthSegments最小值為3,預設值為8。heightSegments最小值為2,預設值為6。 //建立材質(外觀) const material = new THREE.MeshLambertMaterial({ // color: 0x0000ff,//設定材質顏色(藍色) color: 0x00ff00,//(綠色) transparent: true,//開啟透明度 opacity: 0.5 //設定透明度 }); //建立一個網格模型物件 const mesh = new THREE.Mesh(geometry, material);//網路模型物件Mesh //把網格模型新增到三維場景 scene.add(mesh);//網路模型新增到場景中
//新增光源 //會照亮場景裡的全部物體(氛圍燈),前提是物體是可以接受燈光的,這種燈是無方向的,即不會有陰影。 const ambient = new THREE.AmbientLight(0xffffff, 0.4); const light = new THREE.PointLight(0xffffff, 1);//點光源,color:燈光顏色,intensity:光照強度
//建立一個透視相機,視窗寬度,視窗高度 const width = window.innerWidth, height = window.innerHeight; const camera = new THREE.PerspectiveCamera(45, width/height, 1, 1000); //設定相機位置 camera.position.set(300,300,300); //設定相機方向 camera.lookAt(0,0,0);
//建立一個WebGL渲染器 const renderer = new THREE.WebGLRenderer() renderer.setSize(width,height)//設定渲染區尺寸 renderer.render(scene,camera)//執行渲染操作、指定場景、相機作為引數
說了這麼多,現奉上myThree.vue原始碼:
<template> <div id="my-three"></div> </template> <script lang='ts' setup> import * as THREE from 'three' import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' import { onMounted } from 'vue' //建立一個三維場景 const scene = new THREE.Scene(); //建立一個物體(形狀) const geometry = new THREE.BoxGeometry(100, 100, 100);//長寬高都是100的立方體 // const geometry = new THREE.SphereGeometry(60,40,40);//半徑是60的圓 //widthSegments, heightSegments:水平方向和垂直方向上分段數。widthSegments最小值為3,預設值為8。heightSegments最小值為2,預設值為6。 //建立材質(外觀) const material = new THREE.MeshLambertMaterial({ // color: 0x0000ff,//設定材質顏色(藍色) color: 0x00ff00,//(綠色) transparent: true,//開啟透明度 opacity: 0.5 //設定透明度 }); //建立一個網格模型物件 const mesh = new THREE.Mesh(geometry, material);//網路模型物件Mesh //把網格模型新增到三維場景 scene.add(mesh);//網路模型新增到場景中 // 新增多個模型(新增圓形) // const geometry2 = new THREE.SphereGeometry(60, 40, 40); // const material2 = new THREE.MeshLambertMaterial({ // color: 0xffff00 // }); // const mesh2 = new THREE.Mesh(geometry2, material2); //網格模型物件Mesh // // mesh3.translateX(120); //球體網格模型沿Y軸正方向平移120 // mesh2.position.set(120,0,0);//設定mesh3模型物件的xyz座標為120,0,0 // scene.add(mesh2); //新增光源 //會照亮場景裡的全部物體(氛圍燈),前提是物體是可以接受燈光的,這種燈是無方向的,即不會有陰影。 const ambient = new THREE.AmbientLight(0xffffff, 0.4); const light = new THREE.PointLight(0xffffff, 1);//點光源,color:燈光顏色,intensity:光照強度 scene.add(ambient); light.position.set(200,300,400); scene.add(light); //建立一個透視相機,視窗寬度,視窗高度 const width = window.innerWidth, height = window.innerHeight; const camera = new THREE.PerspectiveCamera(45, width/height, 1, 1000); //設定相機位置 camera.position.set(300,300,300); //設定相機方向 camera.lookAt(0,0,0); //建立輔助座標軸 const axesHelper = new THREE.AxesHelper(200);//引數200標示座標系大小,可以根據場景大小去設定 scene.add(axesHelper); //建立一個WebGL渲染器 const renderer = new THREE.WebGLRenderer() renderer.setSize(width,height)//設定渲染區尺寸 renderer.render(scene,camera)//執行渲染操作、指定場景、相機作為引數 const controls = new OrbitControls(camera, renderer.domElement)//建立控制元件物件 controls.addEventListener('change',()=>{ renderer.render(scene, camera)//監聽滑鼠,鍵盤事件 }) onMounted(()=>{ document.getElementById('my-three')?.appendChild(renderer.domElement) }) </script> <style lang='scss'> body{ margin: 0; padding: 0; } </style>
在vue3專案中,通過three.js實現了實際的三維效果demo,未來會繼續深入研究,總之3D渲染圖形是一個很好玩的東西,歡迎大家一起交流。
到此這篇關於vue3專案中使用three.js的文章就介紹到這了,更多相關vue3使用three.js內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45