Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Построение ландшафта


Автор: empter 5.1.2006, 01:08
При построении ландшафта, имеется необходимость в построении карты высот,
с реальной карты местности, кто нибудь видел проги для этого?

Автор: Mephistopheles 5.1.2006, 06:01
Бери фотку ландшафта, например того же Марса, преводить в чёрно - белый вид и юзай.
А какие проги ты ищешь?

Автор: mr.DUDA 5.1.2006, 08:50
http://www.geofusion.com/

Спроси ещё у DENNN-а, у него много таких ссылок.

Автор: arilou 5.1.2006, 13:44
Цитата(empter @ 5.1.2006, 01:08 Найти цитируемый пост)

с реальной карты местности

А что, есть такие? Может ты имеешь ввиду просто тулзу для создания карт высот? Тогда Terragen тебе в помощь. Есть еще WorldMachine.

Автор: DENNN 5.1.2006, 14:02
в каком виде предстваленна эта самая "реальная карта местности"?
Она действительно есть или это пока только абстрактные рассуждения?

Автор: empter 5.1.2006, 14:33
Цитата(DENNN @ 5.1.2006, 14:02 Найти цитируемый пост)

только абстрактные рассуждения?

В принципе, да.
То есть пока существует некое подобие движка, с построением
ландшафта с карты высот, пока работал над движком, грузил
тестовый heightmap, нарисованный в фотошопе.
Нужен новый heightmap, желательно, чтобы был похож на реально существующую местность.

Цитата(arilou @ 5.1.2006, 13:44 Найти цитируемый пост)

Тогда Terragen тебе в помощь. Есть еще WorldMachine.

Смотрел terragen, но без регистрации дают делать только 512х512 карту, а ландшафт предполагает быть
большим по площади.

Автор: Mephistopheles 5.1.2006, 16:06
Цитата
А что, есть такие?

Элементарно: карты поверхности Марса.

Автор: arilou 5.1.2006, 17:11
Цитата(Mephistopheles @ 5.1.2006, 16:06 Найти цитируемый пост)

Элементарно: карты поверхности Марса

smile Смешно smile Я имел ввиду программы, которые строят карты высот по реальным картам местности smile

Цитата(empter @ 5.1.2006, 14:33 Найти цитируемый пост)

Смотрел terragen, но без регистрации дают делать только 512х512 карту


Ну для домашнего использования пойдет и такой размер. Ведь ее можно масштабировать smile А для проф-ого все равно придется раскошелиться на лицензию.

Автор: DENNN 5.1.2006, 17:23
Цитата(arilou @ 5.1.2006, 17:11 Найти цитируемый пост)

Я имел ввиду программы, которые строят карты высот по реальным картам местности

программ масса. Ты бы сначала определился в каком виде будет исходная информация и какие требования по точности/выходным форматам.

Автор: Mephistopheles 5.1.2006, 19:01
Цитата

Смешно smile Я имел ввиду программы, которые строят карты высот по реальным картам местности

Смешно smile Во-первых: как ты собираешься загнать в компьютер реальную карту местности, чтобы он построил карту высот? Всё деалется очень просто: берётся фотка местности и цвета сводятся к градиенту чёрного и белого - вот тебе и карта высот. smile

Автор: empter 5.1.2006, 19:54
DENNN
Вид исходной информации в принципе безразличен,
Нашел тут прогу 3Dem называется http://www.visualizationsoftware.com/3dem.html
там куча разных форматов, в которых могут хранится карты, тока самих карт на сайте нет, есть куча ссылок, но большинство битые.
И потом местность буржуйская smile (хотя это не приципиально).
Цитата(DENNN @ 5.1.2006, 17:23 Найти цитируемый пост)

требования по точности

В идеале хотябы квадрат 100km на 100км с детализацией до 3-5м (ну детализация достигается текстурированием,
так что это отдельная тема)

Автор: powerfox 7.1.2006, 18:29
Может быть пригодится - http://www.loria.fr/~rougier/software/hills/

Автор: mr.DUDA 7.1.2006, 21:39
Цитата(empter @ 5.1.2006, 18:54 Найти цитируемый пост)
В идеале хотябы квадрат 100km на 100км с детализацией до 3-5м (ну детализация достигается текстурированием

Давай посчитаем.

100км делим на 3 метра, получаем:
100000 / 3 = 33333.3

То есть количество пикселов в карте высот должно быть 30000 на 30000. Это означает, что массив, содержащий карту высот, должен быть соответствующих размеров. Предположим, что каждая точка в карте высот описывается 16-битным числом в формате с плавающей запятой. Тогда для хранения карты высот потребуется:

30000 * 30000 * 0.5 = 450.000.000 байт

То есть 450 мегабайт. Подумай над этим.

Автор: empter 8.1.2006, 16:29
mr.DUDA
Я имел ввиду немного другое
Количество пикселов на карте высот, определяет кол-во вершин на ландшафте,
но расстоянием между ними ведь можно управлять, т.е я растягиваю сетку так, что
между вершинами у меня к примеру 40 метров, (страдает конечно детализация самой ландшафтной сетки),
потом текстурирую, чтобы добиться необходимой детализации текстур.
Хотя может что то и неправильно делаю.

Дело в том, что движок должен рендерить большие открытые пространства,
типо как в авиасимуляторе например.

Автор: mr.DUDA 8.1.2006, 18:06
Ну хорошо, допустим сделаем мы 40 метров а не 3. При этом, учитываем что качество результирующей geometry, т.е. 3d-сетки, описывающей ландшафт, будет удовлетворяющим лишь до высоты в 400-500 метров (а ниже - будет куча изломанных линий).

Допустим, что-то мы сможем компенсировать за счёт высокодетализированных текстур. Но для ландшафта крупных размеров требуется текстура довольно высокого разрешения, да не одна, а несколько, т.к. при размножении текстуры получается неприемлемое качество картинки: чем больше повторов на участке экрана, тем более заметным становится то, что текстура повторяется. Наоборот, чем меньше повторов, тем более "растянутой" получится текстура. Это всё действует в случае, когда используется одна текстура. Подсказка: если взять несколько вариаций одной текстуры, которые совмещаются между собой по всем границам, и "налепить" их на ландшафт под разными углами и в разных сочетаниях, получится более реалистичный эффект. Более того: если в одном пикселе смешивать две и более текстуры в зависимости от высоты данной точки ландшафта, и прибавить шум к высоте - получится ещё более реалистичный эффект. Типа, трава переходит в камень, тёмная трава переходит в светлую траву, песок переходит в тёмную траву и т.п. Похожий эффект можно наблюдать в FarCry на первом острове.

Автор: empter 8.1.2006, 20:10
mr.DUDA
Цитата
будет удовлетворяющим лишь до высоты в 400-500 метров (а ниже - будет куча изломанных линий).

Не понял почему, сетка то регулярная, откуда ломанные линии.

По текстурированию со всем полностью согласен,
уже сделал splatting на пиксельном шейдере, т.е есть например
4 текстуры, и 4 alphamap, альфа отвечает соответственно за прозрачность каждой текстуры,
в определенных местах на ландшафте, каждая текстура повторяется для достижения нужной детализации
и это конечно минус, как вариация можно сделать текстуры в зависимости от высоты,
затем все текстуры смешиваются.

Можно еще по другому, так в первом Battlefield было сделано
Накладываем заранее нарисованную одну большую текстуру,
и при приближении, когда она начинает размазыватся фильтром, смешиваем ее с Detailed Map,
но это еще текстуру надо нарисовать smile

ALL
Кстати сейчас работаю над освещением кто-нить знает как лайтмэп рассчитывается?

Автор: mr.DUDA 8.1.2006, 21:35
Цитата(empter @ 8.1.2006, 19:10 Найти цитируемый пост)
Не понял почему, сетка то регулярная, откуда ломанные линии.

При приближении к сетке видимое расстояние между узлами становится таким, что видны переходы между узлами, в виде граней полигонов. К примеру, видны вершины и ломаные очертания холмов. Я говорил о компромиссе между объёмом дисковой и(или) оперативной памяти, занимаемым картой высот и уровнем детализации. 40 метров между узлами сетки - не ахти какое разрешение, если камера на уровне пары метров от земли.

Цитата(empter @ 8.1.2006, 19:10 Найти цитируемый пост)
уже сделал splatting на пиксельном шейдере, т.е есть например 4 текстуры, и 4 alphamap, альфа отвечает соответственно за прозрачность каждой текстуры,
в определенных местах на ландшафте, каждая текстура повторяется для достижения нужной детализации и это конечно минус, как вариация можно сделать текстуры в зависимости от высоты,
затем все текстуры смешиваются.

Шейдер на асме писал или на чём?

Цитата(empter @ 8.1.2006, 19:10 Найти цитируемый пост)
Можно еще по другому, так в первом Battlefield было сделано
Накладываем заранее нарисованную одну большую текстуру,
и при приближении, когда она начинает размазыватся фильтром, смешиваем ее с Detailed Map, но это еще текстуру надо нарисовать

Это какой же должна быть текстура по размеру, гы smile...

Цитата(empter @ 8.1.2006, 19:10 Найти цитируемый пост)
Кстати сейчас работаю над освещением кто-нить знает как лайтмэп рассчитывается?

Я ещё с этим не разбирался, но чую придётся, т.к. если просто затенять полигоны в зависимости от нормали, то не получается эффект самозатенения ландшафта: высокий холм имеет тёмную сторону, но под холмом нет тени от него. А расчитывается, как я подозреваю, лайтмэп заранее. По крайней мере в FarCry именно так. Ещё кстати есть shadowmap, и между ним и лайтмэпом есть какая-то там разница (не вникал, какая именно).

Автор: mr.DUDA 8.1.2006, 22:05
P.S.
чисто на перспективу: нужно копать в сторону horizon mapping, radiosity, subsurface scattering, photon mapping.

Автор: empter 9.1.2006, 00:36
Цитата(mr.DUDA @ 8.1.2006, 21:35 Найти цитируемый пост)

Шейдер на асме писал или на чём?

На асме, но он простой
За один проход смешиваются 4 текстуры.
Цитата(mr.DUDA @ 8.1.2006, 21:35 Найти цитируемый пост)

не ахти какое разрешение, если камера на уровне пары метров от земли.

Да, надо искать компромисс smile
Добавлено @ 00:42
ЗЫ:
Шейдер, если кому интересно:
Код

ps_1_4

////////////////////////////////
// r0: alphamaps
// r1 - r4: textures
////////////////////////////////

// сэмплы
texld r0, t0
texld r1, t1
texld r2, t1
texld r3, t1
texld r4, t1

// смешиваю
mul r1, r1, r0.x
lrp r2, r0.y, r2, r1
lrp r3, r0.z, r3, r2
lrp r0, r0.w, r4, r3

Ссно можно добавить еще проход рендеринга и смешать еще четыре smile

Автор: mr.DUDA 9.1.2006, 08:40
[offtopic]
Не подскажешь, где можно почитать подробней про этот ассемблер? smile
Всё, что мне доводилось читать, было про HLSL. smile
[/offtopic]

Автор: empter 9.1.2006, 14:50
mr.DUDA
Вообще я сам больше на HLSL ориентируюсь, просто в этом
случае готовая техника подвернулась. smile
Splatting применяется сейчас б большинстве игр.

Цитата(mr.DUDA @ 9.1.2006, 08:40 Найти цитируемый пост)

Не подскажешь, где можно почитать подробней про этот ассемблер?

Есть книжка хорошая, на анг. она какраз вся про асм.
называется Learn Vertex and Pixel Shader Programming With Directx 9
я отсюда скачивал
http://www.realcoding.net/downloads/go/778

Как думаешь, есть вообше разница на чем шейдеры кодить, HLSL медленнее выполняется?

Автор: mr.DUDA 9.1.2006, 15:46
Цитата(empter @ 9.1.2006, 13:50 Найти цитируемый пост)
Splatting применяется сейчас б большинстве игр.

В курсе smile

Цитата(empter @ 9.1.2006, 13:50 Найти цитируемый пост)
Есть книжка хорошая, на анг. она какраз вся про асм.
называется Learn Vertex and Pixel Shader Programming With Directx 9

Спасибо

Цитата(empter @ 9.1.2006, 13:50 Найти цитируемый пост)
Как думаешь, есть вообше разница на чем шейдеры кодить, HLSL медленнее выполняется?

Очевидно, что медленнее. Код, написанный на HLSL, компилируется в ассемблерные инструкции, и даже при всевозможных оптимизациях, почти всегда будет работать медленнее, чем тот же код, написанный вручную на асме под конкретную задачу.

Автор: Maniac 4.4.2006, 04:02
Цитата(empter @ 9.1.2006, 14:50 Найти цитируемый пост)
Есть книжка хорошая, на анг. она какраз вся про асм.
называется Learn Vertex and Pixel Shader Programming With Directx 9
я отсюда скачивал
http://www.realcoding.net/downloads/go/778


что-то не хочет скачиваться, может кто выложит в другое место?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)