Доброго времени суток!
Замучил гугл, так ничего толкового и не нашел вот по какой теме:
Есть набор треугольников в координатах вершин. Есть камера, направление зрения и направление вверх.
Не могу никак найти нормально описанный алгоритм преобразования мировых координат в экранные.
Буду очень благодарен за любые ссылки и ответы — очень срочно нужно реализовать перспективное проецирование в задданых условиях с z-буфером...
Заранее спасибо за ответы
http://www.steps3d.narod.ru/
Смотри код движка, который называется типа "движок к книге".
Здравствуйте, shulik, Вы писали:
S>Доброго времени суток!
S>Замучил гугл, так ничего толкового и не нашел вот по какой теме:
S>Есть набор треугольников в координатах вершин. Есть камера, направление зрения и направление вверх.
S>Не могу никак найти нормально описанный алгоритм преобразования мировых координат в экранные.
S>Буду очень благодарен за любые ссылки и ответы — очень срочно нужно реализовать перспективное проецирование в задданых условиях с z-буфером...
S>Заранее спасибо за ответы 
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
большинство материала(статей) к сожалению привязано к конкретной реализации:
преобразование мировых координат в экранные с помощью DirectX:
http://pmg.org.ru/rm/pick.htm
есть парочка книг по алгоритмам трёхмерной графики и компьютерной графики(если нужно — пишите — вышлю)
S>Замучил гугл, так ничего толкового и не нашел вот по какой теме:
S>Есть набор треугольников в координатах вершин. Есть камера, направление зрения и направление вверх.
S>Не могу никак найти нормально описанный алгоритм преобразования мировых координат в экранные.
S>Буду очень благодарен за любые ссылки и ответы — очень срочно нужно реализовать перспективное проецирование в задданых условиях с z-буфером... :(
Если без камеры, то:
мировые {x,y,z}
экранные относительно центра экрана
x = x/(z+object_z_distance);
y = y/(z+object_z_distance);
полностью экранные
x += screen_width/2;
y += screen_height/2;
Если с камерой, то координаты нужно сначала повернуть на матрицу камеры.
более подробно можно найти по camera transform, camera transformation, camera matrix
p.s.
во времена software 3d engines этого материриала были тонны
почитай demo.design 3D programming FAQ (
www.enlight.ru)
— по-моему у Аксенова примеры кода прямо и используют камеру + Z-buffer.
Потом просто поищи 3D Faq,
сходи в groups.google.com почитай comp.graphics.algorithms Frequently Asked Questions,
поищи по словам 3d tutorial, zed 3d, perspective projection — тебе отвалятся тонны ссылок
p.p.s.
есть книг(и) Шикина и Борескова — там код аналогично использует zbuffer + transformations.
Спасибо всем за ответы!
Ко всему прочему еще прочел FAQ на helloworld.ru — теперь вроде бы все прояснилось