ThreeJS: Рассчитать FOV для сетки в орфографической камере
Поэтому я пытался решить эту проблему в течение пары часов и не могу заставить его работать.
Я создал сетку и просмотр сверху в ортогональном виде.
Размеры сетки: 400 * 500, высота (нужна?) - 300
он находится в точке 0, 0, 0
камера расположена на 0, 5000, 0, обращена вниз на 0, 0, 0
Теперь единственное, что мне нужно знать, это как рассчитать
_CoreManager.GetCamera().setFov(X);
так что камера может видеть всю сетку сверху + 100 единиц с каждой стороны, чтобы пользователь мог видеть, где сетка имеет свои границы.
Попробовал это, либо я сделал что-то не так, либо это не работает для ortho, https://github.com/mrdoob/three.js/issues/1239
Спасибо:)
ОБНОВИТЬ:
Я попробовал новый способ, который, я думал, имел смысл, но нет...
http://forums.cgsociety.org/archive/index.php/t-725538.html
var dist = _Camera.position.y - _mesh.position.y;
var width = _mesh.geometry.parameters.width;
var halfHorizontalFOV = Math.atan((width / 2) / dist);
halfHorizontalFOV = Algorithms.ConvertRadiansToDegrees(halfHorizontalFOV);
дает мне степени, которые далеко от того, что должно быть.
1 ответ
Решил мою проблему с помощью ортографического исправления:
https://github.com/mrdoob/three.js/commit/fb07c9bc192c0eaedb9df187b35f69c37716c1aa
var zoom = orthoWidth / meshWidth;
_Camera.setZoom(zoom);