|
日時: 2013/03/18 01:39
名前: lightbox
|
拡張子:
THREE.UserCubes1 = function ( scene, cubeSize, cubeNum, displaySpan ) {
// キューブの基本サイズ( 見た目は後でスケールで変化する )
this.cubeSize = ( cubeSize !== undefined ) ? cubeSize : 20;
// キューブの数
this.cubeNum = ( cubeNum !== undefined ) ? cubeNum : 100;
// 表示幅( 発生させる座標の範囲の長さ )
this.displaySpan = ( displaySpan !== undefined ) ? displaySpan : 800;
this.geometry = new THREE.CubeGeometry( this.cubeSize, this.cubeSize, this.cubeSize );
this.group = null
this.scene = scene;
this.renew();
};
THREE.UserCubes1.prototype = {
constructor: THREE.UserCubes1,
remove: function() {
this.scene.remove( this.group )
this.group = null;
},
renew: function() {
if ( this.group == null ) {
this.group = new THREE.Object3D();
this.scene.add( this.group );
}
for ( var i = 0; i < this.cubeNum; i ++ ) {
var object = new THREE.Mesh(
this.geometry,
new THREE.MeshBasicMaterial( {
color: Math.random() * 0xffffff,
transparent: true,
opacity: 0.5 }
)
);
// 正座標に発生させて、原点に半分戻す
object.position.x = Math.random() * this.displaySpan - this.displaySpan/2;
object.position.y = Math.random() * this.displaySpan - this.displaySpan/2;
object.position.z = Math.random() * this.displaySpan - this.displaySpan/2;
object.scale.x = Math.random() * 2 + 1;
object.scale.y = Math.random() * 2 + 1;
object.scale.z = Math.random() * 2 + 1;
// 向きを360度ランダム
object.rotation.x = Math.random() * 2 * Math.PI;
object.rotation.y = Math.random() * 2 * Math.PI;
object.rotation.z = Math.random() * 2 * Math.PI;
this.group.add( object )
}
}
}
|