最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue2.x引入threejs的實(shí)例代碼

 更新時(shí)間:2022年09月28日 09:54:31   作者:白黑besos  
這篇文章主要介紹了vue2.x引入threejs,如果在開發(fā)過程中出現(xiàn)threejs生成的canvas出現(xiàn)外邊框,只需要用css樣式修改,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

vue2.x引入threejs

npm安裝

npm install three

使用指定版本:

npm install three@<版本號(hào)>

其他插件

因?yàn)楸敬伍_發(fā)需要引入3D模型,所以需要使用 MTLLoader, OBJLoader兩種加載器,因?yàn)殚_發(fā)需求和
版本問題, 最新版本自帶的加載器不能實(shí)現(xiàn)需求,所以需要額外引入three-obj-mtl-loader插件,并且threejs版本需要退到122版本;

npm安裝three-obj-mtl-loader

npm install three-obj-mtl-loader --save

實(shí)例

//-- html部分 -- 開始 --
<div class="three_box" id="container">
</div>
//-- html部分 -- 結(jié)束 --

import * as THREE from 'three';
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; // 控制器-控制相機(jī)運(yùn)行軌道
import { MTLLoader, OBJLoader } from 'three-obj-mtl-loader' //項(xiàng)目中使用到.obj文件和.mtl文件,故引入

mounted() {
	let width = 1053	// dom寬度
	let height = 473	// dom高度
	
	this.scene = new THREE.Scene()// 運(yùn)行創(chuàng)建場景函數(shù)
	let mtlLoader = new MTLLoader() //創(chuàng)建MTLLoader實(shí)例
	let objLoader = new OBJLoader() //創(chuàng)建OBJLoader實(shí)例
	let k = width / height	// 寬高比
	let camera = new THREE.PerspectiveCamera( 60, k, 1, 2000) //創(chuàng)建相機(jī),這個(gè)相機(jī)模擬人眼所看到的景象,近大遠(yuǎn)小沒參數(shù)分別為:
	//fov — 攝像機(jī)視錐體垂直視野角度
	//aspect — 攝像機(jī)視錐體長寬比
	//near — 攝像機(jī)視錐體近端面
	//far — 攝像機(jī)視錐體遠(yuǎn)端面
	camera.position.set( -500, 300, 300 )//設(shè)置相機(jī)位置
	this.initDoor()//調(diào)用引入3D模型方法
	this.initcao() //調(diào)用幾何圖形方法
	//點(diǎn)光源
	let point = new THREE.PointLight(0xffffff)
	point.position.set(800, 800, 2000); //光源位置
	this.scene.add(point);  //光源添加進(jìn)場景
	
	//環(huán)境光
	let ambient = new THREE.AmbientLight(0xffffff); //設(shè)置環(huán)境光
	this.scene.add(ambient)  //講環(huán)境光加入場景
	this.renderer = new THREE.WebGL1Renderer(); // 實(shí)例渲染器
	this.renderer.setSize( width, height) //渲染器寬高
	this.renderer.setClearColor(new THREE.Color('#07224e'), 1) //設(shè)置背景顏色
	setTimeout(() => {
	  document.getElementById('container').appendChild(this.renderer.domElement)//將渲染器添加進(jìn)dom
	}, 500)
	this.animate()//調(diào)用動(dòng)畫效果
	this.controls = new OrbitControls(this.camera, this.renderer.domElement) //添加相機(jī)和渲染器到控制器,實(shí)現(xiàn)滑動(dòng)
},
methods: {
	initcao() {
		let geometry = new THREE.BoxGeometry(3200, 1600, 8); //矩形平面
		let material = new THREE.MeshLambertMaterial({  // 配置樣式,包括顏色 透明度等
			  color: new THREE.Color('#bcbfc6'),
			  transparent: true,
			  opacity: 0.3,
			  side: THREE.DoubleSide
		});
		let mesh = new THREE.Mesh(geometry, material); //網(wǎng)格模型對(duì)象Mesh
		mesh.rotateX(-Math.PI / 2);
		this.scene.add(mesh); //網(wǎng)格模型添加到場景中
	},
	initDoor() {
		let that = this //后面回調(diào)會(huì)影響this指向
		let mtlLoader = new MTLLoader()
		let objLoader = new OBJLoader();
		mtlLoader.load('static/door.mtl', function( material) { //引入模型.mtl文件,是3D模型的貼圖,如果不需要貼圖可以不使用,模型會(huì)只有一個(gè)框架
		  material.preload();
		  objLoader.setMaterials(material)
		  objLoader.load('static/door.obj', //引入模型.obj文件
		      function( obj) {
		          obj.position.z = -188  //調(diào)整模型位置
		          obj.position.x = -265 //調(diào)整模型位置
		          obj.position.y = 10 //調(diào)整模型位置
		          obj.rotateY(Math.PI / 2) //調(diào)整模型角度
		          obj.scale.set( 20, 20, 20 ) //調(diào)整模型放大縮小倍數(shù)
		          that.scene.add(obj) //模型添加進(jìn)場景
		      },
		  )
		})
	},
	animate() {
		//這里自己寫點(diǎn)要對(duì)模型進(jìn)行的操作
       this.renderer.render(this.scene, this.camera);
       requestAnimationFrame(this.animate) //這里按幀更新畫面,大概一秒60次左右
         
     }, 
}

強(qiáng)調(diào)

如果在開發(fā)中需要引入3D模型,模型文件應(yīng)放在與src文件同級(jí)的static下,引入方式應(yīng)該是 'static/door.mtl'

如果在開發(fā)過程中出現(xiàn)threejs生成的canvas出現(xiàn)外邊框,只需要用css樣式修改,代碼如下:

.three_box {
      width: 1053px;
       height: 473px;
       >>> canvas:focus-visible {
           outline: 0px
       }
   }

threejs官方文檔

到此這篇關(guān)于vue2.x引入threejs的文章就介紹到這了,更多相關(guān)vue2.x引入threejs內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用Axios Element實(shí)現(xiàn)全局的請(qǐng)求loading的方法

    用Axios Element實(shí)現(xiàn)全局的請(qǐng)求loading的方法

    本篇文章主要介紹了用Axios Element實(shí)現(xiàn)全局的請(qǐng)求loading的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • vue3+vite項(xiàng)目配置ESlint、pritter插件過程

    vue3+vite項(xiàng)目配置ESlint、pritter插件過程

    這篇文章主要介紹了vue3+vite項(xiàng)目配置ESlint、pritter插件過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue使用高德地圖實(shí)現(xiàn)軌跡顯隱效果

    vue使用高德地圖實(shí)現(xiàn)軌跡顯隱效果

    本文主要介紹了在vue中如何使用高德地圖實(shí)現(xiàn)軌跡顯隱的功能,包括了相關(guān)代碼的編寫和具體實(shí)現(xiàn)步驟,對(duì)于想要在自己的項(xiàng)目中使用這一功能的開發(fā)者有一定的參考價(jià)值,希望大家對(duì)此有所幫助,同時(shí)也歡迎大家多多支持腳本之家
    2024-10-10
  • Vue2.0 http請(qǐng)求以及l(fā)oading展示實(shí)例

    Vue2.0 http請(qǐng)求以及l(fā)oading展示實(shí)例

    下面小編就為大家分享一篇Vue2.0 http請(qǐng)求以及l(fā)oading展示實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue3+Element?Plus實(shí)現(xiàn)動(dòng)態(tài)標(biāo)簽頁以及右鍵菜單功能

    Vue3+Element?Plus實(shí)現(xiàn)動(dòng)態(tài)標(biāo)簽頁以及右鍵菜單功能

    這篇文章主要給大家介紹了關(guān)于Vue3+Element?Plus實(shí)現(xiàn)動(dòng)態(tài)標(biāo)簽頁以及右鍵菜單功能的相關(guān)資料,Vue?3和Element?Plus提供了一種簡單的方法來實(shí)現(xiàn)側(cè)邊菜單欄與標(biāo)簽頁之間的聯(lián)動(dòng),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • defineProps宏函數(shù)不需要從vue中import導(dǎo)入的原因解析

    defineProps宏函數(shù)不需要從vue中import導(dǎo)入的原因解析

    這篇文章主要介紹了defineProps宏函數(shù)不需要從vue中import導(dǎo)入的原因解析,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Vue3打包部署報(bào)錯(cuò)的解決方案

    Vue3打包部署報(bào)錯(cuò)的解決方案

    這篇文章主要介紹了Vue3打包部署報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue3下eslint配置方式

    vue3下eslint配置方式

    這篇文章主要介紹了vue3下eslint配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • el-select 的下拉框中新增倆自定義按鈕的操作方法

    el-select 的下拉框中新增倆自定義按鈕的操作方法

    文章介紹了在Element UI的el-select組件中新增自定義按鈕的方法,并詳細(xì)說明了設(shè)置`popper-append-to-body`屬性為false的重要性,以及如何通過修改樣式來實(shí)現(xiàn)自定義按鈕的添加和樣式效果展示,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • vite+ts vite.config.ts使用path報(bào)錯(cuò)問題及解決

    vite+ts vite.config.ts使用path報(bào)錯(cuò)問題及解決

    這篇文章主要介紹了vite+ts vite.config.ts使用path報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評(píng)論

玉山县| 疏勒县| 张北县| 应城市| 临沂市| 安仁县| 屏边| 商河县| 和平区| 高邮市| 康乐县| 桃江县| 虹口区| 蛟河市| 临清市| 那曲县| 莱阳市| 遂平县| 湖口县| 蒲城县| 汉阴县| 普宁市| 微博| 荣昌县| 滦南县| 甘南县| SHOW| 进贤县| 长治县| 留坝县| 沙湾县| 紫金县| 沈丘县| 喀什市| 伊宁县| 兴城市| 哈密市| 藁城市| 唐河县| 延安市| 略阳县|