THREE.Scene => THREE.Object3D Scene に追加する場合は、add を使用しますが、削除する場合は remove を使用します。いずれも、Object3D のメソッドであり、Scene の場合は特別な処理が Object3D 内でなされており、その処理を受け持つのが、Scene のメソッドである、__removeObject となります。 remove メソッド
remove: function ( object ) {
var index = this.children.indexOf( object );
if ( index !== - 1 ) {
object.parent = undefined;
this.children.splice( index, 1 );
// remove from scene
var scene = this;
while ( scene.parent !== undefined ) {
scene = scene.parent;
}
if ( scene !== undefined && scene instanceof THREE.Scene ) {
scene.__removeObject( object );
}
}
}
まず、削除対象の引数のオブジェクトが、メソッドが実行されたオブジェクトに属するかどうかチェックして、存在した場合、parent プロパティをリセットして、メソッドが実行されたオブジェクから対象オブジェクトを削除しています( 内部仕様の配列から削除 ) その後、メソッドが実行されたオブジェクから、Scene オブジェクトを探し出して( 一番トップレベルにあるという仕様 )、Scene が保有する特別な内部仕様から対象のオブジェクトを __removeObject で削除します Scene で定義されている配列 __objects = []; __lights = []; __removeObject メソッド
THREE.Scene.prototype.__removeObject = function ( object ) {
if ( object instanceof THREE.Light ) {
var i = this.__lights.indexOf( object );
if ( i !== -1 ) {
this.__lights.splice( i, 1 );
}
} else if ( !( object instanceof THREE.Camera ) ) {
var i = this.__objects.indexOf( object );
if( i !== -1 ) {
this.__objects.splice( i, 1 );
this.__objectsRemoved.push( object );
// check if previously added
var ai = this.__objectsAdded.indexOf( object );
if ( ai !== -1 ) {
this.__objectsAdded.splice( ai, 1 );
}
}
}
for ( var c = 0; c < object.children.length; c ++ ) {
this.__removeObject( object.children[ c ] );
}
}
|
|
【Three.jsの最新記事】
- r69 で再チェックしました / Three.js(r53) で追加された LineDashedMaterial のサンプルを簡素化して解りやすくしました
- Three.js(r69) : Lineメソッドで使用する頂点の配列を持つ Geometry オブジェクト
- Three.js : 好きな背景透過画像を飛翔させる
- Three.js : Vector3 オブジェクトのコンストラクタ / result = x || 0; という書き方
- Three.js : WebGL限定の Cube テクスチャによる『パノラマ背景』
- Three.js : 球を使った『パノラマ背景』
- Three.js の canvas_geometry_birds の『鳥』だけを取り出して考える
- ユーザ定義の THREE.UserCubes1 オブジェクトを使って、カメラでその周りを周回する
- Three.js : カメラが発射する Ray(光) にヒットするオブジェクトを総取りする
- Three.js の点線表示の詳細( 特に Windows で WebGL では線の太さは実装なし )
- Three.js でキューブの『テクスチャ面設定』とスケール・X軸回転を jQuery のスライダーでテストする
- Three.js の座標系の向きを テクスチャを貼りつけたキューブと jQuery のスライダー で確認する
- Three.js を使って DAZStudio でレンダリングした女性をちょっと湾曲した炎の前に立たす 〜 Three.js エフェクトの可能性
- Three.js 3Dゲームワールド(を夢見て)リアルサンプル
- Three.js の webgl_geometry_minecraft.html で使われている Cube World を使って、3D モデルを乗っけてカメラを動かすとかなりいい雰囲気です
- Three.js の個別ソースを使った部分カスタマイズ
- Three.js : あるスケールでの平均した座標集合の作成




























