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);
Другие вопросы по тегам