Three.js(3) Camera

相機

  1. 透視投影相機THREE.PerspectiveCamera
  2. 正投影相機THREE.OrthographicCamera

這裏寫圖片描述

透視投影,有一個基本點,就是遠處的物體比近處的物體小。

正投影,遠近高低比例都相同。

1.正投影相機

OrthographicCamera(leftrighttopbottom,near,far)
  1. left:左平面距離相機中心點的距離
  2. right:右平面距離相機中心點的距離
  3. top:頂平面距離相機中心點的距離
  4. bottom:底平面距離相機中心點的距離
  5. near:近平面距離相機中心點的距離
  6. far:遠平面距離相機中心點的距離`
var camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 );//將瀏覽器窗口的寬度和高度作爲了視景體的高度和寬度,相機正好在窗口的中心點上

scene.add( camera );

2.透視相機

PerspectiveCamera( fov, aspect, near, far )
  1. 視角fov
  2. 縱橫比aspect:實際窗口的縱橫比,即寬度除以高度。
  3. 近平面near
  4. 遠平面far
var camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );

scene.add( camera );

3.實例和比較

這裏寫圖片描述
左邊爲透視相機,右邊爲正投影相機

下面代碼可以測試不同FOV時透視相機的顯示

   function animation()
        {
            //renderer.clear();
            //camera.position.x =camera.position.x +1;
            //mesh.position.x-=1;
            changeFov();//變角
            renderer.render(scene, camera);
            requestAnimationFrame(animation);

            stats.update();
        }
        function setCameraFov(fov)
        {
            camera.fov = fov;
            camera.updateProjectionMatrix();
        }
        function changeFov()
        {
            var txtFov = document.getElementById("txtFov").value;
            var val = parseFloat(txtFov);
            setCameraFov(val);
        }

    </script>
</head>

<body onload="threeStart();">
<div id="canvas-frame"></div>
<div>
    Fov:<input type="text" value="45" id="txtFov"/>(0180的值)
</div>
</body>
</html>

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

180度時顯示範圍無窮大,物體無法在屏幕中顯示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章