Skymaker 2

Sep 22, 2007 17:40

Программа для создания текстур Куба Неба aka SkyBox.

Из первичной сферической панорамы (размером 1024х512 точек) делает шесть проекций на грани куба, из центра которого можно увидеть панораму.

Т.е. из такого:

Read more... )

творчество, программирование

Leave a comment

brachka May 15 2008, 23:10:28 UTC
Написать формулы - не вопрос (надеюсь, бейсиковская "грамматика" знакома):
------------------------------------------------------------
For x = 0 To 255 'подсчёт горизонта
x1 = CInt(127.5 + Atn(x / 127.5 - 1) * 162.6564)
For y = 0 To 255
y1 = CInt(127.5 + Atn((y - 127.5) * Cos(Atn(x / 127.5 - 1)) / 127.5) * 162.6564)
art(x, y) = 55 + (y1 + 128) * 3072 + x1 * 3
Next y
Next x
For y = 0 To 127 'подсчёт полюсов
For x = y To 254 - y
x1 = CInt(127 + Atn((x - 127) / (128 - y)) * 161.701)
y1 = CInt(Atn(Sqr((127 - y) ^ 2 + (127 - x) ^ 2) / 127) * 161.701)
adn(x, 255 - y) = 55 + y1 * 3072 + x1 * 3
adn(255 - y, 255 - x) = 55 + y1 * 3072 + x1 * 3 + 768
adn(255 - x, y) = 55 + y1 * 3072 + x1 * 3 + 1536
adn(y, x) = 55 + y1 * 3072 + x1 * 3 + 2304

aup(1 + x, 255 - y) = 55 + (511 - y1) * 3072 + (255 - x1) * 3 + 1536
aup(255 - y, 254 - x) = 55 + (511 - y1) * 3072 + (255 - x1) * 3 + 768
aup(254 - x, y) = 55 + (511 - y1) * 3072 + (255 - x1) * 3
aup(y, x + 1) = 55 + (511 - y1) * 3072 + (255 - x1) * 3 + 2304
Next x
Next y
------------------------------------------------------------
Здесь art, adn, aup - массивы (ага, Matrix'ы, родные), размером 256 на 256 элементов - собственно, "карты" соответствия точек граней SkyBox'a и точек первичной панорамы. X и Y - переменные (от 0 до max 255), в общем случае - координаты подсчитываемой точки на грани SkyBox'a. X1 и Y1 - координаты точки фрагмента первичной панорамы, соответствующей подсчитываемой точке (как бы сложно это не звучало, но на слово "фрагмента" советую обратить особое внимание). Ну, что ещё помню: часто там число 55 мелькает (кстати, специально написал отдельно, хотя в некоторых местах можно было и пооптимизировать формулы) - это чисто для пропуска первых 54 байт (headera) в BMP картинке.

А вот описать что там ещё к чему и почему... Боюсь, куча времени уйдёт пока вспомню, а потом ещё выразить мысль умными словами, да настучать на клаве - не, sorry.

Reply

brachka May 16 2008, 22:01:04 UTC
Спасибо, буду разбираться.
Бейсик мне понятен, я с него начал изучение праграмирования. :)

Reply


Leave a comment

Up