| demo.design 3D programming FAQ | download | links | author

ВВЕДЕНИЕ
1.1. Предположения и соглашения

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

Рекомендуется наличие у читателя неких базовых познаний в стереометрии и линейной алгебре, а также программировании. Например, довольно сильно рекомендуется умение нарисовать одноцветный 2D треугольник.

Соглашения - следующие. Система 3D координат используется такая:

Здесь буквами x, y, z обозначены положительные направления осей Ox, Oy и Oz соответственно. Также предполагается, что камера неподвижна и находится в точке (*) с координатами (0,0,-dist), ось зрения камеры направлена по оси Oz, а именно в точку (0,0,0) (т.е. camera target = (0,0,0)), ось Ox с точки зрения камеры направлена слева направо, ось Oy - снизу вверх, ось Oz - вглубь экрана. Размер экрана - xSize на ySize пикселов.

Проецирование на плоскость экрана в этом случае будет осуществляться по формулам

sx = xSize/2+x*dist/(z+dist),
sy = ySize/2-y*dist/(z+dist).

Здесь и далее используются обозначения:

sx, sy | координаты проекции точки на экране
x, y, z | 3D координаты точки,
dist | расстояние от камеры (она находится в точке (0,0,-dist)) до начала координат,
u, v | координаты в текстуре (u - по горизонтали, v - по вертикали).

| demo.design 3D programming FAQ | content | next