0

ウェブページへのリンク: http://door-in-wall.asg-3d.ru

ソース: http://door-in-wall.asg-3d.ru/source.zip

init()を呼び出した後、シーンが初期化されます。カメラ、ライト、生成されたジオメトリ (テキストと球体) が追加され、JSonLoader 3D モデルが読み込まれます。カメラ、ライト、生成されたジオメトリがすぐにシーンに追加されましたが、JSonLoaderがモデルをロードするとき - 理解できません...

  // Create 3D Text Mesh
  var textMesh3 = new THREE.Mesh( text3d3, textMaterial );
  textMesh3.position.x = textMesh1.position.x;
  textMesh3.position.y = textMesh2.position.y - text3d1.boundingBox.max.y * 2.6;

  scene.add( textMesh3 );

  console.log('textMesh3 within init() = ', textMesh3); //textMesh3 = THREE.Mesh
  console.log('scene.children.length after load textMesh3 = ', scene.children.length); //scene.children.length = 6


  // Add back plane
  var loader = new THREE.JSONLoader().load( "js/backplane.js", function ( geometry ) {

    geometry.computeBoundingBox();

    backPlaneMesh = new THREE.Mesh( geometry, backPlaneMeshMaterial );
    backPlaneMesh.position.set(SCREEN_WIDTH, 0, 0);
    backPlaneMesh.scale.set(4, 4, 4);

    scene.add(backPlaneMesh);

  });

  console.log('JSONLoader within init() = ', loader); //loader = undefined 
  console.log('scene.children.length after load JSONLoader = ', scene.children.length); //scene.children.length = 6

コンソール出力は、シーンconsole.log (scene.children.length)の子孫 (行 103、148、167) に残しました。

animate()render( ) を呼び出した後にscene.children.length を確認すると、7 つの子の存在が示されます。

モデルが JSONLoader でロードされる方法とタイミングは?

4

1 に答える 1

1

loader.load()非同期です。つまり、 が完了するまでコードの実行を停止しません。並行してロードされ、完了するとコールバックが実行されます。モデルの大きさによっては、ダウンロードと解析に数秒かかる場合があります。ローカルにロードしている場合でも、数ミリ秒かかります。

于 2012-07-02T14:05:26.300 に答える