ENG Новый сайт

Расширенный поиск

[ Новые сообщения · Пользователи · Правила ]
Страница 38 из 42«1236373839404142»
Форум » SpaceEngine » Обратная связь и предложения » Еще немного идей и предложений (То, чего нам бы хотелось в будущем увидеть в SE)
Еще немного идей и предложений
ABetcДата: Суббота, 30.07.2016, 18:09 | Сообщение # 556
Космический турист
Группа: Пользователи
Российская Федерация
Сообщений: 36
Награды: 0
Статус: Offline
На тему генерации волокон и скоплений галактик.

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

А волокна - это окраины мембран, которые в свою очередь есть границы пузырей. Очевидно, с пониженной плотностью галактик, вплоть до полного отсутствия.

Т.е. если сортировать по возрастанию плотности галактик:
1. Пузыри (полости, каверны, как угодно)
2. Мембраны на границах полостей
3. Границы мембран - волокна.

Очевидно, что скопления - это области, где сходятся несколько волокон. А значит, скопления граничат с максимальным количеством пустот по сравнению с точками волокон.
Подавить вероятность генерации в трёхмерных полостях. Решаема ли задача?
По идее, да.

Существует такая тема, как диаграмма Вороного. Можно её перенести на 3D.

Также в помощь барицентрические координаты, докрученные до 3D. Там как раз можно вводить случайные веса точек. И тогда вес точки будет мерой величины пустоты (а сами точки - лежат внутри пустот, но не являются центрами насколько известно). И тогда плотность генерации можно определить как произведение барицентрических координат внутри тетраэдра (с какими-нибудь поправками для реалистичности, типа (вес+поправка)^степень). Протестирую на 2D и покажу попозже, как это могло бы выглядеть.

Ещё есть любопытные механизмы тут: URL. Легко ли их генерировать на лету - вопрос.

См. также триангуляцию Делоне. Алгоритм очень простой, а даёт тот же результат, что и диаграмма Вороного. И исключает тонкие и узкие полости, кроме как на краю Вселенной. smile


Кольца планет - это диски, на которые предыдущие цивилизации записали всю свою историю и как они довели планету до такого состояния...))

Сообщение отредактировал ABetc - Воскресенье, 31.07.2016, 00:49
ABetcДата: Суббота, 30.07.2016, 18:12 | Сообщение # 557
Космический турист
Группа: Пользователи
Российская Федерация
Сообщений: 36
Награды: 0
Статус: Offline
Цитата SpaceEngineer ()
Да это всё понятно, но с программной точки зрения всё обстоит по-другому. Планеты в системе знают только о звёздах и других планетах в системе. Чтобы добавить внешние источники, надо их для начала найти, а это означает генерацию тысяч объектов вокруг данной системы при её создании.

Но ведь откуда-то движок знает, какие звёзды нарисовать на небе? Причём берёт самые яркие, а не по расстоянию. И делает это быстро. Почему бы не воспользоваться как раз этими данными?


Кольца планет - это диски, на которые предыдущие цивилизации записали всю свою историю и как они довели планету до такого состояния...))
ABetcДата: Суббота, 30.07.2016, 19:48 | Сообщение # 558
Космический турист
Группа: Пользователи
Российская Федерация
Сообщений: 36
Награды: 0
Статус: Offline
Либо проще. Расставляем точки скоплений и их веса. На линиях, соединяющих соседние точки (ну тут можно поиграться), генерим галактики. Всё. Тем более что скопления уже известны некоторые. Тоже покажу моделирование потом.

Кольца планет - это диски, на которые предыдущие цивилизации записали всю свою историю и как они довели планету до такого состояния...))
ABetcДата: Суббота, 30.07.2016, 21:43 | Сообщение # 559
Космический турист
Группа: Пользователи
Российская Федерация
Сообщений: 36
Награды: 0
Статус: Offline
Возникла идея.
Интересна для тех, кто предпочитает, найдя интересную планету, "обживаться" на ней.

Рисовалка созвездий.

2 режима, которые могут работать одновременно.
1. Соединять линиями звёзды
2. Очерчивать границы созвездий.
Как известно, сейчас принято границы созвездий составлять из линий 2 видов: постоянного восхождения и постоянного склонения. Вполне подходящий вариант. Карта созвездий сохранялась бы как личная настройка с возможностью импорта/экспорта.
3. Ну и названия давать, включая греческие обозначения smile Что же касается рисунков, лично мне это не очень интересно, но наверное кому-то тоже понравилось бы :)

Видимо, в рисовалке должен быть запрет на компоненты своей кратной системы.


Кольца планет - это диски, на которые предыдущие цивилизации записали всю свою историю и как они довели планету до такого состояния...))
ABetcДата: Суббота, 30.07.2016, 23:34 | Сообщение # 560
Космический турист
Группа: Пользователи
Российская Федерация
Сообщений: 36
Награды: 0
Статус: Offline
Цитата SpaceEngineer ()
Ещё, ненаправленные источники освещения сделать непросто - надо реализовывать хитрые модели

Обнаружил в настройках параметр "подсветка". В принципе, можно было бы использовать его. До величин 0.02 хотя бы.


Кольца планет - это диски, на которые предыдущие цивилизации записали всю свою историю и как они довели планету до такого состояния...))
SpaceEngineerДата: Воскресенье, 31.07.2016, 00:46 | Сообщение # 561
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 54
Статус: Offline
Цитата ABetc ()
Подавить вероятность генерации в трёхмерных полостях. Решаема ли задача?
По идее, да.
Существует такая тема, как диаграмма Вороного. Можно её перенести на 3D.

Оно так и работает сейчас в SE. Проблема - подобрать более-менее реалистичную фрактальную функцию (функцию, в которой участвует тот самый вороной). Если зашкаливать коэффициенты плотности, чтобы волокна были более узкие, то это оверкилл: 99,9% сгереренных точек попадут в полости и не дадут галактик, а процессорное время уже сожрано. Ведь самая тяжелая функция - фрактал от вороного - вызывается для всех точек. Как иначе узнать, попала точка в полость или в волокно?

Цитата ABetc ()
Но ведь откуда-то движок знает, какие звёзды нарисовать на небе? Причём берёт самые яркие, а не по расстоянию. И делает это быстро. Почему бы не воспользоваться как раз этими данными?

Для этого нет механизма в движке. Надо добавлять какой-то буфер или кэш объектов окружения. Потом его ещё и сортировать, чтобы выбрать самые яркие. Опять же, все равно будет ограничение на их количество. Нет, я буду делать, как обычно поступают в графике: рендерить небо в текстуру-скайбокс, а далее сферические гармоники или что-то подобное. Для кораблей всё равно придётся это делать, для реалистичного освещения.

Цитата ABetc ()
Либо проще. Расставляем точки скоплений и их веса. На линиях, соединяющих соседние точки (ну тут можно поиграться), генерим галактики. Всё. Тем более что скопления уже известны некоторые. Тоже покажу моделирование потом.

Ага, а теперь надо учесть, что галактики генерируются блоками. Вот есть куб с ребром s в координатах xyz. Задача - сгенерировать в нем галактики. Желательно ещё и со спутниками. Ни о каких точках и линиях куб не знает. Алгоритму вообще должно быть все равно, где куб находится. Он может брать только данные из куба-родителя, если надо (ах да, это octree, 8 кубов вложены в куб большего размера, где генерируются более яркие галактики).


ABetcДата: Воскресенье, 31.07.2016, 01:44 | Сообщение # 562
Космический турист
Группа: Пользователи
Российская Федерация
Сообщений: 36
Награды: 0
Статус: Offline
Цитата SpaceEngineer ()
Алгоритму вообще должно быть все равно, где куб находится.

Но алгоритму не должно быть всё равно, каков размер куба. Т.к. структура имеет вполне определённый диапазон масштаба. Значит, только при определённых размерах запускать алгоритм...

Ну и вопрос. Менять сам подход уже невозможно? Чтобы не octree использовать, а другой алгоритм.
Неужели не делается какая-либо стыковка этих кубов между собой? И каждый куб совершенно изолирован параметрически от других? Тогда делать волокна действительно сложно.


Кольца планет - это диски, на которые предыдущие цивилизации записали всю свою историю и как они довели планету до такого состояния...))
ABetcДата: Воскресенье, 31.07.2016, 02:29 | Сообщение # 563
Космический турист
Группа: Пользователи
Российская Федерация
Сообщений: 36
Награды: 0
Статус: Offline
Цитата
Нельзя не отметить и пустоты, которые ограничивают видимое распределение галактик. Они, как правило, имеют грубо сфероидальную форму и соединяются друг с другом. Спектр их размеров простирается от сотней км/с до 10000 км/с. В этих областях плотность галактик на порядки меньше средней, либо они там и вовсе отсутствуют.


Отсюда.

Можно ли в каждом кубе генерить галактики просто на поверхности таких сфер плюс минус шумовая составляющая?

И далее.

Цитата
на каком масштабе Вселенную можно считать однородной? Обзоры близкой Вселенной указывали на существование структур больших 10000 км/с. ... создается впечатление, что однородность достигается на шкале около 20000 км/с.


И там же см. картинки. В принципе, в пределах 1 куба генерировать неоднородности по любому "правдоподобному" алгоритму - и этого достаточно?


Кольца планет - это диски, на которые предыдущие цивилизации записали всю свою историю и как они довели планету до такого состояния...))

Сообщение отредактировал ABetc - Воскресенье, 31.07.2016, 02:32
SpaceEngineerДата: Воскресенье, 31.07.2016, 11:50 | Сообщение # 564
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 54
Статус: Offline
Это особенность процедурной генерации. Генератор должен выдавать значение функции в точке сразу, желательно очень быстро. Тут не годятся сложные алгоритмы типа сделать 1000 итераций релаксации или N-body симуляции, причём где надо брать объём, заведомо больший, чем объём данного куба, иначе на границах будет нестыковка с соседними. То же самое касается ландшафта планет - обработать его фильтрами, имитирующими эрозию, можно, но придётся захватывать и соседние квады - иначе на границах будет неправильно. Я собираюсь это реализовать в будущем, всё-таки без эрозии реализма не добиться. Можно и с галактиками так поступить - делать 10-20 итерций взаимного притяжения, тогда волокна и скопления станут более выраженными. Пока не задумывался, что там с граничными условиями.

ABetcДата: Воскресенье, 31.07.2016, 18:20 | Сообщение # 565
Космический турист
Группа: Пользователи
Российская Федерация
Сообщений: 36
Награды: 0
Статус: Offline
SpaceEngineer, какие именно значения должна выдавать функция?
Координаты очередного объекта? (Говорим о галактиках)


Кольца планет - это диски, на которые предыдущие цивилизации записали всю свою историю и как они довели планету до такого состояния...))

Сообщение отредактировал ABetc - Воскресенье, 31.07.2016, 18:21
SpaceEngineerДата: Понедельник, 01.08.2016, 00:51 | Сообщение # 566
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 54
Статус: Offline
Если бы выдавала координаты, это было бы вообще шикарно. Сейчас функция выдаёт вероятность появления галактики в данной точке. Соответственно алгоритм генерации такой: сгенерировать N точек, случайно равномерно распределенных в кубе; вызвать функцию для каждой точки, сгенерировать случайное число и сравнить со значением функции: если меньше, галактика есть, если больше - переходим к следующей точке.

ABetcДата: Понедельник, 01.08.2016, 19:14 | Сообщение # 567
Космический турист
Группа: Пользователи
Российская Федерация
Сообщений: 36
Награды: 0
Статус: Offline
Цитата SpaceEngineer ()
Проблема - подобрать более-менее реалистичную фрактальную функцию (функцию, в которой участвует тот самый вороной). Если зашкаливать коэффициенты плотности, чтобы волокна были более узкие, то это оверкилл: 99,9% сгереренных точек попадут в полости и не дадут галактик, а процессорное время уже сожрано. Ведь самая тяжелая функция - фрактал от вороного - вызывается для всех точек. Как иначе узнать, попала точка в полость или в волокно?


Вот здесь есть зацепки.

Значит, уже есть функция принадлежности координат волокну? Обозначу как р(а).
И явно она не двоичный результат возвращает, а вещественное число? Чтобы сравнивать с порогом.
А что если сделать иначе? Ещё на этапе:
Цитата SpaceEngineer ()
сгенерировать N точек, случайно равномерно распределенных в кубе

Но генерировать иначе:
1. Генерируем точку.
2. Генерируем пороговую величину: случайную, но не равномерную.
3. Если функция принадлежности даёт величину выше пороговой, идём к п. 1, а точку не ставим. Всего скажем 3 таких итерации. Если ниже пороговой - ставим галактику. Если за 3 итерации не прошли под пороговую - не ставим точку.
4. Идём к п.1 за новой точкой.
Таким образом мы:
1. Не ставим лишних точек, которые потом не используются, не занимаем память.
2. Избавляемся от задирания плотности а значит и от генерёжки кучи лишних точек.
3. Точки кучкуются ближе к волокнам, что нам и надо. Играемся с параметрами, получаем результат.

Или так.
1. Генерим энное кол-во точек, проверяя значение р(а), пока не попадём ниже некоторого порога (параметр b). Значит, мы попали вблизи волокна.
2. Берём эту точку за отсчёт и собираем множество точек таким образом:

1) Генерим 8 точек в вершинах куба с некоторой стороной (параметр c), центр куба - наша нынешняя точка.
2) Берём вершины куба и ищем 2 точки с минимальными значениями р(а).
3) При этом все такие точки запоминаются, чтобы не вызывать тяжёлую функцию р(а) лишний раз. Поэтому в 2) мы ищем минимумы среди ещё не найденных точек (не записанных в массив).
4) Если среди новых точек нет подпороговых (слишком далеко от волокна), не продолжаем алгоритм.
5) Повторяем процедуру. Таким образом мы имеем множество точек, связанных между собой определённым шагом.
6) Берём эти точки и с шумовой поправкой разбрасываем желаемое количество галактик вокруг. Всё!
При этом шумовая поправка штука очень гибкая и интересная. Она может и должна зависеть от р(а): чем ниже величина, тем больше плотность.
Ну и задействовать в ней функции от равномерной случайной величины. Чтобы получать более "комковатую" структуру волокон, например.

Ориентиром результата может быть например вот эта картинка: https://upload.wikimedia.org/wikiped....rus.gif

Ну и ещё идейка.
С некоторой натяжкой такая "пенистая" структура - это суперпозиция колебаний, т.е. функций вида cos®, r - линейная или какая-то другая функция радиус-вектора.
Складываем эти колебания, возведя предварительно в какие-то степени, чтобы "прижать" косинус к 1, а точнее, 1-((1+cos®)/2)^k, чтобы уж нормировано было.
Тогда получаем вот такие подобные как на картинке максимумы, которые имеют некоторую геометрическую структуру.
Играясь с фазой и периодом колебаний, можно получать волокна безо всяких фракталов.
Более того. Это может быть функция, задающая смещение точек. И тогда действительно мы бросаем случайные точки, пропускаем их через функцию, получаем смещённые точки сразу готовые.
Ну это поле для экспериментов.


Кольца планет - это диски, на которые предыдущие цивилизации записали всю свою историю и как они довели планету до такого состояния...))

Сообщение отредактировал ABetc - Понедельник, 01.08.2016, 19:16
ABetcДата: Понедельник, 01.08.2016, 19:27 | Сообщение # 568
Космический турист
Группа: Пользователи
Российская Федерация
Сообщений: 36
Награды: 0
Статус: Offline
Функция смещения точек может быть вообще очень забавной: это просто векторная сумма r/r^3 - расстояний от предварительно набросанного небольшого количества центров полостей до текущей равномерно случайно брошенной точки. Ну можно играться степенями и коэффициентами, весами этих центров полостей, шумовыми поправками. Таким образом каждая точка "отталкивается" - куда? - правильно, к периферии каждой из полостей. Можно в несколько итераций каждую точку так. Ну и там - галактика.

И между прочим, этот подход может быть очень близок к реальной физике образования нынешней структуры!
Что там у нас говорится о тёмной энергии? Отрицательная гравитация? Так может быть полости - это и есть скопления отталкивающей тёмной энергии? Моделирование покажет. smile


Кольца планет - это диски, на которые предыдущие цивилизации записали всю свою историю и как они довели планету до такого состояния...))
KostaR_MaxДата: Вторник, 02.08.2016, 00:16 | Сообщение # 569
Космический турист
Группа: Пользователи
Российская Федерация
Сообщений: 20
Награды: 0
Статус: Offline
Так ведь говорят что темная материя находится в большом колличестве в самих галактиках, что объясняет одинаково равномерную скорость вращения звезд вокруг ядра по всему радиусу галактики. Или же темная материя и энергия это разные вещи?
mrdvorchukДата: Вторник, 02.08.2016, 00:22 | Сообщение # 570
Исследователь
Группа: Пользователи
Пират
Сообщений: 195
Награды: 1
Статус: Offline
Цитата KostaR_Max ()
Или же темная материя и энергия это разные вещи?

Да. Темная материя обладает массой и таким образом сдерживает галактик не давая ей разлетаться. Тёмная энергия - это нечто, которая наоборот расширяет вселенную.


«…и если долго всматриваться в бездну, бездна тоже начнёт всматриваться в тебя» Фридрих Ницше
Форум » SpaceEngine » Обратная связь и предложения » Еще немного идей и предложений (То, чего нам бы хотелось в будущем увидеть в SE)
Страница 38 из 42«1236373839404142»
Поиск:

>