Terrain + пещеры
| |
Tahoma | Дата: Четверг, 30 Декабря 2010, 12:17 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Привет всем. Хотелось бы услышать/увидеть хорошее предложение по созданию туннелей/шахт/пещер в моделях ландшафта. Сейчас используя С++ с D3D создаю небольшой ландшафтик исходя из цветовых высот изложенных в обычной bmp. Ну как обычно, чем ярче, тем выше. Вот теперь возник вопрос, как же мне создать пещеру, ну или просто углубление в полученной горе? Может кто-нибудь подсказать логическую часть КАК? Буду очень благодарен
|
|
| |
Archido | Дата: Четверг, 30 Декабря 2010, 13:15 | Сообщение # 2 |
Сэнсэй
Сейчас нет на сайте
| Tahoma, с помощью карты высот никак вообщем-то. Делаешь вторую карту, на которой помечаешь места, где у тебя есть пещеры\углубления, далее просто в том месте не создаешь треугольники и подгоняешь в то место готовую отдельную модель пещеры к примеру. Вторая карта "пещер" скажем, может хранить ID требуемой модели. Т.е. это вообщем-то уже Indoor получается (ландшафт - outdoor)
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Tahoma | Дата: Четверг, 30 Декабря 2010, 13:43 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Пробовал. У меня получается вылазят дырки из модели пещеры. Т.е. допустим у меня ровная высокая стена ввысь. Получается построена она всего из нескольких треугольников тянущихся снизу до самого верху и наоборот. Убирая полигоны там, где должен быть вход в пещеру, у меня убираются полигоны до самого верху, что значительно дыряво выглядеть начинает, т.к. пещера даже до половины стенки не доходит в высоту.
|
|
| |
ezhickovich | Дата: Четверг, 30 Декабря 2010, 14:17 | Сообщение # 4 |
[Великий и могучий хозяинъ]
Сейчас нет на сайте
| Попробуй использовать воксели для построения ландшафта... Кроме всего прочего это позволит создавать разрушаемые ландшафты... (да и вообще геометрия на вокселях потенциально разрушаема) Немного википедии
Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
|
|
| |
Archido | Дата: Четверг, 30 Декабря 2010, 14:20 | Сообщение # 5 |
Сэнсэй
Сейчас нет на сайте
| В таких случаях обычно принято выкладывать скриншоты , гораздо лучше становится понятно проблему. Под "стеной" ты подразумеваешь ландшафт(пару треуглов), которые вытянули в высоту? Если я все правильно понял, то так делать немножко хорошо , там будут проблемы с текстурами (они сильно потянутся вверх и размажутся), придеться два раза читать текстуры в шейдере(если есть конечно ). А вообще, к самой модели пещеры можно приложить "сверху" небольшую окантовку (или бордюр). Представляет собой примерно сетку 8х8 (например) треугольников, в середине которой заранее смоделирован "переход" в пещеру (т.е. реальная окантовка будет меньше 8x8, по высоте не выравниваем). И далее когда нужно воткнуть пещеру в ландшафт, то убираем в нужном месте 8x8 тайлов и подсовываем туда нашу пещерку с "окантовкой". Окантовку выравниваем по высоте участка(реального ландшафта), который вырезали. От туда же берем текстурные координаты и делаем такой же маппинг. По высоте(около смоделированного перехода) можно по-разному равнять(можно проинтерполировать, чтобы очень плавные высоты перехода получилось, а для простоты можно взять "среднее арифметическое"), тогда грубых скачков при переходе не будет.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Четверг, 30 Декабря 2010, 15:06 |
|
| |
Tahoma | Дата: Четверг, 30 Декабря 2010, 14:42 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| Quote (ezhickovich) Попробуй использовать воксели для построения ландшафта... Кроме всего прочего это позволит создавать разрушаемые ландшафты... (да и вообще геометрия на вокселях потенциально разрушаема) Quote (Archido) А вообще, к самой модели пещеры можно приложить "сверху" небольшую окантовку (или бордюр). Представляет собой примерно сетку 8х8 (например) треугольников, в середине которой заранее смоделирован "переход" в пещеру (т.е. реальная окантовка будет меньше 8x8, по высоте не выравниваем). И далее когда нужно воткнуть пещеру в ландшафт, то убираем в нужном месте 8x8 тайлов и подсовываем туда нашу пещерку с "окантовкой". Окантовку выравниваем по высоте участка(реального ландшафта), который вырезали. От туда же берем текстурные координаты и делаем такой же маппинг. По высоте(около смоделированного перехода) можно по-разному равнять(можно проинтерполировать, чтобы очень плавные высоты перехода получилось, а для простоты можно взять "среднее арифметическое"), тогда грубых скачков при переходе не будет. Попробую оба варианта, отпишусь что получилось. Quote (Archido) В таких случаях обычно принято выкладывать скриншоты , гораздо лучше становится понятно проблему. Тут маленько сложнее. Сейчас на работе и ничего под рукой нет, чтобы заскринить. Как дома буду, проверю варианты и в случае чего приложу скрины. p.s.: ещё вопрос: если я ландшафт смоделирую в максе и сконверчу в Х, как это отразится на производительности? Чисто логически загрузка должна пройти быстрее, чем построение вершин из bmp.
Сообщение отредактировал Tahoma - Четверг, 30 Декабря 2010, 14:48 |
|
| |
Archido | Дата: Четверг, 30 Декабря 2010, 15:05 | Сообщение # 7 |
Сэнсэй
Сейчас нет на сайте
| Quote (Tahoma) ещё вопрос: если я ландшафт смоделирую в максе и сконверчу в Х, как это отразится на производительности? Чисто логически загрузка должна пройти быстрее, чем построение вершин из bmp. Ну чуток будет шустрее да, но не принципиально. С картой высот удобнее работать (если нормально редактора нет), имхо. Ландшафт со встроенными пещерами будет проще в реализации (сделал в максе, загрузил и не нарадуешься ), но возникнет немного других проблем: отсечение и лоды (когда до оптимайза доберешься).
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Четверг, 30 Декабря 2010, 15:54 |
|
| |
Tahoma | Дата: Пятница, 31 Декабря 2010, 13:47 | Сообщение # 8 |
был не раз
Сейчас нет на сайте
| Quote (Archido) Ландшафт со встроенными пещерами будет проще в реализации (сделал в максе, загрузил и не нарадуешься ), но возникнет немного других проблем: отсечение и лоды (когда до оптимайза доберешься). ну оптимизацию я сразу заложил. чем дальше "горка", тем меньше полигонов выводится. Конечно не до полного искажения, но пока без деревьев и прочего видно, что при приближении горка изменяется и выравнивается. надеюсь с другими элементами мира этого видно не будетДобавлено (31.12.2010, 13:47) --------------------------------------------- Скачал движек ryzom. То что мне хотелось там есть, по крайней мере на скринах. Сейчас буду ковырять, может что ещё интересного найдется
|
|
| |
Archido | Дата: Пятница, 31 Декабря 2010, 14:21 | Сообщение # 9 |
Сэнсэй
Сейчас нет на сайте
| Quote (Tahoma) ну оптимизацию я сразу заложил. чем дальше "горка", тем меньше полигонов выводится. Конечно не до полного искажения, но пока без деревьев и прочего видно, что при приближении горка изменяется и выравнивается. надеюсь с другими элементами мира этого видно не будет Мм, а каким образом сейчас реализован ландшафт и система LODов? Вкратце. Чтобы не было видно скачков при переключении лодов, можно морфить ландшафт в целом, под микроскопом будет видно плавное "перетекание" от одного уровня к другому, степень "заметность" будет зависить только от топологии ландшафта. Но нужен вершинный шейдер.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
|