Я пытаюсь переключиться между Perspective и Orthographic камерами в моем сценарии. Я хочу, чтобы объект на некоторой глубине сохранял его размер проекции. Я отказался понять геометрию...
Не могли бы вы предоставить некоторую ссылку на простой учебник, это слишком сложно для меня.
Для объекта с position.z==0
меня:
perspCamera = new THREE.PerspectiveCamera(45, W / H, 1, 1000);
perspCamera.position.z = 100;
var S=Math.tan((45/180)*Math.PI)*100;
orthoCamera = new THREE.OrthographicCamera( -S, S, S, -S, 1, 1000 );
Это неверно.
Я получаю, я отправлю ответ с помощью codepen link
Соотношение между Z-расстоянием и размером, при перспективной проекции:
var fov_y = 45;
var depht_s = Math.tan(fov_y/2.0 * Math.PI/180.0) * 2.0;
Таким образом, орфографическая проекция должна быть (THREE.OrthographicCamera):
var Z = 100;
var aspect = W / H;
var size_y = depht_s * Z;
var size_x = depht_s * Z * aspect;
orthoCamera = new THREE.OrthographicCamera(
-size_x/2, size_x/2,
size_y/2, -size_y/2,
1, 1000 );