Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ Essence UDK _ Map Render

Автор: StaticZ 14.1.2015, 21:30

Сегодня накатал простенький рендер карт основанный на UDK. Он действительно крайне простой (чуть более 500 строк кода), при этом не использовались никакие сторонние библиотеки, в том числе и DirectX, OpenGL и готовые движки. Все делается ручками простой отрисовкой 2D графики на ISurface (в качестве оного может выступать к примеру простой Bitmap). Забавно, не смотря на отсутствие оптимизации при больших разрешениях скрол работает куда шустрее и плавнее чем в том же CentrEd использующий для вывода средства OpenGL. (Для теста при скролле каждый раз создается ISurface в которой выполняется полная отрисовка сцены, после чего ISurface как ImageSource присваивается обычному Image контролу в WPF окне):

Код
surf = UOManager.CreateSurface((ushort)2560, (ushort)1600, PixelFormat.Bpp16X1R5G5B5);

if (flt)
    UOManager.FacetRender.DrawFlatMap(map, alt, ref surf, range, tcx, tcy);
else
    UOManager.FacetRender.DrawObliqueMap(map, alt, ref surf, range, tcx, tcy);

imgFacet.Source = surf.GetSurface().Image;


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

Изображение

Автор: StaticZ 19.1.2015, 3:56

Оптимизировал рендер, теперь работает намного быстрее (около 20-30 ms полная перерисовка с радиусом 30 (в оригинальном клиенте 18)). Так же добавил Flat mode рендинга (в масштабе 50%):

Изображение
Изображение

работает слегка медленнее конечно, но учитывая размеры отрисовываемой области вполне прилично (PS на скринах Debug версия, Release работает раза в 1.5-2 шустрее)...

Автор: StaticZ 19.1.2015, 16:37

Подправил отрисовку воды:

Изображение

в остальном работает идеально - кроме мелкого косячка - толстые стены слегка вылезают на верхние тайлы из-за чего просвечивают... Следствие проблем округления при ресайзе...

Автор: StaticZ 20.1.2015, 4:51

Добавил возможность рендинга Flat карты в файл формата png. Работает достаточно быстро у меня заняло лишь несколько минут (от 1 до 3х особо не замерял) чтобы отрисовать всю область карты размером с фелюку. Полученное изображение слишком огромно что бы его заливать, так что лишь его малая часть:


Изображение

А вообще это все делалось для того чтобы в конечном счете его преобразовать в такую стилюную рисованную карту для клиента:

Изображение

Автор: Warstone 20.1.2015, 12:32

Предлагаю забанить СтатикЗа на УОКите до тех пор, пока он не выпустит свой шард. Хотя-бы в техническом виде.

Автор: M@X 20.1.2015, 15:14

Цитата(Warstone @ 20.1.2015, 12:32) *

Предлагаю забанить СтатикЗа на УОКите до тех пор, пока он не выпустит свой шард. Хотя-бы в техническом виде.

Интересное предложение. smile.gif

Автор: StaticZ 24.1.2015, 2:26

В конечном итоге получилось это:

Изображение


Изображение

Автор: Mirage 24.1.2015, 11:49

А где Одинокая Гора? Где Щир?

Автор: StaticZ 24.1.2015, 14:42

Цитата(Mirage @ 24.1.2015, 11:49) *

А где Одинокая Гора? Где Щир?
В средиземье. У нас своя вселенная, вообще я конечно уважаю творчество Толкиена и признаю его литературный гений, но имхо вселенная ВК для игр не подходит вообще - слишком сказочная и стереотипная - в ней даже представить эльфа убийцу или хоббита мага сложно.

Автор: Mirage 24.1.2015, 17:10

Да вы сударь зануда...
Изображение

PS Мне понравилось качество - сравнив с потенциально "реальной" картой rolleyes.gif

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)