GLTF2Loader์ ํ์ฌ ํจํด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
class GLTF2Parser {
loadMeshes () {
return this._withDependencies( [
'materials',
'accessors'
] ).then( ( dependencies ) => {
_each( json.meshes, ( meshDef ) => {
var geometry = /* ... */;
var material = dependencies.materials[ meshDef.material ];
var mesh = new THREE.Mesh( geometry, material );
// ...
return mesh;
} );
// ...
return meshes;
} );
}
// ...
}
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ชจ๋ ์ ๊ทผ์(๋ชจ๋ .bin
๋ฒํผ ํ์ผ์ ์ฐจ๋ก๋ก ์ข
์๋จ)๋ ๋ฉ์๊ฐ ์์ฑ๋๊ธฐ ์ ์ ๋ก๋๋ฉ๋๋ค. ๋ชจ๋ ๋ฒํผ๊ฐ ์ค์ ๋ก ํ์ํ์ง ์์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด:
.bin
ํ์ผ ๋ฐ ์์ถ๋์ง ์์ .bin
ํ ์ ์์ผ๋ฏ๋ก Draco๋ฅผ ์ง์ํ์ง ์๋ ํด๋ผ์ด์ธํธ๋ ์ต์ ํ๋์ง ์์ ๋ฒ์ ์ผ๋ก ๊ณ์ ํด๋ฐฑํ ์ ์์ต๋๋ค. ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฒํผ ์ค ํ๋๋ง ๋ก๋ํ๋ ค๊ณ ํฉ๋๋ค.๋ฐ๋ผ์ ์ข ์์ฑ์ ํํฅ์์ผ๋ก ์์ฒญํ๋ ค๋ฉด GLTF2Loader๋ฅผ ์ฌ๊ตฌ์ฑํด์ผ ํ ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ์๋ ๊ตฌ๋ฌธ(๋ชจ๋ฐฉํ ๊ธฐ์กด ์์ ๊ฐ ์๋ ๊ฒฝ์ฐ)์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
class GLTF2Parser {
loadMesh ( meshDef ) {
return Promise.all( [
this.loadGeometry( meshDef.primitives ),
this.loadMaterial( meshDef.material )
] ).then( ( dependencies ) => {
var [geometry, material] = dependencies;
var mesh new THREE.Mesh( geometry, material );
// ...
return mesh;
} );
}
// ...
}
^ ๊ฐ๊ฒฐ์ฑ์ ์ํด ES6์ ์ฌ์ฉํ์ง๋ง ์ค์ ๋ก examples/js์ ์ฒดํฌ์ธํ ์๋ ์์ต๋๋ค.
๋ฆฌํฉํ ๋ง์ ์ฌ์ ์ ์์ํ๊ธฐ ์ ์ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํด์ผ ํ๋์ง์ ๋ํ ๊ฐ๋ ฅํ ์ ํธ ์ฌํญ์ด ์์ต๋๊น? ์ด ๋ณ๊ฒฝ์ด ์ ์ง์ ์ผ๋ก ๋ฐ์ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋ผ๊ณ ์์ง๋ง ํ์ธ์ด ํ์ํฉ๋๋ค.
/cc @takahirox
๋ฆฌํฉํ ๋ง์ ๋์ํฉ๋๋ค.
IMO _withDependencies
์ _each
์ ์ฝ๊ฐ ๋ณต์กํฉ๋๋ค.
BTW, @mrdoob Promise
๋ฐ ES6 ์ฌ์ฉ์ ํ์ฉํฉ๋๊น?
gltf๋ฅผ ๋ก๋ํ๊ธฐ ์ํ ๊ด๋ฆฌ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์ป์ผ๋ ค๋ฉด Internet Explorer๋ฅผ ๋ฒ๋ ค๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค ๐
๊ทธ๋์ Promise
s ๋ฉ์ง๋ค. ES6...์ ๊ธฐ๋ฅ ๋ฐ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
๋ฆฌํฉํ ๋ง์ ๋ํด @takahirox ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
๋๋ ์ด๊ฒ์ด ๋ซํ ์ ์๋ค๊ณ ์๊ฐํ๋ค. ์ผ๋ถ ๋ถ๋ถ์ ์๊ฒฉํ๊ฒ ํํฅ์์ด์ง ์์ต๋๋ค. ์ฌ๋ฌ ์ฅ๋ฉด์ด ์๋ ๋ชจ๋ธ์ ๊ฒฝ์ฐ ์ธ์ ๊ฐ๋ getMultiDependencies()
๋ฅผ ํตํด ๋
ธ๋ ๋๋ ์ ๊ทผ์๋ฅผ ๊ฒ์ํ์ง ์๊ธฐ๋ฅผ ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ง๊ธ๊น์ง ๋ณธ ๋ชจ๋ ์์ ๋ชจ๋ธ์ ๊ฒฝ์ฐ ํ์ฌ ๊ตฌ์กฐ๊ฐ ํจ์ฌ ๋ ์ข์ ๋ณด์
๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
gltf๋ฅผ ๋ก๋ํ๊ธฐ ์ํ ๊ด๋ฆฌ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์ป์ผ๋ ค๋ฉด Internet Explorer๋ฅผ ๋ฒ๋ ค๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค ๐
๊ทธ๋์
Promise
s ๋ฉ์ง๋ค. ES6...์ ๊ธฐ๋ฅ ๋ฐ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.