Ручной трехмерный рендер - 2

Неделя работы над рендером прошла под девизом «Медленно, зато не так страшно».
Если кому интересно — прошу под кат.

Всю неделю улучшал качество отображения динамических моделек, чтобы они не выглядели «какие-то жуткие модельки с торчащими пикселями» :)

Разумеется, в условиях флэша многого не добьешься, но кое-что удалось сделать.

По пунктам:
1. Сабпиксельная и сабтексельная точность.
Никогда не обращали внимание на рендерилку PSP? Там отчетливо видно, что края полигонов состоят из пикселей и края не сглажены. Но модельки перемещаются и вращаются плавно. Создается такое впечатление, что пиксели «перетекают» друг в друга.
Никогда не мог понять, как они это делают.
На этот раз понял :)

2. Мипмаппинг для моделек.
Тут все просто. Если моделька далеко и маленькая — нет смысла натягивать на нее большую текстуру, это будет выглядеть довольно страшно. Создаем несколько вариантов текстуры разного размера. При рендеринге выбирает ту, которая лучше подходит.
Получается неплохо.
Хотел сделать (сделал, на самом деле) мипмаппинг для статики тоже, но особого улучшения картинки это не принесло. Увы, особенности сканлайн-рендерилки.

3. Освещение для моделек.
Собственно освещение :)
Специально немного усилено, что создает «пересвеченность» моделек. Особенно заметно на панцире краба.
Источник света один, направленный, одноцветный.
На самом деле, не особая проблема сделать много цветных светильников, так что пока думаю.

В принципе, из «заявленных фич» остались только тени.
Вот с тенями засада.

В журнализме тени были фейковые. Копия модельки проецировалась на пол и рендерилась серым цветом с блендингом. На стены и объекты тени не падали. Просто и быстро.

Сейчас вот стою перед выбором — сделать такой же фейк или поднапрячься и выдать настоящие «стенсильные» тени.
Хочется, чтобы тени от домов падали на пацанов, пацаны затеняли других пацанов и все такое.
Проблема, как обычно, в скорости.
Если еще и сделать несколько источников света, тогда рендер просто умрет.

Может сделать тени только от «солнца», а освещение от нескольких?
Какие есть мысли? На такие фичи вообще кто-нибудь внимание обращает?



Демка.
Если тыкнуть Space, можно включить предыдущий рендер и ужаснуться.
megaswf.com/simple_serve/67259/
  • +6

Комментарии (14)

0
ммм… мне приятный

Мне кажется надо делать освещение от одного источника и фейковые тени только на пол. Это все увидят.

P.S. а постмортем по CiviBalls будет? :)
  • qdrj
  • qdrj
0
CiviBattle (civiballs не мои) пока не зарелизили.
Там и перфоманс еще, так что примерно через месяц напишу.

Тени только на пол меня смущают, на самом деле.
Стоит краб, весь такой освещенный, а тень от него под дом уходит. Непорядок.
Буду еще думать.
0
Очень интересно было посмотреть. Очень интересно было бы еще и почитать. :) 3д я не занимался, но собираюсь, понятно что много чего где уже писано и самому додуматься можно было бы. Но, если у тебя будет время и возникнет некий интерес, можешь написать пару статей об используемых подходах? Да просто об чем-нибудь, это будет очень интересно почитать, да и кругозор расширит, дальше уж можно будет закапываться с головой. :)
0
Собственно, через полгода этот рендер уже будет неактуален.
Выйдет бета молехила, а там уже все совсем по другому.

С другой стороны, базовые вещи остаются неизменными.
Общее представление обо «всем 3д», которое я использую, можно получить, пролистав старый фак эхи demo.design ( algolist.manual.ru/graphics/3dfaq/index.php ).

Применительно к флэшу многое работает по другому, но принципы те же.
Руки дойдут — сделаю пару постов.
0
Я не имел ввиду детальное описание кода этого проекта, а просто некие подходы, да все что угодно на самом деле. Кто-то утром читает страничку о спорте из газеты, а я блоги. Блог раскрывающий, как разработчик подошел к реализации ручного 3д рендера в flash, я бы почитал с упоением.
Спасибо за ссылку, буду ждать новых постов. :)
0
awesome ;)
отсечение полигонов камерой кривое. хорошо заметно когда во вращающемся теле оно начинает пропадать и появляться, хотя в зоне видимости. В обеих рендерах.
0
a w e s o me ;)
отсечение полигонов камерой кривое. хорошо заметно когда во вращающемся теле оно начинает пропадать и появляться, хотя в зоне видимости. В обеих рендерах.
0
Это не кривое :)
Если есть пересечение OOBB с ближней плоскостью отсечения — моделька не рисуется.

В будущей игре ниже крыш домов камера опускаться не сможет, так что объект отклипается границами экрана раньше, чем ближней плоскостью.
Оптимизация :)
+3
да, стало значительно лучше. по поводу теней — лично я за полностью фейковые тени (серый овал под моделькой) либо за самые «минимальные» тени. игроки не заметят разницы, тем более во флеш игре. аудитория такая. имхо лучше направить производительность на более заметные вещи — эффекты, дальность видимости и т.п.
0
Собственно, дальности никакой больше и не будет.
Это и так один из самых «больших» уровней.
По крайне мере, так планируется.
0
Крутяк, насчёт теней согласен с Eugene. Лучше оставить запас производительности для большего количества отображаемых объектов в феерических сценах...:)
И было бы круто в следующую демку впихнуть красивую текстуру пола, чтоб вообще картинкой наслаждаться…
0
С текстурами больной вопрос :)
Буду пробовать сам, конечно, что-нибудь делать, но, скорее всего, придется искать текстурщика/моделлера на уровни.
0
Выглядит впечатляюще как для флеша)

На счёт теней: реалистичные тени здесь ни к чему, равно как и антиалиасинг. Никто не заметит разницы полная динамическая там тень, или просто размытый овал под персонажем. :)
0
Разницу канеш заметят. Но! я за идею и геймплей. много уже обсасывали эту тему — но действительно графика это 10-20% игры. мб даже меньше. Круглые тени — это брутально. И это мне по душе) Динамичесвкое освещение — гуд. отлично выглядит. Главное производительность и геймплей. а вот с ним — как повезёт. покатит народу или нет. Либо шедевр, либо норм. Либо треш.
0
>>Главное производительность и геймплей.
Это точно)) Играют люди в WOW, и деньги платят)
А графика там… «инновационная», за то у всех летает :D
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.