2012-04-28 3 views
0

я использовал 3D-формулу перспективной проекции:3D Перспективная проекция не выглядит правильно

sx = wx*scale/wz 
sy = wy*scale/wz 

Он проецирует вроде бы все в порядке, но, например, куб больше похож на прямоугольную призму и действительно вытянутый.

Это выглядит следующим образом:

enter image description here

Я проводил исследования на него и смотрел на другие страницы на нем на StackOverflow, но я не понимаю, почему это растягивая его.

Я также пробовал другие альтернативы, такие как разделение z-значения на 2 или 4 или какое-то произвольное значение, чтобы сделать его более похожим на куб-иш, но для более сложных объектов это действительно не трюк.

Любая помощь приветствуется.

Спасибо.

+0

Вы читаете http://en.wikipedia.org/wiki/3D_projection? –

+0

Каковы 8 мировых координат куба? И что вы получили как координаты экрана? –

+0

@SteveH Да, я прочитал это. Я получил формулу с другого веб-сайта некоторое время назад. Я просто решил начать делать 3D-материал снова. – user1351031

ответ

2

Ваша проекция выглядит как крайний широкоугольный вид. Это «правильная» проекция перспективы - ваша формула правильная, но ключ находится в переменной scale.

Значение scale обычно

screen_width_in_pixels * focal_length 

, где focal_length это отношение расстояния от глаз зрителя от экрана, к ширине экрана. Конечно, вы не можете контролировать, как близко кто-то сидит перед своим монитором, так что вы догадываетесь. 1.0 - 1.5, как правило, является хорошим диапазоном.

Когда вы меняете это значение на что-то менее широкоугольное, побочным эффектом будет то, что «камера» будет «приближать» на ваш объект и, вероятно, заполнит экран. Поэтому вам нужно будет компенсировать перемещение объекта дальше от камеры.

Существует (конечно) хороший длинный Wikipedia article on the subject.

+0

Спасибо за ответ. Я попробовал, что вы метод масштабирования, но он все еще выглядит растянутым. Он выглядит примерно так же, как и раньше. Любые идеи о том, что еще я могу изменить, чтобы остановить его растяжение? – user1351031

+0

Проверьте свои координаты. Действительно ли это лица куба? –

0

У меня была такая же «проблема» при попытке визуализации окна на холсте html5. То, что заставило растянутую коробку выглядеть «нормальным» для меня, заключалось в том, чтобы установить значение a Camera Formula в -250 вместо -50, которое я использовал. Затем, в зависимости от того, какая формула используется для вычисления х, у координаты, вы можете настроить либо г положение зрителя (эз)

a Viewer

или расстояние от поверхности записи к входным зрачком (RZ) для увеличения вашего объекта.

a formula

Я знаю, что этот вопрос был задан вопрос полгода назад, но так как я din't найти ответы, которые помогли мне, что я решил поделиться своим опытом. Надеюсь, это помогает кому-то.