Info Guide
#05
30 апреля 2004 |
|
For Coderz - Нюансы Raycasting-а.
Raycasting note Статья Shiru Otaku про рейкастинг была изъята из неопубликованного материала Adventurer #14. В соответствии с традиция- ми нашего издания (а точнее,его Guide-час- ти ;), она также снабжена моими ремарками. Разумеется, моё мнение не является истиной в последней инстанции. Кстати,данный мате- риал, достаточно сдобренный личным непони- манием со стороны лекторов, преподаётся на курсе "Компьютерной графики" в районе третьего курса специальности "Программное обеспечение чего-то чего-то и чего-то че- го-то". Спектрумистам учиться в ВУЗе по данной специальности не советую. Изначально в статье содержалось мнение, что персонаж нельзя вращать по оси, перпе- ндикулярной экрану. Вот так: Однако я со своей стороны полагаю, что это возможно. Для этого нужно строить кар- тинку, будто герой не вращался около этой оси, а потом переносить картинку на экран в повёрнутом виде. Конечно, это редко может потребоваться, но вдруг? В demo, например... Стены под 45° (т.е. с СВ на ЮЗ или с СЗ на ЮВ ) можно реализовать и в стандартном рейкастинге,и в моём варианте,где сканиро- вание сплошное. Во втором случае это отни- ет не так много процессорного времени, но это число теоретически.Поскольку цикл ска- нирования станет очень сложным. При входе в каждый кубик нужно проверить,есть ли там диагональная стенка, и если да, то какая - в соответствии с её типом должен произойти переход на нужный вариант внутреннего цик- ла. При обработке диагональных вариантов одна из координат должна быть искажена: X=X+Y, или X=X-Y, или Y=X+Y, или Y=X-Y, в зависимости от типа стенки и направления входа в кубик. То же нужно сделать с пере- менными, содержащими шаг. Тогда цикл будет работать как обычный, т.е.сложение с выхо- дом по переполнению. Собственно,и в стандартном рейкастинге, если тип кубика со стенкой знать заранее, скорость упадёт вовсе не в 2 раза. Но ал- горитм, видимо, ещё мудрёнее. Alone Coder
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября