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.