1. 程式人生 > >教你如何利用threejs對3D模型面板進行DIY

教你如何利用threejs對3D模型面板進行DIY

一步一步教你如何利用threejs載入gltf模型來實現DIY換膚功能。 ### 模型準備 - ***模型製作*** 模型可以通過網上下載,也可以自己通過c4d、maya、blender等模型製作軟體得到。這裡就不敘述有關模型製作的問題,本文中會在blender進行模型的有關設定。 - ***模型匯出*** 1、匯出前設定 為了在頁面中方便後續的操作,在匯出模型前,將模型的各個部件拆分好進行命名約定(本文以小車模型為例)具體如下圖所示: 圖1 2、匯出模型格式選取 threejs可以載入的模型有很多中,之前.ojb、.json、.FBX等格式都有講過參我之前的文章[從Maya中把模型搬運至網頁的過程](http://www.flowers1225.com/lessons/2018/03/07/1)、[首個threejs-3D專案](https://flowers1225.com/lessons/2016/02/29/1),所以我這裡選取官方推薦現在使用的格式.gltf、.glb。 > gltf與glb的區別: gltf檔案類似與json格式而glb是以二進位制流進行儲存。 3、模型匯出 在blender中直接有gltf格式匯出的選項,如果沒有特別的要求,按照預設配置匯出就可以了。匯出介面如下圖所示:
圖2 ### 場景建立 - ***使用threejs建立一個場景*** 首先將需要的東西從threejs (r110) 中引入,然後進行建立場景四部曲: ```javascript import {Scene, WebGLRenderer, PerspectiveCamera, Color} from 'three'; ``` 1、Scene ```javascript let scene = new Scene(); scene.background = new Color(0xB3CEFB); scene.fog = new Fog(scene.background, 1, 100); ``` 2、Camera ```javascript let camera = new PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000); camera.position.z = 15; ``` 3、Render ```javascript let renderer = new WebGLRenderer({ alpha: true, antialias: true }); renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(window.innerWidth, window.innerHeight); ``` 4、Animate ```javascript const render = function () { requestAnimationFrame(render); renderer.render(scene, camera); } ``` 然後就會看到一個藍藍的場景(因為設定了背景顏色) ### 載入模型 - ***GLTFLoader載入模型至場景*** ```javascript import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'; const loader = function () { let gltfLoader = new GLTFLoader(); gltfLoader.load( 'toycar.glb', // your .glb & .gltf gltf => { scene.add(gltf.scene); // 新增至建立好的場景中 // gltf.animations; // Array