Buzz
#14
29 апреля 1998 |
|
Ассемблер - Описание алгоритмов: 2D bump mapping, Gouraud Shading, Fast Phong Shading, Z Buffering, Flat Shading, Voxels.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ┌┼┘┌─┴┘└┐─┘┌┘┌─┘▒▒▒░░░ ├┐└──┬─┘ ° ° ░ ░▒▓▒▓██▓█ └┬┌─████│████ ████░█ ·┘│┬ · @@@##∙· ° ° ░ ░▒▓█▓███ ┌┼┘┌█ █ █ █▒█░░█ █ ·┤·└─· ·@/ #° ° ░ ░▒▓▒▓██▓█ ┌─┘█ █▒▒█░█░ █ █ └┐ ###%° ў ° ° ░ ░▒▓█▓███ ├┴┼─█ █▒█▒░█░█ █ █ █┼┐└· -&/ ў °/ ° ░ ░▒▓▒▓██▓█ ┌┼┴┐████▒█░░█ █ █ ████│┼┤ &/ \°°·#/ ° ° ░ ░▒▓█▓███ ┐┘└─▒▒▒░░████ ████┌┘└┘┐└─ · &/ ·##/ ° ° ░ ░▒▓▒▓██▓█ └─▒▒▒░░░─┐┼──┐┼──┐│┌ ┌┘┌──┤ #/@@ ° ° ░ ░▒▓█▓███ ▒▒▒░░░└─┐└┘┌──┘┌┼─┌┴ └─┘┌┴└─· @/ \@ ° ░ ░▒▓▒▓██▓█ ^^^^^^^^^^^^^^^^^^^^ ПРОСТО КЛЕВЫЙ ЭФФЕКТ ! ^^^^^^^^^^^^^^^^^^^ (c) 1998 main text by Sat / MegaCode / Extreme (c) 1998 asciigfx & add.text by Demiurge Ash / Eternity Industry ------------------- С течением времени спектрумовские эффекты все более навора- чиваются. Вместе с эффектами меняется и лексикон кодера. Предла- гаем Вам приобщится к миру 'выскоих материй' :-). Прочитав сие руководство по словоблудию вы сможете поразить своих друзей, при просмотре очередной демы, ткнув пальцем в экран со словами: " Дык, эт ж voxel, е-мое! Оппаньки !". 2D bump mapping --------------- Выглядит как будто источник света шарится по объемной поверхности. Такой эффект вы можете наблюдать в деме "Power 1 Up" by Megacode. ° Делается очень просто: 4 ° X ° 2 a) вычисляем нормали в ° точке X: 3 Nx= 2x - 4x Ny= 1y - 3y б) по этим координатам выбираем уровень яркости из таблички, которая как правило представляет собой концентрические окружности с максимальной яркостью в центре и затухает к краям. ░░▒▒▒▒▒░░ ░░▒▒▓█▓▒▒░░ │ ░▒▒▓███▓▒▒░ Ny ░░▒▒▓█▓▒▒░░ │ ░░▒▒▒▒▒░░ ───Nx─── в) перебрасываем яркость в точку X - и все ! Gouraud Shading --------------- По качеству закраски выступает на втором месте после fong'a. Существенный недостаок - при использовании нeбольшого количества цветов становятся заметны переходы (как правило это видно все- гда). Закраска gouraud строится интерполированием цвета от одной точки с известной яркостью, к другой - также с известной яркос- тью, иначе говоря необходимо в качестве входного параметра иметь 3 точки, т.к. интерполирование происходит по уравнению 2-ой сте- пени ax¤+bx+c, 3 точки нужны для нахождения коэффициентов a,b,c. Eсли объект - 4-хугольник, нам понадобятся любые 3 вершины. Все остальные точки полигона можно найти по этим трем. Fast Phong Shading ------------------ Самый смачный способ закраски. Его отличительная черта-очень плавные цветовые переходы. Очень часто можно заметить, что на объекте отражается источник света (этого больше нет ни в одной другой закраске). Итак, нам опять понадобятся нормали к поверх- ности, как и в bump mapping'e, но вот как их вычислять шустро и безболезненно - это для нас до сих пор вопрос. Все остальные операции аналогичны bump'у. Z Buffering ----------- Довольно грубая закраска. Цвет точки определяется по ее Z-координате. Характерна закраска 'пластами', которые всегда параллельны плоскости экрана. Кажется, здесь ничего объяснять не надо - все просто очевидно. Flat Shading ------------ Самый ламерский способ, широко распространенный на ZX, т.к. требует минимальных затрат времени. Вся грань закрашивается мо- нотонно. Ее цвет определяется расстоянием до источника света и углом к нему. На ZX практически всегда считают, что источник света располагается за экраном, он неподвижен - и рассчитывают цвет грани по ее Zср координате, которая вычисляется как средняя из координат составляющих грань точек. Voxels ------ Простой способ изобразить земную поверхность. При постро- ении используется метод Z-buffer'a, т.е. начинаем строить ланд- шафт от самой дальней точки, удаленной от наблюдателя к экрану. При этом необходимо иметь карту высот. Высота точки определяется яркостью в карте высот. Причем, когда мы русуем точку на экране, необходимо ██▓▓▓▒▒▒▒░ ░░▒▓▒▒░ прорисовать ее на всей высоте (протя- ▓▓▓▒▒▒░░ ▒░ ░░▒░ нуть ), чтобы сохранялась цельность ▒▒▒▒░ ░▒▒▓▒░ ░ изображения. ░░░ ░▒▒▓██▓▒░ ░░▒ Ко всему этому добавим перспективу, ░░ ░░▒▓██▓▒▒░ ░░░▒▒ немножко поизвращаемся - и получится ландшафт вплоне симпатичный ландшафт. ███ Кстати, как Voxel'и строятся, так ▓▓███▓▓ 0 они и выглядят: масса точек, которые ▒▒▓▓███▓▓▒▒▒▒ 0 | несколько прыгают с места на место ▒▒▓▓███▓▓▒▒▒▒ | | при перемещении ландшафта. ▒▒▓▓███▓▓▒▒▒▒ W W 'протягивание' точек по высотам
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября