ПроектыФорумУтилиты

Космический симулятор SpaceEngine (121 стр)

Страницы: 1120 121 122 123218 Следующая »
#1800
14:45, 29 апр 2011

koaa310
> программа работает очень нестабильно. Постоянно вылетает. :(
Я уже не знаю как с этим бороться. Причина в несоответствии объёма ресурсов, подсичтанного вручную, и того, что даёт OpenGL. При запуске проги отъедается 100-200 Мб под дефолтные текстры, статичные буфера рендера, импостеры, vbo каталожных звёзд и галактик. С этим ладно. Но потом начинаются странности. В движке есть динамический кэш в VRAM  для текстур и мешей планет и vbo процедурных звёзд. Так вот, если я сам вручную подсчитываю размеры текстур (сумма длина*ширина*bpp для всех мип упровней) и размеры vbo (кол-во вершин * размер вершины + кол-во индексов * размер индексов), получается расхождение раза в 1.5-2 с тем, что даёт  GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX  /  GL_TEXTURE_FREE_MEMORY_ATI.  Т.е. прога думает, что заняла 500 Мб видеопамяти, а на самом деле заняла 800. В итоге, когда реальная физическая видеопамять заканчивается, происходит краш. Между прочим, это тоже не понятно - ведь драйвер должен автоматически вытолкнуть старые текстуры/меши в системное ОЗУ, но в 7-ке вместо этого прога просто падает, иногда вместе с драйвером. Сделал костыть - постоянное определение объёма занятой памяти с помощью тех GL расширений, это вроде спасает от крашей, но только если VRAM 1024 Мб и больше, да и не у всех (на моём компе спасает, поэтому я не могу понять, почему падает у других). Если VRAM 512 Мб и меньше, бедным планетам не хватает тех жалких 100 Мб, что якобы можно использовать, да ещё кэш звёзд начинает странно себя вести, в итоге - зверские тормоза и краш.

koaa310
> Кстати, тебе надо дампы падений? В принципе к ним можно подцепить код, и
> посмотреть в дебаге из за чего упало.
> Если что, то можешь попробовать например вот этот посмотреть:
> http://koaa310.jino.ru/tmp/SpaceEngine/SpaceEngineDump001.rar (153 мега)
Да не, не надо, я знаю в чём причина крашей. А что это за дамп такой зверский на 153 метра? Всю винду раздампило что ли? :)


koaa310
> При нахождении внутри туманности, если туманность "засвечивается" звездой или
> планетой, то после восстановления случается вот такое:
Это виден скайбокс, в который рисуется туманность, если не двигаться быстро. Некоторые грани пропадают, это старинный глюк, странно, я думал что исправил его в 0.90. А некоторые грани так резко выделяются, потому что при рендере в грань спрайты туманности поворачиваются, используя свой up вектор для каждой грани. Я пока не знаю, как это обойти. По-идее, никак, потому что невозможно непрерывно отобразить поле векторов на поверхность сферы - будут выделяться полюса.

#1801
15:37, 29 апр 2011

Neptune
> Да не, не надо, я знаю в чём причина крашей. А что это за дамп такой зверский
> на 153 метра? Всю винду раздампило что ли? :)
вообще то это архив, сам дамп на 800 метров :))))) ну, насколько я понимаю это дамп всей памяти занимаемой приложением.
Я его в вижуал студии открывал, там можно сорсы приписать и теоретически он должен выдать тебе стек и все переменный (как при обычном дебаге)

#1802
16:16, 29 апр 2011

Neptune
текстуры кратны степени двойки?

в общем я не поленился, на стр. 86 есть обсуждение кратности, тока не понял чем оно закончилось, забил? : )

#1803
22:40, 29 апр 2011

Кстати, про кратность. А уверен, что у текстур нету боковых пикселей для выравнивания? Скорей всего из-за этого расхождение. Память под текстуру равна питч * высота

#1804
23:45, 29 апр 2011

Sh.Tac.
> текстуры кратны степени двойки?
> в общем я не поленился, на стр. 86 есть обсуждение кратности, тока не понял чем
> оно закончилось, забил? : )

Пока забил. Раньше вроде не было такого расхождения, как сейчас. Может ещё какой-то баг вылез. А вообще надо поисследовать насчёт степеней двойки.

evirus
> Кстати, про кратность. А уверен, что у текстур нету боковых пикселей для
> выравнивания? Скорей всего из-за этого расхождение. Память под текстуру равна
> питч * высота

Я делаю боковые пиксели сам. Т.е. к текстуре 256*256 добавляю с краю пиксели из соседних текстур, получается 258*258. Или что ты имеешь в виду? И что такое питч?
Попробую всё перемасштабировать на 254*254, тогда после добавления доп. пикселей получится 256*256.

Но всё равно остаётся вопрос: как определить дополнительные накладные расходы GL? Всё время пользоваться  GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX  /  GL_TEXTURE_FREE_MEMORY_ATI ?

#1805
11:10, 30 апр 2011

>Всё время пользоваться GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX / GL_TEXTURE_FREE_MEMORY_ATI ?
Запусти в отдельном потоке

#1806
18:12, 30 апр 2011

Arlekit
> > сё время пользоваться GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX /
> > GL_TEXTURE_FREE_MEMORY_ATI ?
> Запусти в отдельном потоке
И что это изменит?

#1807
1:31, 2 мая 2011

Мальчик, хочешь пакетик леденцов и прокатиться на шарабане...? :)
Дяденьки, хотите сесть на астероид и прокатиться на космическом корабле по космосу с реальными законами - прошу: http://www.irrlicht.ru/forum/download/file.php?id=56
ЗЫ. Все управление в readme.txt. Если музыка вам надоест замените или удалите из медии файл music.ogg .

#1808
18:14, 2 мая 2011

Сделал тройные и кратные звёзды, и теперь встала "интерфейсная" проблема. Точнее две. Сначла опишу получившееся устройство системы.
Каждая звезда может быть двойной. Т.е. заменятся на барицентр звёздной системы и две звезды, вращающиеся вокруг барицентра в противофазе. Каждая из звёзд в свою очередь может быть двойной, и т.д. до 3 уровня (т.е. "максимальная" система - 8 звёзд и 7 барицентров). Вокруг звезды могут вращаться планеты, вокруг барицентра - тоже (т.е. возможны планеты на широких орбитах сразу вокруг звездной пары).

Первая пробема - правила именования процедурных звёзд и планет. Сейчас сделал такую. Звёзды в паре именуются буквами A и B. Если звезда двойная, то имя A или B получает её барицентр, а компоненты двойной получают имена AA и AB или BA и BB. И так далее - AAA, AAB, ... , BBB. Если в системе одна звезда, её имя совпадает с именем системы, то же саме для "корневого" барицентра. Планеты получают имена в виде номеров в порядке удаления от звезды. Например A3, AB9, и т.д. Луны планет "нумеруются" греческими буквами, например A3альфа, AB9гамма. В общем, пока так корявенько это выглядит.

В астрономии принят ещё более корявый способ - в порядке открытия (по-другому пока никак). Звёзды-компоненты двойных называаются A и B, потом когда открывают третью звезду, называют её C, четвёртую - D  и т.д. Независимо от иерархии. Иногда, когда открывают двойственность например компонента B, его его переименовывают в BA, а спутнику дают имя BB. Я выбрал второй вариант как более логичный, но в нём по логике нет места звёздам C, D и т.д.
Именование планет это вообще ппц. Первая открытая планета называется b, вторая c, третья d и т.д. Буква a типа зарезервирована для самой звезды. Кто это придумал, интересно? Я решил просто цифрами их называть, как принято в фантастике: "планета Ригель 3" как-то привычно звучит.
Наименование спутников тоже в порядке открытия, и римскими цифрами - Ио = Юпитер I, Европа = Юпитер II и т.д. В принципе нормально, но римские цифры как-то не в тему ИМХО, так что я заменил их на греческие буквы.
Artlav прикольно сделал - имена планет даются от названий цифр на итальянском или каком там:)

Вторая проблема как всю эту иерархию отобразить в превью планетной системы. Вот скрин для примера - тут сделано "в лоб", в первом столбце все звёзды и барицентры, за ними идёт список их планет.

scr00033 | Космический симулятор SpaceEngine

У корневого барицентра две планеты 1 и 2  и две звезды A и B, причём A в свою очередь двойная и состоит из звёзд AA и AB. У звезды B восемь планет B1...B8 (не обращайте внимания на пропущенные планеты и неправильный порядок, это просто тест).
Сразу бросается в глаза, что такая таблица как-то не логично смотрится, да и некрасиво. Страшно подумать, во что она превратится, если в системе будет 8 звёзд и 7 барицентров:) К тому же такая огромная таблица будет долго "грузиться" - нужно будет сгенерить под сотню планет. По-идее, нужно сделать её древовидной, типа как сейчас сделаны выпадающие списки лун у планет. Но я чё-то не представляю, как это оформить. Жду предложений:)

UPD: может есть смысл открывать таблицу отдельным экраном. На фоне - вид системы издалека, с отображением орбит планет и звёзд, который можно покрутить и позумить. Примерно как сделано в Ad Astra

#1809
19:36, 2 мая 2011

Neptune
что то за всеми этими описаниями затерялся сам вопрос.
так в чем проблема то? :)

#1810
20:24, 2 мая 2011

Neptune

>В астрономии принят ещё более корявый способ - в порядке открытия (по-другому пока никак).
никогда бы не подумал

>решил просто цифрами их называть, как принято в фантастике: "планета Ригель 3" как-то привычно звучит.
+1

вообще мне кажется , что лучше Все через цифры ( вот Ригель 3 - это Звезда Ригель - третья в созвездии , а
планета Ригель 3 - это 3-я планета в Звзедной Системе Ригель 3 , а если планета Ригель 2 - так надо либо Ригель 3 2 ,
либо 2-ая Ригель 3 ) , а у тебя еще Двойные.. то есть 2-ая Ригель 3 1 , либо 2-ая Ригель 3 2 ( посмотри со стороны ) .

а еще вместо Ригель будет набор Цифр ( или Генератор названий нужен ) - их бы тоже к чему-то привязать .

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

#1811
20:41, 2 мая 2011

koaa310
> так в чем проблема то? :)
В дизайне браузера солнечной системы. Так как сейчас сделано - монструозно выходит.

#1812
21:18, 2 мая 2011

Рядом с туманностью Кольцо нашёл "максимальную" 8-кратную звезду. Посмотрите на эту планету, у неё 8 солнц, не то что у какой-то там Земли! :)

scr00034 | Космический симулятор SpaceEngine

Табличка со звёздами и барицентрами не влазит в экран (15 пунктов!). Сделаю наверное файлоподобную структуру: сначала в таблице в одну строчку показывается корневой барицентр и его спутники - звёзды, дргие барицентры и планеты. Кликаешь на заезду/барицентр/планету - вываливается вторая табличка с его спутниками (или замещает первую) и т.д.

#1813
22:34, 2 мая 2011

ну, в данном случае наверное следует сделать нечто древовидное.
А вообще, стоит:
1. уменьшить иконки
2. залить фон внутри иконок чем нибудь непрозрачным
3. В принципе ценность названий стремится к нулю, так что возможно из иконок их можно выкинуть. (ну, или как минимум попробовать и прикинуть как оно смотрится )

#1814
23:27, 2 мая 2011

Никогда бы не подумал что существуют такие сложноорганизованные системы. Двойные звезды - штука понятная. Тройные звезды - ну разве что третья летает вокруг барицентра двойной звезды. В большее не поверил бы. А тут прочитал про Кастор - вот оно как оказывается бывает =)

Наименование действительно ужасное. Имена "Касторы Aa, Ab, Ba, Bb, Ca, Cb" - совершенно не отображают структуру.

Договоримся называть барицентры прописными буквами латинского алфавита: A, B, C,...
Звезды называть строчными буквами латинского алфавита: a, b, c...
Тогда, если у нас имеются звезды "a" и "b", вращающиеся вокруг барицентра A - будем звать их Aa и Ab.

Начинаем описывать:
1) есть внешний барицентр для двух пар (Касторы Aa, Ab, Ba, Bb) и еще одной пары (Касторы Ca, Cb) - назовем его A.
2) четыре звезды вращаются попарно вокруг барицентра AA, и еще пара - вокруг барицентра AB
3) каждая пара барицентра AA вращается возле барицентров AAA и AAB; а в это время вокруг барицентра AB вращаются звезды ABa и ABb (Касторы Ca и Cb соответственно)
4) заканчиваем с четверкой звезд: вокруг AAA летают AAAa и AAAb, а вокруг AAB летают AABa и AABb.

В итоге я бы назвал звезды следующим образом:
AAAa
AAAb
AABa
AABb
ABa
ABb

Названия более длинные, но зато видно кто вокруг кого вращается. Напрашивается избавление от первой повторяющейся буквы, обозначающей барицентр всех звезд - ее имеет смысл заменить на название всей звездной системы. Если названия нет - оставляем. Опять же, звезда входит в созвездие - первую букву можно заменять на имя созвездия и греческую букву порядка в сзвездии. Получаем детализацию именования A =  α Близнецов = Кастор. В качестве бонуса получаем однозначное наименование планет:

Кастор 2 - вторая из планет, вращающихся вокруг барицентра общего для всех звезд (первую A - договорились заменять на имя звезд)
Кастор AB  - первая планета (можно еще договориться выбрасывать единицы у первых планет), вращающаяся вокруг пары AB
Кастор ABb  - планета, на орбите одной из парных звезд (ныне называется Кастор Cb)
Кастор A - вращается вокруг четырех звезд
Кастор B 6 - вокруг двух


Собственно отличие от текущего именования в движке - видно где барицентр, а где звезда. Барицентры можно смело убирать с миникарты.
На первом скрине с вопросом, обозначены:
центр +2 + 1
центр A + A4 + A5 + A2+ A3
B+B1+B2+B3+B4+B5+B8                        /* а почему вдруг B8? где же B6 и B7? */
AA
AB


Я бы обозначил их на карте так:
Aa + Ab                                        /* парные звезды без планет*/
A4 + A5 + A2 + A3                        /* планеты, общие для предыдущей пары*/
b+b1+b2+b3+b4+b5+b8          /* звезда и ее планеты */
2 + 1                                            /* внешние планеты, общие для всех */

1) лично мне привычней рассматривать от центра к краю.
2) собирать в одну строку звезды (и их планеты) с общим барицентром
3) планеты вращающиеся вокруг барицентра - отдельно от звезд и их планет

Последний скрин, по этим правидам получится таким:
AAa + AAb
ABa + ABa 1 + ABb + ABb 1
звезда_имя_которой_останется_неизвестным


Ну и для нашей системы:
A + A 1 + A 2 + A 3 + ...
или
Солнце + Солнце 1 + Солнце 2 + Солнце 3 + ....
или
Солнце + Меркурий + Венера + Земля + ...
система простая - влезает в одну строчку.

Страницы: 1120 121 122 123218 Следующая »
ПроектыФорумУтилиты

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