Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: deMax от Январь 22, 2014, 15:49



Название: [РЕШЕНО] OpenGl для космоса
Отправлено: deMax от Январь 22, 2014, 15:49
Как нарисовать космос в OpenGl?

Размер объектов от наземной антенны или спутника связи до галактик отличается в огромное число раз, естественно напрямую космос не нарисовать.
Хотелось бы сделать через слои, в начале рисую звезды в масштабе 1.0f = 100...00км, потом солнечную систему в масштабе 1.0f=1000км, потом мелкие объекты в масштабе 1.0f=1 метр.

p.s. Где взять каталог звезд, например до 7ой величины и skybox для галактик?
p.s.s. Про программы celestia и stellarium с открытыми исходниками знаю. Есть еще space engine без исходников с фантастической графикой и вымышленными звездами в местах недоступных нашим телескопам.


Название: Re: OpenGl для космоса
Отправлено: Igors от Январь 22, 2014, 17:03
Резвый старт, сразу каталог звезд :)  А между тем отрисовать даже звезды в виде случайно разбросанных точек - не так уж просто. Что будет если наблюдатель/камера "вертит головой"? Т.е. откуда возьмутся случайные но воспроизводимые позиции точек?

Ну а там "стожары" всякие - нужно хорошо знать розовый шум.  


Название: Re: OpenGl для космоса
Отправлено: Serr500 от Январь 22, 2014, 17:13
http://www.usno.navy.mil/USNO/astrometry/optical-IR-prod/ucac (http://www.usno.navy.mil/USNO/astrometry/optical-IR-prod/ucac)


Название: Re: OpenGl для космоса
Отправлено: deMax от Январь 23, 2014, 08:32
Резвый старт, сразу каталог звезд :)  А между тем отрисовать даже звезды в виде случайно разбросанных точек - не так уж просто. Что будет если наблюдатель/камера "вертит головой"? Т.е. откуда возьмутся случайные но воспроизводимые позиции точек?

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

Меня про возможность слоев больше вопрос интересует.


Название: Re: OpenGl для космоса
Отправлено: кып от Январь 24, 2014, 13:57
, потом солнечную систему в масштабе 1.0f=1000км,
Какие масштабы???

Попробуйте принять размер Земли за 1 пиксел, нет даже за 1/100 пиксела, и посчитайте на каком расстоянии нужно будет нарисовать Солнце, ну и его размер.


Название: Re: OpenGl для космоса
Отправлено: Igors от Январь 24, 2014, 14:52
Мне нужны реальные данные, а не процедурная фантазия.
Конечно если это требование заказчика, то и обсуждать нечего. А иначе фантазия куда приятнее - творческая работа вместо долбления каталогов. Если говорить о реальных данных, то какие там "километры"? Звезды/планеты меряются в телесных углах.

Меня про возможность слоев больше вопрос интересует.
Ну и в чем проблема? Берете по QPixmap (или QImage) на каждый слой, спокойно рисуете (можно параллельно), на выходе комбинируете


Название: Re: OpenGl для космоса
Отправлено: Vamireh от Январь 24, 2014, 22:57
http://habrahabr.ru/post/150541/ (http://habrahabr.ru/post/150541/)

тут немножко написано о том, как "нарисовать космос"


Название: Re: OpenGl для космоса
Отправлено: deMax от Февраль 13, 2014, 11:16
Vamireh, спасибо. У меня установлен space engine - очень крутая программа, респект автору (жалко что не очень стабильна, но зато очень красивая). Может и в игру когда перерастет.
Цитировать
тут немножко написано о том, как "нарисовать космос"
Цитировать
Да и сам рендеринг происходит слоями, так как никакой точности z-буфера не хватит для учёта размеров вселенной.
Это все что там написанно(ну еще про координаты чуть). И как в OpenGL реализовать слои?
Может очищать zbuffer перед рисованием следующего слоя?

Попробуйте принять размер Земли за 1 пиксел, нет даже за 1/100 пиксела, и посчитайте на каком расстоянии нужно будет нарисовать Солнце, ну и его размер.
В OpenGL нет пикселей, есть условные единицы.

p.s. решение - нужно использовать слои.


Название: Re: OpenGl для космоса
Отправлено: vulko от Март 06, 2014, 16:06
Vamireh, спасибо. У меня установлен space engine - очень крутая программа, респект автору (жалко что не очень стабильна, но зато очень красивая). Может и в игру когда перерастет.
Цитировать
тут немножко написано о том, как "нарисовать космос"
Цитировать
Да и сам рендеринг происходит слоями, так как никакой точности z-буфера не хватит для учёта размеров вселенной.
Это все что там написанно(ну еще про координаты чуть). И как в OpenGL реализовать слои?
Может очищать zbuffer перед рисованием следующего слоя?

Попробуйте принять размер Земли за 1 пиксел, нет даже за 1/100 пиксела, и посчитайте на каком расстоянии нужно будет нарисовать Солнце, ну и его размер.
В OpenGL нет пикселей, есть условные единицы.

p.s. решение - нужно использовать слои.

нахрена слои в opengl'е? он вам и звезды и не только нарисует сам, главное создать сцену.


Название: Re: OpenGl для космоса
Отправлено: deMax от Апрель 21, 2014, 09:56
нахрена слои в opengl'е? он вам и звезды и не только нарисует сам, главное создать сцену.
Это не я про слои придумал - так сделанно в space engine. Вы себе представляете масштабы космоса? opengl его не способен напрямую отобразить.


Название: Re: OpenGl для космоса
Отправлено: vulko от Апрель 21, 2014, 12:44
нахрена слои в opengl'е? он вам и звезды и не только нарисует сам, главное создать сцену.
Это не я про слои придумал - так сделанно в space engine. Вы себе представляете масштабы космоса? opengl его не способен напрямую отобразить.

opengl способен отрисовывать часть 3х мерного пространства. можно задать точку камеры, точку куда смотрит камера и пару плоскостей ограничивающих полученную пирамиду. Получается усеченная пирамида пространства, которую будет отображать opengl.