forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   случайный генератор террейнов (http://forum.boolean.name/showthread.php?t=1727)

Horror 17.10.2006 11:12

случайный генератор террейнов
 
Всем привет ! и у меня снова вопрос: мне надо сделать террейн который создается в случайном порядке при загрузки уровня
(в принципе это не так сложно)
но проблема другая у меняж там домики-городок а если генерровать случайно то все скроется частями в землю(можно конечно ставить домики по У,но не очень удобно ибо у меня все домики в одном файле) и у меня появилась идея что под город загрузит свой небольшой терреин , но вот как случайный генерируемый ланшафт соединить с этим ровненько ??


зарание спасибо! если есть идеи лучше-буду рад)

А ну да вы спросите зачем?? ну я делаю небольшую игрушку(фривере или шаревере) ну ведь будет не интересно играть если местность всегда одинаковая, на 5 раз точно надоест а так еще 5 раз побегать мона

magpro 17.10.2006 11:20

Re: случайный генератор террейнов
 
А ты сделай всётаки каждый домик в отдельных файлах и потом при загрузке уровня делай чтобы они были в небесах(тока чтобы их не было видно) и потом резко спускай вниз до коллизии с территорией. И всё вроде. так твои домики будут постоянно на земле а не под землёй или над.

moka 17.10.2006 17:39

Re: случайный генератор террейнов
 
Генерировать, лучше путём картинки, тоесть генерировать картинку (HeightMap), В интере\нете можешь найти про это. Чтото я слыша про Шум Перлина, то там математика и Алгоритмика ОхО! Так что поищи в нете, а затем загружаешь террайн стандартной командой блица LoadTerrain. И есть команда TerrainY(x,z), Она тебе поможет. Крч делаешь домики отдельными файлами, а затем ставишь их:
Domik1=LoadMesh("Файл Домика")
x#=Место по х на карте.
z#=Место по z на карте.
PositionEntity Domik1,x,TerrainY(x,z),z

Вот и всё, они у тебя будут точно по террайну, да и на заметку, центр Мэша (в твоём случае домика), задаётся в редакторе, и ставиться домик на террайн будет этим центром.

Надеюсь помог.

Horror 17.10.2006 22:23

Re: случайный генератор террейнов
 
magpro не в моем случае не неполучится , потому что 1) тот террейн который под городом он с дорогой и с нужной текстурой, а так получится (к примеру ) дорога на горе и не красиво будет 2)домики имеют центр, а если упадет он так что часть будет на горе а часть навесу и будет не красива))
MoKa такой способ тоже не покатит и сколько мне карт высот нарисовать чтоб все время рандомом показавылся ланшафт??но видимо придется так делать если др способа не найду!
Всем спасибо))

ЛысыЙ_Чук-Иванчук 18.10.2006 08:48

Re: случайный генератор террейнов
 
Делай в максе.

untonee 18.10.2006 14:50

Re: случайный генератор террейнов
 
Цитата:

Сообщение от Horror
magpro не в моем случае не неполучится , потому что 1) тот террейн который под городом он с дорогой и с нужной текстурой, а так получится (к примеру ) дорога на горе и не красиво будет 2)домики имеют центр, а если упадет он так что часть будет на горе а часть навесу и будет не красива))
MoKa такой способ тоже не покатит и сколько мне карт высот нарисовать чтоб все время рандомом показавылся ланшафт??но видимо придется так делать если др способа не найду!
Всем спасибо))

1) Есть простая возможность генерации случайных ланшафтов - Шум Перлина, алгоритм описан в инете очень подробно, имеются исходники на С и С++ точно находил... Если что могу помочь, ничего сложно там нет....

2) Как быть с тем, что бы твоя сцена с домиками не потеряла привлекательность:
- на созданную карту высот накладывай блендингом овал, или еще что нибудь по форме твоего города(т.е. карту высот для твоего города, с гладким переходом на краях), т.о. у тебя получится ровная поверхность, или такая какая тебе нужна) и тогда твои города могут находиться где угодно целой сценой, как ты и хотел... :ok:
Что бы разобраться о чем я говорю досконально почитай про генерацию ланшафтов шумом Перлина. 8)

Horror 18.10.2006 19:20

Re: случайный генератор террейнов
 
untonee Спасибо! буду рад если поможешь!)
2) я совсем начинающй)) и поэтому не знаю что есть блендинг)) а могу ли я просто сделать террейн и на него поставить город а после поставить все на случайно сгенерируюмую поверхность

untonee 19.10.2006 14:51

Re: случайный генератор террейнов
 
Вложений: 2
Цитата:

Сообщение от Horror
untonee Спасибо! буду рад если поможешь!)
2) я совсем начинающй)) и поэтому не знаю что есть блендинг)) а могу ли я просто сделать террейн и на него поставить город а после поставить все на случайно сгенерируюмую поверхность

Если ты совсем новичок, тогда за Шум Перлина не берись, сделай проще:
В Photoshop'e создай несколько карт высот, что-то типа этого:
Вложение 1995
Карта высот - это как правило (в самом простом трактовании) черно-белое изображение, которое описывает высоту каждой выршины 3-х мерного объекта. Обычно это квадратное изображение, размер стороны которого кратен степени 2 (32, 64, 128, 256, 512 итп).
В нашем случае это черно-белдая картинка 256х256 пикселе, с помощью которой мы создадим нужный нам террай.
Дальше продолжу попозже...



(Почитай: http://www.lki.ru/text.php?id=726)

Horror 19.10.2006 21:40

Re: случайный генератор террейнов
 
untonee не ну конечно что такое карта высот я знаю(узнал наверно в первый день) а уже какникак блидзом месяц занимаюсь))
ну как я говорил выше мне нужен случаино-ген террейн ну раз мне рано еще позже разбтрусь)
а вот вопросик: там (в статье) есть такая тема наз Матрица высот могу ли я таким же путем сделать террейн??(ну там же прогают в другой среде)
типо
11111111
12100121
11100111
11000011
11100111
12100121
11111111
0-ровная поверхность
1-маленькая горка
2-побольше...
где ноль там и будет город))
и сделать случайную генерацию чисел АА получится??

MiXaeL 19.10.2006 22:46

Re: случайный генератор террейнов
 
Конечно можешь.Через ModifyTerrain, только не факт,что всегда будет оставаться ровное место для домов (если делать Rnd), это надо как-то предусмотреть :dontknow: ...

untonee 20.10.2006 15:38

Re: случайный генератор террейнов
 
Вложений: 2
Продолжение:
Теорию опустим....
Вообщем рекомендую тебе следующее наделай в Photoshop'e по-больше ландшафтов.
Я написал тебе пример который позволяет в любое место терайна разместить твой город, деревню или что угодно.

Итого получается:
  1. Почти случайные ланшафты(заранее прориосванные карты высот);:dontknow:
  2. И реально случаное размещение городов на ландшафте! 8-):super:
В коде найдешь все что тебе надо!
Поясню, когда запустишь, жми SPACE, увидишь как изменяется земля под деревню, работает вот этот код(он то тебя и интересует):
If KeyDown(57) Then
For BlurForce=1 To 5 ;BlurForce
For x=16+BlurForce To 148-BlurForce - размер размещаемой локации
For z=16+BlurForce To 148-BlurForce - рзам
sum#=TerrainHeight(terrain,x-1,z-1)
sum#=sum#+TerrainHeight(terrain,x,z-1)
sum#=sum#+TerrainHeight(terrain,x+1,z-1)
sum#=sum#+TerrainHeight(terrain,x-1,z)
sum#=sum#+TerrainHeight(terrain,x,z)
sum#=sum#+TerrainHeight(terrain,x+1,z)
sum#=sum#+TerrainHeight(terrain,x-1,z+1)
sum#=sum#+TerrainHeight(terrain,x,z+1)
sum#=sum#+TerrainHeight(terrain,x+1,z+1)
sum#=sum#/9;
ModifyTerrain terrain,x,z,sum
Next
Next
Next

Обычный алгоритм сглаживания(blur)
Надеюсь помог... :@ Если что говори, еще помогу!:ok:

Horror 20.10.2006 18:38

Re: случайный генератор террейнов
 
untonee - оо огромное спасибо -классный пример, надеюсь разберусь)

untonee 20.10.2006 19:07

Re: случайный генератор террейнов
 
Цитата:

Сообщение от Horror
untonee - оо огромное спасибо -классный пример, надеюсь разберусь)

Спасибо. Если что пиши... Рад помочь буду!


Часовой пояс GMT +4, время: 14:35.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot