|
|
|
Канал Игры Мечты: «need Генератор 2D/3D галактики (алгоритм/формула)» |
|
|
SMax
111 EGP
  Репутация: 16 Сообщения: 957 Откуда: ХМАО, Сургут Зарегистрирован: 02.07.2001
 |
|
Пилоты!
Нужен алгоритм/формула для генерации реальных 3D спиралевидных, эллиптических и т.д. галактик.
Но для начала хотя бы спиральной 2D.
Решение генерации эллиптической формы галактики я ещё как-то понимаю, а со спиральной мысль отсутствует. Поиск в инете результата не дает.
Если есть у кого формулка или кусок кода, киньте плиз.
|
|
|
Vic3Dexe
685 EGP
   Репутация: 148 Сообщения: 2264 Откуда: Kiev Зарегистрирован: 23.03.2004
 |
|
Не понял, уравнение спирали надо, или что?
_________________ I'll be back... (c) |
|
|
SMax
111 EGP
  Репутация: 16 Сообщения: 957 Откуда: ХМАО, Сургут Зарегистрирован: 02.07.2001
 |
|
Тоже вариант, но звёзды не прям по линии спиралей находятся. Короче внешне должно напоминать спиралевидную галактику, примерно как тут http://www.astroweb.ru/fotogal_/nasa_big/1009.jpg
_________________ Для войны нужно три вещи: Деньги, деньги и ещё раз деньги! |
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
действительно, обеднела сеть работающими ссылками, вот только более-менее по замечательным кривым
http://www.exponenta.ru/soft/others/stud1/main.asp
_________________ This is what you get ...
(c) Radiohead |
|
|
SMax
111 EGP
  Репутация: 16 Сообщения: 957 Откуда: ХМАО, Сургут Зарегистрирован: 02.07.2001
 |
|
Спасибо, это уже ближе к практической стороне вопроса.
Может всё-таки есть какая-нибудь готовая формула именно для генерации галактики? Т.е. входными значениями является размер, конфигурация галактики и число звезд, а на выходе координаты звёзд.
|
|
|
Пассажир
|
|
Код: |
float Gaussian() {
// polar method of G. E. P. Box, M. E. Muller, and G. Marsaglia
// See Knuth, ACP, Section 3.4.1 Algorithm C.
static BOOL bNext = FALSE;
static float next = 0;
if ( bNext ) { bNext = FALSE; return next; }
float v1, v2, s;
do {
v1 = ufrand2(); // between -1 and 1
v2 = ufrand2(); // between -1 and 1
s = v1 * v1 + v2 * v2;
} while ( s >= 1 || s == 0 );
float multiplier = sqrtf( -2.f * logf(s) / s );
next = v2 * multiplier;
bNext = TRUE;
return v1 * multiplier;
}
void SpiralGalaxy()
{
for_i( nStars ) {
ObjStar* obj = new Star;
float ang = (Gaussian()+.5f) * Pi;
float dist = expf( ang * .247f ) * 1000000000; // спираль
if ( urand(2) ) ang += Pi; // второй рукав ( rand(2) возвращает 0 либо 1 )
obj->pos.x = sinf(ang)*dist;
obj->pos.z = cosf(ang)*dist;
obj->pos += UVEC( Gaussian(), Gaussian(), Gaussian() ) * 200000000; // разброс
AddObj( obj );
}
}
|
вот, сам на днях писал, коэфициенты подберешь
|
|
|
Пассажир
|
|
да, забыл
ufrand2() возвращает флоат ( -1 .. 1 )
inline float ufrand2() { return ((float)rand() / (RAND_MAX+1))*2-1; }
|
|
|
nomand
460 EGP
    Репутация: 158 Сообщения: 1128 Откуда: Новая Зеландия Зарегистрирован: 17.01.2005
 |
|
не знаю о чем здесь говорится, но есть 2D генератор галактик с возможностью 3D preview.Univerce image creator
_________________ i, nomand |
|
|
Пассажир
|
|
ВАриантов создания 3D спиральной галактики - вагон... Я тут сваял класс, который генерит галактику (неск. сотен звезд), к каждой звезде - планетную систему (до 6 планет, до 2 спутников у каждой). Если интересно (класс на Delphi 5.0) могу на что-нить поменяться - сам игру пишу, так что кое-что мне треба...
|
|
|
L'osheg
1080 EGP
    Рейтинг канала: 1(6) Репутация: 227 Сообщения: 6068 Предупреждений: 1 Откуда: Texasкие мы... Зарегистрирован: 25.04.2003
 |
|
Астероидные пояса? Классы планет? Или все как в Паркане - обитабельные? Двойные звёзды? Беспланетные системы? Посадка на планеты? Метод генерации ландшафта?
ПС: Галактика это несколько более чем 500 звёзд... 500 звёзд это "мелкое локальное скопление в радиусе 150-200 св. лет."
_________________ Тооолстый тролль с нулевой кривизной дна |
|
|
Krom
455 EGP
   Рейтинг канала: 1(3) Репутация: 159 Сообщения: 1988 Откуда: Горы Урала Зарегистрирован: 19.07.2005
 |
|
Алгоритм можно простенький двухпроходный:
1) Сначала генерим расходящиеся от корреляционного центра лучи с любым наперёд заданным профилем плотности (только сферическую составляющую тут не надо добавлять),
2) Затем переводим полярную систему координат в спиральную - это та же полярная, но вводится зависимость угла от расстояния (а вот после можно и балдж присобачить, и шаровые скопления, если охота)
Ну и третий шаг - всё это в декартову систему. Сложность всё равно линейная. А сколько звёзд и прочего добра хочется?
_________________ Не спешите меня. |
|
|
Пассажир
|
|
Ну что ж значится - по вопросам:
Минимальный размер "скопления" - 100 звезд, максимальный неограничен, но кратен 100.
Планетные системы - генерятся случайным образом, могут быть и вообще без планет (одна звезда любого из 7 типов (можно привести даже к классическому ряду спектров и величин)), а также содержать набор до 6 планет с 0-2 спутниками. Планеты 15 типов, по три варианта изображения каждого. В классе планет имеются поля для: массы, радиуса орбиты, диаметра планеты, периода обращения, наличия атмосферы, названия .
Астероидные пояса - наличие в системе заложено, визуальное представление создается другим модулем, который у меня за туманности отвечает.
Посадок на планеты не предусматривал (мне они не требуются), хотя в классе планетных систем имеется ыункция определения расстояния до планеты, а также коррекция ее визуального отображения.
В конце концов - я не собирался моделировать произвольную планетную систему с соблюдением всех законов физики. Мне оно не надо.
Вроде на все вопросы ответил?
|
|
|
Crimson
560 EGP
    Рейтинг канала: 4(83) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
В принципе для игры и пятисот звезд хватит выше крыши. Но пытаться сделать из них галактику - все-таки несерьезно. Смотреться будет примерно как планета, которая в два раза больше корабля.
|
|
|
Пассажир
|
|
Прежде чем что-либо заявлять, сходил бы ты, парень, на мой сайт adm.trening-omsk.ru, да посмотрел, как выглядит на скриншотах спиральная (4-ре рукава) галактика, всего навсего из 200 звезд. А уж какой она будет из 500... (а это ксати - не предел). Причем плотность расположения - регулируемая. Да и вообще - реально ли облазить 500 звездных систем, если среднее кол-во (при учете пустых и частично заполненных систем, спутников и т.д.) планет в системе - около 3-х? Это ж где-то 1500 планет, Не подумал ли ты, во-первых, как это все будет машина обрабатывать (с твоими-то запросами к реализму), да еще и куда их тебе столько?
|
|
|
Crimson
560 EGP
    Рейтинг канала: 4(83) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
Товарищ, ты бы как-нибудь полегче на оборотах... без обид
На сайте я был. То, что на скринах - это не галактика, это пародия на нее. Это примерно как назвать пустыней песочницу. Галактика это миллионы звезд, размазанные по блину в десятки килопарсек. Подозреваю, что игрок из Солнечной до ближайшего края рукава будет даже на гиперсвете ползти несколько лет реального времени.
Вообще, при желании галактику реальных размеров думаю можно как-нибудь замутить на каких-нибудь фракталах или хитроподвывернутых полиномах, с системой понижения детализации при зуме. Но смысла не вижу. Я бы сделал просто большой кусок плоской карты (вид сверху), с более-менее равномерным распределением звезд. Тем более, что плоскую карту гораздо удобнее использовать.
Звезд тоже все-таки желательно побольше, хотя бы пять тысяч. Да, я в курсе, что из них игрок облазит от силы процентов десять, ну так его никто и не заставляет побывать около каждой планеты. Зато по крайней мере у него будет ощущение что он в космосе, а не в аквариуме. Чем они будут нагружать машину - если честно не представляю (если только ты не планируешь рисовать их на карте все сразу, причем в 3D, с вращенем и с бликами от каждой звезды). Ту карту, что ты наворотил - можно использовать как карту системы, но не галактики.
|
|
|
Пассажир
|
|
Извиняюсь, за повороты...
Насчет, чем грузить - в принципе, начать с того что памяти при твоем реалистичном подходе кушать 5000 звезд будут солидно. Опять же - как-то наталкивался я на такую тему - точность представления расстояний при таковых масштабах... Ну и не вижу смысла делать 5000 звезд, если игрок реально сможет доползти только до 50-ти...
Да и вообще - есть такое правило, коли видишь недостатки в чужой работе - предложи свою реализацию, в которой данные недостатки будут устранены. Вот тогда это будет конструктивная критика, а не просто попытка опустить.
Да и вообще не встречал я в игровых проектах галактик хотяб в 1000 звездных систем.
А что касательно того что ты бы сделал "плоскую карту с равномерным распределением звезд", то я же все-таки не ты, и мне для моего проекта нужна именно 3D, с таким рапределением звезд. Хотя я могу в любой момент сделать галактику и с 2-мя, 3-мя, вообще произвольным кол-вом рукавов (для этого достаточно в вызове функции поменять параметр), а могу вообще сделать 3D скопление, туманность и что угодно...
|
|
|
Krom
455 EGP
   Рейтинг канала: 1(3) Репутация: 159 Сообщения: 1988 Откуда: Горы Урала Зарегистрирован: 19.07.2005
 |
|
Fosgen : |
Насчет, чем грузить - в принципе, начать с того что памяти при твоем реалистичном подходе кушать 5000 звезд будут солидно.
|
А вот об этом речи не шло. Предлагалось только сгенерить карту.
Но если сворачиваем в это русло, объясняй, что там такого происходит, в этих системах, что десятикратное увеличение их количества критично. И чегой-то ты вопрос SMax'а перехватил?
Fosgen : |
Да и вообще не встречал я в игровых проектах галактик хотя б в 1000 звездных систем.
|
Elite 3: Frontier - First Encounter. Гораздо больше тысячи систем, хотя насчёт их синхронной обработки есть большие сомнения.
Fosgen : |
Да и вообще - есть такое правило, коли видишь недостатки в чужой работе - предложи свою реализацию, в которой данные недостатки будут устранены. Вот тогда это будет конструктивная критика, а не просто попытка опустить.
|
Критика не обязана быть конструктивной, а только лишь тактичной В этом случае то, как поступить с выявленными недочётами - только твоё дело. Обижаться на критику нельзя в любом случае.
_________________ Не спешите меня. |
|
|
Пассажир
|
|
господин Krom
Во-первых, если повнимательнее посмотреть на ветку, то можно увидеть, как народ задает вопросы о посадках на планеты и генерации ланшафта. А вообще, если для каждой из 5000 звездных систем рассчитывать положения планет в реальном времени, да еще и их вращение вокруг оси, да со спутниками, про генерацию соответствующих ланшаншафтов я в данном случае просто не буду упоминать... А вопроса я не перехватывал. Опять же если присмотреться повнимательнее можно обнаружить что я предложил к обмену свой класс, в котором реализован вопрос SMax'а. А уж почему взялись проверять на реалистичность мою реализацию - надо не у меня спрашивать.
Да помню такую вещь - Frontier первый и First Encounters от Брабена. Только там нагрузка осоновных сцен была не фонтан, да и системы не очень-то реалистично менялись (хотя вроде как имели приближенные к реальным масштабы). Так что пример - не совсем корректный. Он не проходит по вышеуказанным (не мною) критериям.
А по поводу критики...
Тра-та-та-та-та, та-та-та, та-та, та-та, та-та...
Обсуждаем недостатки подхода к критике исключительно приватом и между собой - это было последнее китайское. Остальные попытки наехать буром на кого-то буду резать стрАшно и с последствиями. Надеюсь, рецидивов не повторится. Если есть вопросы лично ко мне - тоже в приват. Точка.
отсустрированно NRG
|
|
|
Krom
455 EGP
   Рейтинг канала: 1(3) Репутация: 159 Сообщения: 1988 Откуда: Горы Урала Зарегистрирован: 19.07.2005
 |
|
Fosgen:
Гхм, как говорят буйволы... И чего я такого сказал, чтобы вызвать такую реакцию? Но если мы собираемся учить друг друга читать, то обращаю ваше внимание на следующие два пункта:
1) Вопрос, заданный SMax, не задевал проблем обработки карты галактики в real-time.
2) В ответ на вопрос о параметрах галактики вы навязали обсуждению свои значения, хотя он был задан не вам.
Одним словом, вы начали обсуждать ваше творчество, а не вопрос автора топика. Это называется оффтоп и карается модераторами.
Впрочем, раз автор темы не высказывает никаких дополнительных пожеланий, значит, он получил исчерпывающий ответ на свои вопросы. Наверное, можно уже прикрывать лавочку, как думаете?
_________________ Не спешите меня. |
|
|
NRG
2525 EGP
        Рейтинг канала: 3(32) Репутация: 435 Сообщения: 10010 Откуда: Odessa, Ukraine Зарегистрирован: 07.02.2001
 |
|
полность поддерживаю
Closed
_________________ Единица измерения равнодушия - один хер. |
|
|
|
|
|
Канал Игры Мечты: «need Генератор 2D/3D галактики (алгоритм/формула)» |
|