2012-11-12 98 views
14

有沒有辦法找出場景的渲染部分的寬度?Three.js - 視圖的寬度

例如,如果我們有寬度100目,但變焦一定程度的呈現......我怎麼能計算出在屏幕上呈現的網格的部分的寬度是多少?

回答

23

你必須在這裏準確。

根據相機的視野,camera.fov和給定距離dist,您可以計算出可見的矩形區域。

由於物體可能具有深度,因此必須在網格中選取一個平面,然後在該距離進行計算。

這裏是如何計算來自相機的給定距離dist的可見光heightwidth

var vFOV = THREE.Math.degToRad(camera.fov); // convert vertical fov to radians 

var height = 2 * Math.tan(vFOV/2) * dist; // visible height 

var width = height * camera.aspect;   // visible width 

three.js所r.87

+0

是'dist'從相機性能的FAR值的值? – 2014-02-05 10:28:39

+0

'dist'必須小於'FAR',否則該位置將不可見。 – WestLangley

+1

trully ...我誤解了,從'dist'發生了什麼。在代碼中看不到前面定義的值,請描述一下,dist是什麼? Dtis =遠 - 近還是不?謝謝! – 2014-02-06 07:00:43