Three.js加載外部模型的教程詳解
1. 首先我們要在官網(wǎng): https://threejs.org/ 下載我們three.js壓縮包,并將其中的build文件夾下的three.js通過(guò)script標(biāo)簽對(duì)的src屬性導(dǎo)入到我們的頁(yè)面中
2. 創(chuàng)建three.js核心對(duì)象
Scene(場(chǎng)景)
Camera(相機(jī))
Light(光源)
Mesh(模型)
Renderer(渲染器)
最后一步就是渲染顯示在我們的頁(yè)面上了renderer.render(scene,camera)
3. OBJ模型的導(dǎo)入
<script type="text/javascript" src="js/OBJLoader.js"></script> <script type="text/javascript" src="js/MTLLoader.js"></script>

4. .JS模型的導(dǎo)入
首先我們需要將.OBJ模型的文件轉(zhuǎn)換成.JS文件的模型
.obj格式轉(zhuǎn).js格式使用的是threejs.org官方提供的一個(gè)convert_obj_three.py的工具,這個(gè)工具的使用需要安裝python環(huán)境
轉(zhuǎn)換過(guò)程:
將convert_obj_three.py和要轉(zhuǎn)換的.obj文件和.mtl文件放在同一個(gè)目錄下

打開cmd,切換到對(duì)應(yīng)的目錄下
python convert_obj_three.py -i infile.obj -o outfile.js [-t ascii|binary]
可以得到兩種編碼方式的.js文件(二進(jìn)制binary和ascii)
出現(xiàn)的問(wèn)題,轉(zhuǎn)換格式的問(wèn)題:
打開.obj文件,

將mtllib關(guān)鍵字后面改成 .mtl文件相對(duì)于.obj文件的路徑

將文件中的這些?改成字母,亂碼

.mtl文件中的newmtl 關(guān)聯(lián)到.obj文件中

這是.obj文件中的
5. 準(zhǔn)備導(dǎo)入
Ascii

Binary
需要導(dǎo)入
<script src="js/BinaryLoader.js"></script>

PS:three.js 外部模型加載json
用blender做模型可以直接導(dǎo)出json文件(導(dǎo)出插件可以從three.js包里找到)。從網(wǎng)上下載模型,網(wǎng)上的模型很多事3ds max做的,我就用3ds max把模型格式轉(zhuǎn)換成obj,再導(dǎo)入blender處理好模型后導(dǎo)出json文件。
導(dǎo)出json文件時(shí)選項(xiàng)勾選如果選擇了SCENE可連燈光一同導(dǎo)出加載時(shí)需要用ObjectLoader
var loader = new THREE.ObjectLoader();
loader.load('youscene1.json',function(obj){
obj.scale.x = obj.scale.y = obj.scale.z =100;
scene.add(obj);
});
導(dǎo)出json文件時(shí)如果不勾選scene,需要頁(yè)面中添加燈光否則模型全黑,加載時(shí)用JSONLoader
var loader = new THREE.JSONLoader();
loader.load( "noscene.json",function( geometry, materials ) {
materials[ 0 ].shading = THREE.FlatShading;
mesh = new THREE.Mesh( geometry, new THREE.MultiMaterial( materials ) );
mesh.position.x = 0;
mesh.position.y = 0;
mesh.position.z = 0;
mesh.scale.x = mesh.scale.y = mesh.scale.z =100;
scene.add( mesh );
});
總結(jié)
以上所述是小編給大家介紹的Three.js加載外部模型的教程詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
JS優(yōu)雅的使用function實(shí)現(xiàn)一個(gè)class
這篇文章主要為大家介紹了JS優(yōu)雅的使用function實(shí)現(xiàn)一個(gè)class示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
tracking.js實(shí)現(xiàn)前端人臉識(shí)別功能
這篇文章主要介紹了tracking.js實(shí)現(xiàn)前端人臉識(shí)別功能,本文通過(guò)實(shí)例代碼截圖的形式給大家展示的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
基于zepto.js實(shí)現(xiàn)仿手機(jī)QQ空間的大圖查看組件ImageView.js詳解
這篇文章主要介紹了基于zepto.js實(shí)現(xiàn)仿手機(jī)QQ空間的大圖查看組件ImageView.js的源碼和使用方法,并附上一個(gè)使用ImageView.js的實(shí)例,這里分享給大家,有需要的小伙伴參考下。2015-03-03
JavaScript連接組件實(shí)現(xiàn)打印功能
這篇文章主要為大家詳細(xì)介紹了JavaScript如何連接連接抖音打印組件實(shí)現(xiàn)打印小票功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2024-04-04
Typescript協(xié)變與逆變簡(jiǎn)單理解
深入學(xué)習(xí)TypeScript類型系統(tǒng)的話,逆變、協(xié)變、雙向協(xié)變、不變是繞不過(guò)去的概念。這些概念看起來(lái)挺高大上的,其實(shí)并不復(fù)雜,這篇文章我們就來(lái)學(xué)習(xí)下協(xié)變和逆變吧2022-10-10
無(wú)閃爍更新網(wǎng)頁(yè)內(nèi)容JS實(shí)現(xiàn)
這篇文章主要介紹了無(wú)閃爍更新網(wǎng)頁(yè)內(nèi)容JS實(shí)現(xiàn),有需要的朋友可以參考一下2013-12-12

