| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование игр, графики и искусственного интеллекта > Построение ландшафта |
| Автор: empter 5.1.2006, 01:08 |
| При построении ландшафта, имеется необходимость в построении карты высот, с реальной карты местности, кто нибудь видел проги для этого? |
| Автор: Mephistopheles 5.1.2006, 06:01 |
| Бери фотку ландшафта, например того же Марса, преводить в чёрно - белый вид и юзай. А какие проги ты ищешь? |
| Автор: mr.DUDA 5.1.2006, 08:50 |
| http://www.geofusion.com/ Спроси ещё у DENNN-а, у него много таких ссылок. |
| Автор: DENNN 5.1.2006, 14:02 |
| в каком виде предстваленна эта самая "реальная карта местности"? Она действительно есть или это пока только абстрактные рассуждения? |
| Автор: empter 5.1.2006, 14:33 | ||||
В принципе, да. То есть пока существует некое подобие движка, с построением ландшафта с карты высот, пока работал над движком, грузил тестовый heightmap, нарисованный в фотошопе. Нужен новый heightmap, желательно, чтобы был похож на реально существующую местность.
Смотрел terragen, но без регистрации дают делать только 512х512 карту, а ландшафт предполагает быть большим по площади. |
| Автор: Mephistopheles 5.1.2006, 16:06 | ||
Элементарно: карты поверхности Марса. |
| Автор: arilou 5.1.2006, 17:11 | ||||
Ну для домашнего использования пойдет и такой размер. Ведь ее можно масштабировать |
| Автор: DENNN 5.1.2006, 17:23 | ||
программ масса. Ты бы сначала определился в каком виде будет исходная информация и какие требования по точности/выходным форматам. |
| Автор: Mephistopheles 5.1.2006, 19:01 | ||
Смешно |
| Автор: empter 5.1.2006, 19:54 | ||
| DENNN Вид исходной информации в принципе безразличен, Нашел тут прогу 3Dem называется http://www.visualizationsoftware.com/3dem.html там куча разных форматов, в которых могут хранится карты, тока самих карт на сайте нет, есть куча ссылок, но большинство битые. И потом местность буржуйская
В идеале хотябы квадрат 100km на 100км с детализацией до 3-5м (ну детализация достигается текстурированием, так что это отдельная тема) |
| Автор: powerfox 7.1.2006, 18:29 |
| Может быть пригодится - http://www.loria.fr/~rougier/software/hills/ |
| Автор: mr.DUDA 7.1.2006, 21:39 | ||
Давай посчитаем. 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
Не понял почему, сетка то регулярная, откуда ломанные линии. По текстурированию со всем полностью согласен, уже сделал splatting на пиксельном шейдере, т.е есть например 4 текстуры, и 4 alphamap, альфа отвечает соответственно за прозрачность каждой текстуры, в определенных местах на ландшафте, каждая текстура повторяется для достижения нужной детализации и это конечно минус, как вариация можно сделать текстуры в зависимости от высоты, затем все текстуры смешиваются. Можно еще по другому, так в первом Battlefield было сделано Накладываем заранее нарисованную одну большую текстуру, и при приближении, когда она начинает размазыватся фильтром, смешиваем ее с Detailed Map, но это еще текстуру надо нарисовать ALL Кстати сейчас работаю над освещением кто-нить знает как лайтмэп рассчитывается? |
| Автор: mr.DUDA 8.1.2006, 21:35 | ||||||||
При приближении к сетке видимое расстояние между узлами становится таким, что видны переходы между узлами, в виде граней полигонов. К примеру, видны вершины и ломаные очертания холмов. Я говорил о компромиссе между объёмом дисковой и(или) оперативной памяти, занимаемым картой высот и уровнем детализации. 40 метров между узлами сетки - не ахти какое разрешение, если камера на уровне пары метров от земли.
Шейдер на асме писал или на чём?
Это какой же должна быть текстура по размеру, гы
Я ещё с этим не разбирался, но чую придётся, т.к. если просто затенять полигоны в зависимости от нормали, то не получается эффект самозатенения ландшафта: высокий холм имеет тёмную сторону, но под холмом нет тени от него. А расчитывается, как я подозреваю, лайтмэп заранее. По крайней мере в FarCry именно так. Ещё кстати есть shadowmap, и между ним и лайтмэпом есть какая-то там разница (не вникал, какая именно). |
| Автор: mr.DUDA 8.1.2006, 22:05 |
| P.S. чисто на перспективу: нужно копать в сторону horizon mapping, radiosity, subsurface scattering, photon mapping. |
| Автор: empter 9.1.2006, 00:36 | ||||||
На асме, но он простой За один проход смешиваются 4 текстуры.
Да, надо искать компромисс Добавлено @ 00:42 ЗЫ: Шейдер, если кому интересно:
Ссно можно добавить еще проход рендеринга и смешать еще четыре |
| Автор: mr.DUDA 9.1.2006, 08:40 |
| [offtopic] Не подскажешь, где можно почитать подробней про этот ассемблер? Всё, что мне доводилось читать, было про HLSL. [/offtopic] |
| Автор: empter 9.1.2006, 14:50 | ||
| mr.DUDA Вообще я сам больше на HLSL ориентируюсь, просто в этом случае готовая техника подвернулась. Splatting применяется сейчас б большинстве игр.
Есть книжка хорошая, на анг. она какраз вся про асм. называется Learn Vertex and Pixel Shader Programming With Directx 9 я отсюда скачивал http://www.realcoding.net/downloads/go/778 Как думаешь, есть вообше разница на чем шейдеры кодить, HLSL медленнее выполняется? |
| Автор: mr.DUDA 9.1.2006, 15:46 | ||||||
В курсе
Спасибо
Очевидно, что медленнее. Код, написанный на HLSL, компилируется в ассемблерные инструкции, и даже при всевозможных оптимизациях, почти всегда будет работать медленнее, чем тот же код, написанный вручную на асме под конкретную задачу. |
| Автор: Maniac 4.4.2006, 04:02 | ||
что-то не хочет скачиваться, может кто выложит в другое место? |