Войти
ПрограммированиеФорумГрафика

Генерация ночного неба на основе случайной галактики

Страницы: 1 2 3 4 5 6 7 Следующая »
#0
18:21, 9 сен. 2018

Всем привет! Конечная цель получить Cube Texture с ночным небом. Вот пример стороны такого куба для млечного пути:

+ Показать

Как это было получено:
1) Рендер 1 млн блеклых звезд из каталога Tycho2
2) Сглаживание
3) Цветокоррекиця
4) Рендер 1-2 тыс ярких звезд

Мне нужно тоже самое, но сгенерированное случайным образом, а не на основе реальных данных. Давайте рассмотрим варианты:

Генерируем собственную галактику
Суть простая:
1) Создаем несколько миллионов звезд случайным образом, но чтобы они образовывали галактику с рукавами
2) Применяем закручивание

+ Показать

3) Помещаем наблюдателя в случайное место внутри галактики и рендерим все звезды как в первом случае
В результате получается фигня, потому что звезды слишком упорядоченны. Может стоить применить какой-нить distortion?

Рендерить сразу в 2D
1) Берем случайную текстуру
2) Применяем fractal brownian motion
3) Случайным образом добавляем звезды
Но непонятно, как это все зациклить на небесной сфере. И к тому же если очень-очень постараться можно получить такое

+ Показать

а если не очень, то только такое
+ Показать

Использовать объемную текстуру
1) Берем случайную 3D текстуру
2) Применяем fractal brownian motion
3) Помещаем наблюдателя в центр и трассировкой лучей проецируем всю картинку
Так делают облака, пыль, туман

+ Показать

Что-то еще?
С информацией в интернете как-то не очень. Моя проблема в том, что я не пойму, какой вариант можно быстрее всего довести до ума, и чтобы получить приемлемое качество. Интересно, что Neptune применял в SpaceEngine - фрактальную генерацию?


#1
21:39, 9 сен. 2018

>В результате получается фигня, потому что звезды слишком упорядоченны. Может стоить применить какой-нить distortion?
быть может у тебя распределение звездных величин не очень удачное? сделай до 6-ой величины штук 10000, остальные 2.5 млн до 17

#2
21:51, 9 сен. 2018

Еще чуточку информации к размышлению, надеюсь будет полезной..
В реальных галактиках часть видимого света загораживают "облака" пыли (еще часть света рассеивают).
Вот, например, снимок галактики в ИК спектре, для сравнения:

+ Показать

То есть, к первому методу можно попробовать как-то добавить эти облака пыли + сделать распределение звезд более похожим на ИК, возможно получится более реалистично..

#3
21:54, 9 сен. 2018

агрессор
Нет, они именно слишком равномерно распределены, даже после добавлениям шумового смещения или яркостей. Немного помогло добавление нескольких шагов (около 50) небольшой симуляции гравитационного взаимодействия и слияния звезд с повышением яркости, чтобы они распределились естественным путем, но тут возникли другие проблемы (производительность, необходимость обсчета взаимодействия "каждый с каждым" без всяких сеток, сложность физики вращающейся галактики).

Я сейчас смотрю в сторону 3D-объема, вот пример того, что может получиться https://www.shadertoy.com/view/XslGRr . По идее, если трассировать лучи из центра и блендить слои по альфе, то должно получиться то что нужно (может и нет). Ну и тут даже экранирующую пыль можно легко подцепить.

#4
3:22, 10 сен. 2018

BingoBongo
Слушай, а как это можно сделать на основе реальных данных? Мне как раз реализма нужна :)

#5
7:39, 10 сен. 2018

Iron Man
поищи статью "A Physically-Based Night Sky Model". как сделаешь - меняй йельский каталог на тихо браге

BingoBongo
>В результате получается фигня, потому что звезды слишком упорядоченны. Может стоить применить какой-нить distortion?
может у тебя галактика слишком толстая? ты бы картинку показал

#6
9:21, 10 сен. 2018
BingoBongo
> получить Cube Texture

А что если рисовать полигональные звёздочки? ^_^

#7
10:29, 10 сен. 2018

Iron Man
> Слушай, а как это можно сделать на основе реальных данных? Мне как раз реализма
> нужна :)
Проще, наверно, у NASA текстуру скачать https://svs.gsfc.nasa.gov/3895 . Она от сферы, т.е. если ее натянуть обратно, то будет смотреться корректно.

А так реальные данные едва ли помогают что-то сделать красивее, чем в фотошопе.

#8
11:42, 10 сен. 2018

Очень черновой вариант, делается буквально 50ю строчками кода, если есть функция шума. Я так понимаю, ничего лучше тут никто не предложит?

#9
11:44, 10 сен. 2018

BingoBongo
Попробуй делать звёзды спрайтами с альфой.

#10
11:56, 10 сен. 2018

Mikle
У меня для звезд свой шейдер, проблема только с фоном, я стремные звезды добавил, т.к. это быстрее для демонстрации

+ Показать
#11
12:39, 10 сен. 2018

BingoBongo
Встраиваешь аналог фильтра Фотошопа cloud с регулировкой параметров (в том числе цвет и смешивание нескольких облаков) + случайный разброс точек.

#12
14:20, 10 сен. 2018

BingoBongo
> проблема только с фоном
У спиральной галактики, как правило, два рукава. В них расположены облака газа и пыли, в них же находятся молодые звёзды, они ярче и синее старых, кроме того имеется эллипсоидный массив старых, более тусклых и красных звёзд вокруг центра. Вокруг ядра плотность звёзд очень высока, газо-пылевые облака могут затенять звёзды за ними, а так же сами могут подсвечиваться ближайшими молодыми звёздами и центральным ядром. Ну и на центральной ЧД возможна аккреционная активность с двумя выбросами вдоль осей галактики, это может быть очень красиво.

#13
14:58, 10 сен. 2018

А какой смысл заморачиваться с достоверностью рисования галактики? Наблюдатель практически из любого места галактики (если только не находится достаточно близко к ядру) будет видеть ее в виде размытой полосы по кольцу, а большая часть вида неба будет определяться звездами, находящимися на расстоянии не более нескольких сотен световых лет, то есть даже меньше толщины рукава.

Как вариант для более-менее достоверного отображения - составить галактику не из звезд, а из полупрозрачных облаков, к которым потом уже добавить "локальные" звезды.

#14
16:55, 10 сен. 2018

BingoBongo
Dmitry_Milk все написал
С земли невооруженным глазом видно около 3000 звезд (разбросанных случайно по сфере)

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.