国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Three.js加載外部glb,fbx,gltf,obj 模型文件

這篇具有很好參考價(jià)值的文章主要介紹了Three.js加載外部glb,fbx,gltf,obj 模型文件。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

vue3使用Three.js加載外部模型文件

1.安裝Three.js

yarn add three
npm install three

2.新建一個(gè)renderModel.js 用于處理Three.js相關(guān)邏輯

import * as THREE from 'three' //導(dǎo)入整個(gè) three.js核心庫
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' 
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader'
import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader'
// 定義一個(gè) class類
class renderModel {
    	constructor(selector) {
    	    this.container = document.querySelector(selector)
		    // 相機(jī)
	    	this.camera
		    // 場景
		    this.scene
		    //渲染器
		    this.renderer
		    // 控制器
		    this.controls
		    // 模型
		    this.model    
		     //文件加載器類型
		    this.fileLoaderMap = {
			'glb': new GLTFLoader(),
			'fbx': new FBXLoader(),
			'gltf': new GLTFLoader(),
			'obj': new OBJLoader(),
		}
         }
         // 初始化加載模型方法
        init(){
         	return new Promise(async (reslove, reject) => {
			//初始化場景
			this.initScene()
			//初始化相機(jī)
			this.initCamera()
			//初始化渲染器
			this.initRender()
			// 添加物體模型 TODO:初始化時(shí)需要默認(rèn)一個(gè)  filePath:'threeFile/glb/glb-3.glb' 放在 vue項(xiàng)目中的public/threeFile文件下
			const load = await this.setModel({ filePath: 'threeFile/glb/glb-3.glb', fileType: 'glb',scale:0.5})
			//監(jiān)聽場景大小改變,跳轉(zhuǎn)渲染尺寸
			window.addEventListener("resize", this.onWindowResize.bind(this))
			//場景渲染
			this.sceneAnimation()
			reslove(load)
	   	  })
        }
        //創(chuàng)建場景
	initScene() {
        this.scene = new THREE.Scene()
		const texture = new THREE.TextureLoader().load(require('@/assets/image/view-4.png'))
		texture.mapping = THREE.EquirectangularReflectionMapping
		// texture.colorSpace = THREE.SRGBColorSpace
		this.scene.background = texture
		this.scene.environment = texture

	}
		// 創(chuàng)建相機(jī)
	initCamera() {
		const { clientHeight, clientWidth } = this.container
		this.camera = new THREE.PerspectiveCamera(45, clientWidth / clientHeight, 0.25, 100)
	}
	 // 創(chuàng)建渲染器
	initRender() {
		this.renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true }) //設(shè)置抗鋸齒
		//設(shè)置屏幕像素比
		this.renderer.setPixelRatio(window.devicePixelRatio)
		//渲染的尺寸大小
		const { clientHeight, clientWidth } = this.container
		this.renderer.setSize(clientWidth, clientHeight)
		//色調(diào)映射
		this.renderer.toneMapping = THREE.ACESFilmicToneMapping
		//曝光
		this.renderer.toneMappingExposure = 3
		this.renderer.shadowMap.enabled = true
		this.renderer.shadowMap.type = THREE.PCFSoftShadowMap
		this.container.appendChild(this.renderer.domElement)
	}
	// 使用動(dòng)畫器不斷更新場景
	 sceneAnimation() {
		this.renderer.setAnimationLoop(this.render.bind(this))
	 }
     //渲染場景
	render(){
	  this.renderer.render(this.scene, this.camera)
	}
	//加載模型
	setModel({ filePath, fileType, scale,  position }) {
		return new Promise((resolve, reject) => {
			const loader = this.fileLoaderMap[fileType]
			loader.load(filePath, (result) => {
			  //加載不同類型的文件
				switch (fileType) {
					case 'glb':
						this.model = result.scene		
						break;
					case 'fbx':
						this.model = result
						break;
					case 'gltf':
						this.model = result.scene
						break;
					case 'obj':
						this.model = result
						break;
					default:
						break;
				}
				// 設(shè)置模型大小
				if (scale) {
					this.model.scale.set(scale, scale, scale);
				}
				// 設(shè)置模型位置 
				if (position) {
					const { x, y, z } = position
					this.model.position.set(x, y, z)
				}
				// 設(shè)置相機(jī)位置
				this.camera.position.set(0, 2, 6)
				// 設(shè)置相機(jī)坐標(biāo)系
				this.camera.lookAt(0, 0, 0)
	             // 將模型添加到場景中去   
				this.scene.add(this.model)
				resolve(true)
			}, () => {

			}, (err) => {
				console.log(err)
				reject()
			})
		})
	}
	
}

3.modelPage.vue 中使用頁面

<template>
     <div id="model" ref="model"></div>
</template>
<script setup>
import { onMounted} from "vue";
import renderModel from "./renderModel";
onMounted(async () => {
 const modelApi = new renderModel("#model");
 const load = await  modelApi.init();
 // load =true 表示加載完成
});
</script>

完整的代碼可參考:https://gitee.com/ZHANG_6666/Three.js3D

6.效果圖:
Three.js加載外部glb,fbx,gltf,obj 模型文件,Three.js,javascript,Three.js,vue3,3d模型文章來源地址http://www.zghlxwxcb.cn/news/detail-550955.html

到了這里,關(guān)于Three.js加載外部glb,fbx,gltf,obj 模型文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • OpenGL Assimp加載各類型模型(.obj、.fbx、.glb、.3ds)

    OpenGL Assimp加載各類型模型(.obj、.fbx、.glb、.3ds)

    1.簡介 本博客以.glb格式為例,加載glb格式的3d模型,網(wǎng)上找了一圈,基本上都是根據(jù)OpenGL官方示例,加載.obj格式的3d模型。 下面以.obj和.glb格式的3D模型簡單介紹一下。 常見的.obj格式的3D模型如下所示:紋理都已經(jīng)被剝離出來了。所以在使用Assimp庫加載的時(shí)候,加載了指定的

    2024年01月19日
    瀏覽(24)
  • uniapp通過renderjs加載3D模型,支持FBX、GLB和GLTF模型,模型可自動(dòng)適應(yīng)。

    n-text-loading是我的自定義loading組件,可以自行替換 id是threeView是模型顯示的位置, props里面的url是模型鏈接,cameraZ是相機(jī)位置,默認(rèn)100,一般不需要改,有些z軸很長的模型旋轉(zhuǎn)的時(shí)候會(huì)有一部分相機(jī)看不到這個(gè)時(shí)候就需要調(diào)整這個(gè)值了,這兩個(gè)要從后臺上傳。 :prop=“url”,

    2024年02月14日
    瀏覽(17)
  • 壓縮gltf/glb模型踩坑與解決 three.js DRACOLoader

    壓縮gltf/glb模型踩坑與解決 three.js DRACOLoader

    使用前端three.js加載3d模型過程中,往往會(huì)出現(xiàn)模型大小過大導(dǎo)致前端加載時(shí)間過長,降低用戶體驗(yàn)。 本文所記錄的是筆者在使用gltf-pipeline壓縮3d模型中踩坑DRACOLoader與解決的一個(gè)過程。 所采用的three庫版本為 ^0.138.2 通過gltf-pipeline可以大幅度壓縮gltf/glb模型文件。 并且有如下

    2023年04月08日
    瀏覽(22)
  • 推薦:vue-3d-loader支持.dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json,并支持同一個(gè)場景導(dǎo)入多個(gè)不同3D模型,支持mtl材質(zhì)以及jpg/png等圖片紋理

    推薦:vue-3d-loader支持.dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json,并支持同一個(gè)場景導(dǎo)入多個(gè)不同3D模型,支持mtl材質(zhì)以及jpg/png等圖片紋理

    vue-3d-loader是vueJS + threeJS整合的一個(gè)3d展示組件。 支持.dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json,并支持同一個(gè)場景導(dǎo)入多個(gè)不同3D模型,支持mtl材質(zhì)以及jpg/png等圖片紋理 vue3請安裝 2.0.0 及以上版本?

    2024年02月10日
    瀏覽(33)
  • vue-3d-model js在線預(yù)覽obj,dae,ply,json,fbx,stl,gltf格式的3D文件

    vue-3d-model js在線預(yù)覽obj,dae,ply,json,fbx,stl,gltf格式的3D文件

    在線預(yù)覽地址vue-3d-model js在線預(yù)覽obj,dae,ply,json,fbx,stl,gltf格式的3D文件 效果: 例子使用了.obj 3D文件格式,自帶了截圖和旋轉(zhuǎn)功能,其他的3D格式只需要切換一個(gè)vue的模板標(biāo)簽即可。具體標(biāo)簽格式如下: 可支持obj,dae,ply,json,fbx,stl,gltf等格式的3D文件格式顯示。只需要單頁面html即

    2024年02月12日
    瀏覽(25)
  • threejs加載.Fbx .OBJ 3D模型文件

    threejs加載.Fbx .OBJ 3D模型文件

    在threejs官網(wǎng)下載threejs的文件,可以選擇直接下載,也可以跳轉(zhuǎn)到GitHub拉取 拉取下來的完整文件就是這個(gè)樣子 拉取成功后我們在本地安裝啟動(dòng)服務(wù),這樣就能很快速的查看threejs的各種例子了 可以先看看官網(wǎng)里的例子,你想要的東西官方里面都有 后期在開發(fā)的時(shí)候需要用到b

    2023年04月08日
    瀏覽(28)
  • Three.js加載FBX模型并解析骨骼動(dòng)畫

    Three.js加載FBX模型并解析骨骼動(dòng)畫

    通過Threejs先加載一個(gè).FBX格式的三維模型文件,然后解析該文件中的骨骼動(dòng)畫信息。? FBX 加載器 FBXLoader.js 加載fbx模型文件 加載模型文件,加載完成后,如果模型顯示位置不符合要求,可以通過Threejs程序進(jìn)行平移、縮放等操作。 查看FBX模型幀動(dòng)畫數(shù)據(jù) stl、obj都是靜態(tài)模型,

    2024年02月07日
    瀏覽(45)
  • 【瑞模網(wǎng)】Cesium 模型轉(zhuǎn)換(obj max fbx轉(zhuǎn)gltf/3dtiles)

    【瑞模網(wǎng)】Cesium 模型轉(zhuǎn)換(obj max fbx轉(zhuǎn)gltf/3dtiles)

    這三種都是3dmax支持的格式,可以統(tǒng)一將.fbx和.max轉(zhuǎn)化為.obj格式,然后通過obj2gltf轉(zhuǎn)為glb或者gltf,其中g(shù)ltf是比glb的模型要大一點(diǎn);或者通過ceisumlab等工具將.obj處理成3dtiles,當(dāng)然3dtiles是用于大場景居多。 .obj .max .fbx類型的模型轉(zhuǎn)換為gltf/glb,使用obj2gltf 以下舉例講述下.max的處

    2024年02月11日
    瀏覽(83)
  • open3d,讀取stl/ply/obj/off/gltf/glb三維模型,并轉(zhuǎn)換成點(diǎn)云,保存

    open3d,讀取stl/ply/obj/off/gltf/glb三維模型,并轉(zhuǎn)換成點(diǎn)云,保存

    可以自己用建模軟件建立一個(gè)模型 本案例使用模型的下載地址 可以從free3d免費(fèi)下載,無需注冊 效果: 效果: 均勻采樣會(huì)在表面出現(xiàn)采樣點(diǎn)聚集的現(xiàn)象,open3d實(shí)現(xiàn)了一種基于poisson_disk方法的采樣,能實(shí)現(xiàn)表面的均勻采樣 原理 :參數(shù)umber_of_points是最終采樣的點(diǎn)數(shù)量,實(shí)際會(huì)先

    2024年02月11日
    瀏覽(270)
  • Unity加載gltf/glb文件

    Unity加載gltf/glb文件

    1.打開包管理器窗口 2.點(diǎn)擊添加 3.點(diǎn)擊“按名稱添加包” 4. 輸入 com.unity.nuget.newtonsoft-json 包名稱和 3.0.1 版本 第一種方法: 通過PackageManager的Git url的方式添加: \\\"com.siccity.gltfutility\\\": \\\"https://github.com/siccity/gltfutility.git\\\" 如果git訪問不了,你可以用第二種方式手動(dòng)下載; 第二種方

    2024年02月15日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包