2016-04-15 2 views
0

BabylonJsでは、カメラがオブジェクトから一定の距離に配置されていて、その距離がオブジェクトのサイズに比例する場合、全体のシーンはほぼ同じになるはずです。BabylonJsターゲットオブジェクトが消える

私は(0、0、10000)に位置したカメラから見たサイズ1000の球、とのシーンを生成し、この簡単なテスト(実行されるようにhttp://www.babylonjs-playground.com/にコピーして貼り付けることができます)、作成:

var createScene = function() { 

    // This creates a basic Babylon Scene object (non-mesh) 
    var scene = new BABYLON.Scene(engine); 

    // This creates and positions a free camera (non-mesh) 
    var camera = new BABYLON.FreeCamera("camera", new BABYLON.Vector3(0, 0, 10000), scene); 

    // This targets the camera to scene origin 
    camera.setTarget(BABYLON.Vector3.Zero()); 

    // This attaches the camera to the canvas 
    camera.attachControl(canvas, true); 

    // This creates a light, aiming 0,1,0 - to the sky (non-mesh) 
    var light = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(1, -1, -1), scene); 

    // Default intensity is 1. Let's dim the light a small amount 
    light.intensity = 0.7; 

    // Our built-in 'sphere' shape. Params: name, subdivs, size, scene 
    var sphere = BABYLON.Mesh.CreateSphere("Sphere", 16, 1000, scene); 

    return scene; 
}; 

球のサイズが100に縮小され、それに応じてカメラの距離が縮小される(カメラが(0、0、1000)に配置される)ので、シーンは同じように見えます。

球のサイズが10に縮小され、カメラの位置が(0、0、100)に変わるという別の要因で実験を繰り返すと、何も変わりません。

これまでのところ、とても良いです。しかし、球のサイズと距離を増やそうとすると、すべてが消えます。球のサイズが10000で、カメラの位置が(0、0、100000)の場合、シーンは空に見えます。どうして?この動作を変更することは可能ですか?どうやって?私は何が欠けていますか?

ありがとうございます!

答えて

1

これは、おそらくカメラの「クリッピングプレーン」に関連している可能性があります。 3Dグラフィックスでは、カメラが距離(z軸に沿って)に「見る」ことができる距離を制限して、バックグラウンドでオブジェクトを「描く」必要がないことが一般的です。あなたがあなたのコードにこれを追加することにより、お使いのカメラの描画距離を延長するために、この値を変更することができます

camera.maxZ = 100000;

これを可視化するために、あなたはまた、球の下に平面形状を追加することができます。その後、maxZ属性を異なる値に設定し、プレーンの描画を停止する場所を確認することができます。

関連する問題