Three.js: ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ชจ๋ธ์„ ๋ณต์ œํ•˜๋Š” ๋ฐฉ๋ฒ•

์— ๋งŒ๋“  2012๋…„ 02์›” 20์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mrdoob/three.js

์•ˆ๋…•ํ•˜์„ธ์š”, ์˜ˆ๋ฅผ ๋“ค์–ด ์ฐป์ฃผ์ „์ž์™€ ๊ฐ™์€ dae ๋ชจ๋ธ์„ ๋‚ด ํ”„๋กœ๊ทธ๋žจ์— ๋กœ๋“œํ•˜๊ณ  ์žฅ๋ฉด์— 10๊ฐœ์˜ ์ฐป์ฃผ์ „์ž๋ฅผ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณต์ œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ฐœ์ฒด๊ฐ€ ๋ถ€๋ชจ๋ฅผ ์ฐธ์กฐํ•œ ๋‹ค์Œ ์ž์‹ ์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ณต์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๋‚ด ๊ฐœ์ฒด์˜ ๋ณต์‚ฌ๋ณธ์„ 10๊ฐœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

var dae;
var dae = [];
var loader = new THREE.ColladaLoader();
    loader.options.convertUpAxis = true;
    loader.load( 'teapot.dae',function colladaReady( collada ) {
        dae = collada.scene;
        for(var i = 0;i < 10;++i){
            daes[i] = clone(dae);
        }
    });
}
function clone(obj){
    if(obj == null || typeof(obj) != 'object')
        return obj;
    var temp = new Object();//obj.constructor(); // changed
    for(var key in obj)
        temp[key] = clone(obj[key]);
    return temp;
}
Question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ช‡ ๋…„ ๋™์•ˆ ๋‹ซํžŒ ์Šค๋ ˆ๋“œ์— ๊ฒŒ์‹œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋Œ€์‹  ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด๊ณ  dae ํŒŒ์ผ๊ณผ ํ•ด๋‹น three.js ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

var geometry = collada.scene.children[ 0 ].geometry;
var material = collada.scene.children[ 0 ].material;

for ( var i = 0; i < 10; i ++ ) {
    var mesh = new THREE.Mesh( geometry, material );
    mesh.position.set( i * 100, 0, 0 );
    scene.add( mesh );
}

์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋‚ด collada.scene ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค
image

๋ช‡ ๋…„ ๋™์•ˆ ๋‹ซํžŒ ์Šค๋ ˆ๋“œ์— ๊ฒŒ์‹œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋Œ€์‹  ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด๊ณ  dae ํŒŒ์ผ๊ณผ ํ•ด๋‹น three.js ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰