|
|
|
Канал Игры Мечты: «Желающим внести вклад в проект!» |
|
|
<Катаманга>
|
|
Я думаю что надо немного потерпеть ... очень трудно помогать каждому персонально, следовательно раздел нужен, но нужно хорошенько подумать как его устроить.
Опять таки, такой раздел это полноценный коммунити, надобы чтоб этим всем еще кто нить и управлял ...
|
|
|
<AleLuk>
|
|
Насчет генерации ландшафтов.
Может кто помнит в давние времена в эру минимизации исполняемого кода программ - была такая программка в несколько сотен БАЙТ генерирующая довольно реалистичный ландшафт (Марса по-моему), так вот, все это шло на двойке очень резво (там вроде даже можно было самостоятельно передвигаться по этому ландшафту).
И если устройство планет и всей звездной системы будет зависеть от нескольких случайных величин, то я за это двумя руками.
Это же круто когда прилетая в новую звездную систему видишь что-то новенькое...
|
|
|
*Dron
139 EGP
  Репутация: 4 Сообщения: 210 Откуда: МО, Юбилейный Зарегистрирован: 24.05.2001
 |
|
Что-то не верится мне, что можно в несколько сотен байт уложить генерацию реалистичного ландшафта. Тем паче, то что казалось реалистичным в начале 90х сейчас и за мультик не сойдет
|
|
|
SparkS
1703 EGP
        Рейтинг канала: 1(3) Репутация: 350 Сообщения: 8585 Откуда: Киев, Украина. Зарегистрирован: 26.01.2002
 |
|
quote
Цитата: |
Может кто помнит в давние времена в эру минимизации исполняемого кода программ - была такая программка в несколько сотен БАЙТ генерирующая довольно реалистичный ландшафт (Марса по-моему),
|
Я помню такую прогу. Действительно я очень удивился тогда как можно впихнуть столько информации в такой обьём памяти. Хотя сейчас этот ландшафт смотрелся бы примитивно,но впечятления остались.
|
|
|
[=COM=]
90 EGP
 Репутация: 1 Сообщения: 194 Откуда: Санкт-Петербург Зарегистрирован: 09.02.2002
 |
|
Я тоже помню... Занимало все это 14Kb если не ошибаюсь.
Это при том что тогда всяких акселераторов еще не наблюдалось. А с текущим развитием 3D ускорителей да скоростью компов можно по тому-же принципу выстроить и более качественный ландшафт...
|
|
|
<sedoy>
|
|
угу, была такая прога mars.com
процедурно! генерила воксельный ландшафт (писано понятно на асме)
|
|
|
*Dron
139 EGP
  Репутация: 4 Сообщения: 210 Откуда: МО, Юбилейный Зарегистрирован: 24.05.2001
 |
|
Ну была...
Толку то, покажите програмку или хотя бы скрин ее работы
|
|
|
<VM>
|
|
MARS.ASM , a eshe est generator voxelnih peizazhei na standartnom algoritme - PLASMA.
chitat source ego na asme tiazhelo. Poroites v FIDO starih - tam polno takogo ili diski starie HACKER CD prosmotrite. A voobshe to u vseh nas internet est
Kstati, esli kakaia pomosh nuzhna po 3D phisiks-mathematiks in C++ --- mogu pomoch.
|
|
|
Alex Wild
475 EGP
    Репутация: 97 Сообщения: 1711 Откуда: Россия, Москва Зарегистрирован: 06.03.2002
 |
|
Толку с этой прогрмамки как с козла молока.
Ну сгенерила она ланшафт на ходу, дальше-то что? А дальше она про него и забыла.
Вот прикольно летать над горами, которые каждую секунду модифицируются...
|
|
|
[=COM=]
90 EGP
 Репутация: 1 Сообщения: 194 Откуда: Санкт-Петербург Зарегистрирован: 09.02.2002
 |
|
quote: Отправил: Alex Wild:
Толку с этой прогрмамки как с козла молока.
Ну сгенерила она ланшафт на ходу, дальше-то что? А дальше она про него и забыла.
Вот прикольно летать над горами, которые каждую секунду модифицируются...
Ну а кто сказал забыла...?
Видимо ты чей-то не понимаешь... Разговор о том что нужно на каждой планете делать свой ландшафт. Так вот один раз сделала и сохранила... Дальше если человек обратно на планету прилетит то она достает из файла ландшафт.
Тоесть человек видит планету он на ней еще не был. Подлетает к планете и генерируется ландшафт. Сохряняется в файл...
Только вот еще продумать нужно такую фишку.
Если планета пустынная к примеру то и ландшафт соответствовать должен.
[ 22-07-2002: Сообщение отредактировано: [=COM=] ]
|
|
|
<sedoy>
|
|
на самом деле все несколько проще
есть такое понятие seed
число, строка символов или цифробуквенный код на основе которого по специальному алгоритму (все дело какраз в нем) генерируется ПСЕВДО случайная последовательность данных (к примеру ланшафт)
причем данный алгоритм генерирует по одному и томуже seed'у одну и туже последовательность псевдослучайных данных. но от разных seed'ов получаются разные последовательности.
если брать например порядковый номер планеты (или что более разумнее классификатор планеты + порядковый номер) как seed для генератора ланшафта то данные по нему не надо будет хранить в долговременной памяти.
ты прилетаешь первый раз на планету ланшафт генерится. улетаешь данные стираются, прилетаешь через год заново генерится ТОТ ЖЕ ланшафт (ни классификатор ни номер планеты неизменны)
в данном случае достаточно хранить только изменения совершонные над ланшафтом даннойпланеты
к примеру в прошлый прилет игрок сбросил бомбу на эту планету, сохраняем только данные о разрушениях и при следующей генерации накладываем их на заново сгенеренный ланшафт - все
правда если хочется внести еще и сезонные и временнЫе изменения в ланшафт планеты то мона ввести в seed еще и текущее время, по крайней мере времена года сделать довольно просто (а вот разрушение ланшафта, эррозию и т.п. сделать довольно непросто
как бы вот
РЕМ по данному методу мона генерить не только ландшафты но много еще чего...
|
|
|
Alex Wild
475 EGP
    Репутация: 97 Сообщения: 1711 Откуда: Россия, Москва Зарегистрирован: 06.03.2002
 |
|
quote: Отправил: [=COM=]:
<...>
Ну а кто сказал забыла...?
Видимо ты чей-то не понимаешь...
Видимо ты сам чегой-то не понимаешь.
Речь шла о конкретной проге, а не том как ейные алгоритмы применяются на практике. А вот последнего-то никто и не описал. Только идеи, которые "может кто реализует".
|
|
|
N0
145 EGP
  Репутация: 7 Сообщения: 509 Откуда: Санкт-Петербург Зарегистрирован: 01.07.2002
 |
|
quote: Отправил: <sedoy>:
на самом деле все несколько проще
Я видел только MARS и еще программку под названием VistaPro (тоже, кстати небольшая и древняя). Так вот в это Viste все так и происходило seed -> карта -> расчет причиндалов (облачка там, деревья...) -> картинка. Тока ту картинку она больно медленно рисовала(правда даже с моими скудными знаниями я видел, что процесс можно значительно ускорить). Во если бы так вот, да только побыстрее... Можно ли?
|
|
|
Katamanga
|
|
Чтож, подвиду итог. Все упомянутые в сабже проги не могут быть использованы по двум причинам, первое - они генерят небольшой участок поверхности, следовательно вся планета будет жутко однообразной. Во вторых, по той же причине что каждый квадратный километр генерится на лету нет никакой возможности распологать на планете какие либо объекты.
Теперь вернемся к фракталам, все перечисленные проги используют фрактальные расчеты для построения ландшафта небольшого участка, нам же необходимо сгенерить ландшафт для целой планеты! Не детальный, а общий ... детальными будут только посещаемые участки.
|
|
|
<sedoy>
|
|
2Katamanga
угу, ну итоги по программам, старым, в принципе верны.
но сами алгоритмы генерации толком не расковырен ИМХО
если бы надо было создать ланшафты для нескольких планет (нескольких десятков) тогда я бы сделал для них базовые карты высот/текстур и выбрал алгоритм генерации уровня детализации (ИМХО результат был-бы неплохой с учетом предсказуемости ланшафта, для расстановки построек, динамическим LOD и небольшии затратими долговременной памяти)
но у вас речь, на скока я врубаюсь, идет какраз не о нескольких планетах а о возм. многих миллионах
тут естественно придется бОльшую часть (кроме самых важных) генерить полностью "на лету" (речь естественно о ландшафте)
а раз так то ни о какой расстановке заранее зданий по поверхности не может быть и речи (пока не сгенеришь не увидишь куда ставить а все генерить чтоб проверить куда ставить - замучаешся)
поэтому кроме генерации чисто ланшафта нужен генератор инфраструктуры планетарных поселений/построек (если их ваще делать)
если обдумывать генерацию ланшафтов планет я думаю надо начинать с начала.
т.е. определится со всеми возможными типами поверхностей планет и ввести соответствующие параметры (типа % воды/суши, температура с сезонными изменениями, возраст планеты, класс биосферы, наличии атмосферы и т.п.)
для получения по всей планете более менее реалистичного ланшафта придется учитывать кол-во получаемой солнечной энергии наклонение орбиты геологическую активность и т.п.
для получения бесшовного ланшафта на поверхности сферы либо придется генерить в прямоугольной системе координат с учетом коэффициентов кривизны либо сразу в полярной системе координат (тока тут надо еще провести исследования ИМХО потому как энтого я еще не пробовал
типа вот.
но всеже для начала хорошоб чтобы вы дали список параметров планет готорые должны учитыватся в генерилке
пасибо за внимание
|
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Эта програмка действительно не запоминала того, что рисовала. Прорисовка шла только в пределах видимости.Если пройти секунду вперед, а затем вернуться на секунду назад, ланшафт будет разным. Толку с такой программы ровно 0 целых 0 десятых.
Сохранять то, что она моделит - толку еще меньше. Хотя бы потому, что одна планета будет занимать в памяти метров 500.
Вот другой вариант.
Для каждой планеты, при её посещении, генерится текстура поверхности, с небольшим разрешением. По мере приближения к поверхности, на основе данной текстуры генерятся всё более детализированные текстуры. Это можно назвать вариантом фрактализации, но в отличии от классического множества Мандельборта, алгоритм можно построить не не "убегании в бесконечность", которое действительно жрет ресурсы от пуза, а на более простых методах - например 5 новых точек (0) строятся на основе корреляции 4 существующих (х)
хх
хх
->
х0х
000
х0х
Таким образом получаем новую текстуру для данного приближения к планете, которая в полтора раза четче исходной, причем может быть повторена при последующих посещениях, при этом саму текстуру хранить ненужно - она высчитывается на ходу с минимальными затратами времени. Следующим этапом, берем уже новую текстуру и применяем алгоритм уже к ней. И так до бесконечности. Объем хранения - только базовая текстура (+ алгоритм, а он один для всех планет)
[ 24-07-2002: Сообщение отредактировано: Shirson ]
|
|
|
<sedoy>
|
|
вот вот, именно про это я и писал
для расчета промежуточных точек нужен псевдо случайный алгоритм (иначе каждый раз получим разные промежуточные точки) а расчет идет на основе seed алгоритма для которого исходными (для детализации битмапа) являются эти самые 4 опорных точки. только получается разрешение не в 1.5 раза а ровно в 2 раза больше
2Shirson
я так понял ты над этим работал.
детализирвать карту довольно просто, а вот как генерить карту континентов гор на сферической карте - есть мысли ?!
приятно встречать толковых людей !
ведь нас так мало .....
|
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
quote: Отправил: <sedoy>:
вот вот, именно про это я и писал
для расчета промежуточных точек нужен псевдо случайный алгоритм (иначе каждый раз получим разные промежуточные точки) а расчет идет на основе seed алгоритма для которого исходными (для детализации битмапа) являются эти самые 4 опорных точки. только получается разрешение не в 1.5 раза а ровно в 2 раза больше
В полтора раза четче А вот больше, раз на то пошло, не ровно в два, а ровно в 2*N-1 Кроме того, больше или нет - вопрос тот еще. Не обязательно же всю карту алгоритмить, достаточно только часть, видимую с корабля. А чем он ближе к планете, тем меньше кусок карты можно обсчитывать.
quote:
2Shirson
я так понял ты над этим работал.
детализирвать карту довольно просто, а вот как генерить карту континентов гор на сферической карте - есть мысли ?!
Мысли были, когда свой Лунолет писал. Там мне требовалось сделать рельефную карту Луны (не обязательно реалистичную.) Правда прога была не 3D и решал я это в векторном виде...
Вобщем мысли такие. Можно поступить классически - на битмапе генерится карта, затем, в соответствии с тем, что она натягивается на сферу, в неё вносятся деформации изображения и полученный результат натягивается на сферу. Это несколько... ресурсоемко.
Можно сразу рисовать карту с деформациями, но хрен редьки не слаще, хотя как стартовый вариант логичнее всего.
Не знаю, поддерживает ли ваш движек мультитекстурирование, но если поддерживает, можно поступить так: Карта делится на две (например по полушариям) и натягивается с двух сторон на сферу. Тут и искажения поменьше и каКчество повыше. Таким методом раскрашивались персонажи в кваке - текстура спереди и текстура сзади. В случае со сферой намного проще, потому что деформации изображения нужно делать для круга, а не сложной фигуры.
quote:
приятно встречать толковых людей !
ведь нас так мало .....
Спасибо. От скромности мы не помрем
[ 24-07-2002: Сообщение отредактировано: Shirson ]
|
|
|
*Dron
139 EGP
  Репутация: 4 Сообщения: 210 Откуда: МО, Юбилейный Зарегистрирован: 24.05.2001
 |
|
Одними тестурами не обойдешься. Они хорошо выглядят только когда планета занимает не более трети площади экрана. Далее уже необходимо генерить геометрию. Здесь тоже не все так просто. Для большого филрейта вертексы должна хранится в видеопамяти и по возможности не менятся. Перегрузка геометрии на каждом кадре приведет к огромному падению фпс.
|
|
|
<sedoy>
|
|
2Shirson
ладно уговорил черт красноречивый пусть будет 1,5 и n*2-1 (хотя как считать
не суть.
их движек должен поддерживать мультитекстуринг, но используя 2 текстуры возникают траблы со стыковкой оных.
2Dron
во первых. ланшафт битмапный можно использовать основой для воксельного енжина (битмап не обязательно считать только текстурой - это может быть и карта высот)
а если делать через полигональный энж.
то тут я думаю алгоритмы динамик LoD или ROAM (кстати исп. последний у меня друг написал дему которая выдает при 7500 полигонов более 48 фпс на ГеФорсе 3 200 это причем без вертексных и пиксельных шейдеров и без нормальной оптимизации кода, так что ИМХО резерв есть)
|
|
|
|
|
|
Канал Игры Мечты: «Желающим внести вклад в проект!» |
|