Как рассчитать fov для камеры Perspective в трех js?
Я хочу установить CubeGeometry
прикоснуться к холсту, и я использовал это fov
Формула, но это не сработало. это CubeGeometry
выходит из холста.
var height = 500;
var distance = 1000;
var fov = 2 * Math.atan((height) / (2 * distance)) * (180 / Math.PI);
itsLeftCamera = new THREE.PerspectiveCamera(fov , 400 / 500, 1.0, 1000);
Если я неправильно рассчитываю, пожалуйста, подскажите, как решить эту проблему? и я хочу установить это в обобщенном виде, чтобы при любом положении камеры перспективы эта геометрия идеально касалась моего холста, и эта геометрия должна находиться в центре холста.
1 ответ
IMO, вы должны рассчитывать диагональ вместо высоты в fov калькуляторе, потому что, когда вы делаете для высоты, вы фокусируетесь на высоте, тем самым обрезая часть ширины больше высоты.... Когда вы делаете для диагонали, ваша камера фокусируется на весь прямоугольник..so код ИМО должен быть
var height = 500;
var width = 400
var distance = 1000;
var diag = Math.sqrt((height*height)+(width*width))
var fov = 2 * Math.atan((diag) / (2 * distance)) * (180 / Math.PI);
itsLeftCamera = new THREE.PerspectiveCamera(fov , width / height, 0.1, distance);