Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » К вопросу о гранях, рёбрах, и вершинах вселенной :-) | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 5
На страницу: 1, 2, 3, 4, 5  След. | Все страницы
Поиск в этой теме:
Канал Игры Мечты: «К вопросу о гранях, рёбрах, и вершинах вселенной :-)»
Надо ли пытаться что-нибудь слепить, когда знаешь , что всё равно ничего не выйдет?
Да, надо для общего развития
81%
 81%  [ 27 ]
Нет, не надо, а то ничсего не выйдет - и с горя повесишься
18%
 18%  [ 6 ]
Всего проголосовало : 33
LK
 176 EGP


Репутация: 37
Сообщения: 540
Откуда: РАПС (ЭТУ)
Зарегистрирован: 04.08.2003
Вот надысь думал, отчего в ХТ и всём прочем новом, есть какая-то несуразица между ближними объектами и всякой дымчатой ерундой вдали, почему космос из секторов и пр... А потом стал читать умную книжку пРо Опен-ГЛ (DX не стал пока) - так там сказано, что тот объём, куда рисовать можно, вроде, ограничен плоскостями!
Это что, зщначит, я не могу бесконечную вселенную нарисовать, чтоб, типа если долго летишь, то всегда куда-то прилетешь, а не упрёшься в текстуру, что на стенку натянута, и не вылетишь в винду с глюком? Или ето как-то объехать можно? Типа, ооочень далёкие вещи сделать наподобие пятнышек на плоскости, которую ставим перпендикулярно камере, а по мере приближения к ним, изготовлять для них, так сказать, объёмное представление, или у кого другие идеи есть или кто сам делал.? Подскажите, ПЛЗ старому ламозавру.
    Добавлено: 22:08 22-07-2004   
Biburath
 





Ну ,ваще, мы просто далекий объект рисуем близко, но очччень ма-а-а-аленьким : glScalef(a,a,a), где a<<1, a=k*r+b, r-расстояние до объекта, k и b - какие-то постоянные числа, выражаются через угол поля зрения, пока не придумал как... Даже так: Объект рисуется ВСЕГДА на одном расстоянии от камеры, но уменьшенным или увеличенным, в зависимости от "реального" расстояния до наблюдателя.

На самом деле я сейчас по ночам занимаюсь именно этим. Типа, джоин аз, хе-хе...
    Добавлено: 01:40 23-07-2004   
Biburath
 





Сие применимо только для "придурков в космосе" т.е. реки, степи, горы и поля так не нарисуешь.
    Добавлено: 01:43 23-07-2004   
Biburath
 





Имхо DX - дерьмицо...
    Добавлено: 01:45 23-07-2004   
Dark Archon
 231 EGP


Репутация: 56
Сообщения: 389
Откуда: Moscow Federation
Зарегистрирован: 27.05.2004
А зачем лишние сложности? Ух ты!.. Это же куча дополнительных вычислений: масштабирование размеров, скоростей движения объектов и т.п., что, естественно, сказывается на быстродействии. Да и просто не удобно разрабатывать в такой анормальной координатной системе. Подозрение.
_________________
   o
_/0\_
 < >  КУ!
    Добавлено: 16:43 23-07-2004   
Dark Archon
 231 EGP


Репутация: 56
Сообщения: 389
Откуда: Moscow Federation
Зарегистрирован: 27.05.2004
Кстати, на счет DirectX: есть некая фирма, называется Тильтан (http://www.tiltangeomatics.com/), которая занимается разработкой графических движков для авиационных, танковых и т.п. симуляторов на платформе PC. Так вот свои движки они делают на DirectX и поверь мне неспроста Подмигиваю
_________________
   o
_/0\_
 < >  КУ!
    Добавлено: 16:56 23-07-2004   
Biburath
 





Dark Archon :
А зачем лишние сложности? Ух ты!.. Это же куча дополнительных вычислений: масштабирование размеров, скоростей движения объектов и т.п., что, естественно, сказывается на быстродействии. Да и просто не удобно разрабатывать в такой анормальной координатной системе. Подозрение.


Предложи как по-другому поместить солнечную систему в кубик 100x100 метров , и я буду тебе очень благодарен как программист.

По поводу DX - я же сказал, "ИМХО".

Я не говорю, что его нельзя использовать в серьёзных делах. Я говорю, что у него сложный, "мутный" API, и что он есть только под MracoHard.
Я ничего не имею против огромной могучей толпы программистов для Windows. Но сам к этой группе не отношусь, посему предпочитаю использовать открытые и строго документированные решения.

Позвольте напомнить вам о фирме "Id Software", все разработки которой используют OpenGL.

Если я кого-то обидел, то прошу меня извинить.
    Добавлено: 22:21 23-07-2004   
Biburath
 





координатная система остаётся Декартовой, все "масштабирования" линейны, множитель всего один, зависит тоже линейно и только от расстояния от обЪекта до наблюдателя, которое по-любому придётся считать при каждой итерации игрового цикла.Даже выбирать, что множить, а что нет, не надо. Надо всё. Операция умножения выполняется за 1 такт. 1 треугольник рисовать НАМНОГО дольше.
    Добавлено: 22:35 23-07-2004   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Biburath :
Предложи как по-другому поместить солнечную систему в кубик 100x100 метров , и я буду тебе очень благодарен как программист.

По поводу DX - я же сказал, "ИМХО".

Я не говорю, что его нельзя использовать в серьёзных делах. Я говорю, что у него сложный, "мутный" API, и что он есть только под MracoHard.


Интересно...
Как же Мартин тогда умудрился орбитер написать? Он у него под DX написан. И СС там полностью. И объекты побольше 100м размерами есть.
Если DX такой мутный, то в чём? Почему не в мутном OGL приходится так извращяться?
_________________
У меня бисера не доxеpа.
    Добавлено: 23:30 23-07-2004   
Dark Archon
 231 EGP


Репутация: 56
Сообщения: 389
Откуда: Moscow Federation
Зарегистрирован: 27.05.2004
Biburath :
координатная система остаётся Декартовой, все "масштабирования" линейны, множитель всего один, зависит тоже линейно и только от расстояния от обЪекта до наблюдателя, которое по-любому придётся считать при каждой итерации игрового цикла.Даже выбирать, что множить, а что нет, не надо. Надо всё. Операция умножения выполняется за 1 такт. 1 треугольник рисовать НАМНОГО дольше.


Ну да, но это все равно влияет на производительность, т.к. приходится масштабировать все обекты, т.е. если есть 100 обьектов - добавляются 100 перемножений матрицы (glScalef), я уж не говорю о масштабировании скоростей и чего там еще. И не забывай, что перемножаются МАТРИЦЫ, т.е. одним тактом тут не обойтись. А если учесть, что лишний вызов функции это лишнее дерганье стека, а чтобы зделать каждое перемножение нужно еще притащить операнды из памяти... Вообшем, не стоит говорить про один такт.
Кроме выше изложенного, ты теряешь возможность корректно использовать например еффект тумана, могут быть проблемы с моделью освещения, необходимо использовать автоматическую нормализацию, что в свою очередь тоже добавляет вычислений, т.к. каждая нормаль приводится к еденичной области, а если этого не сделать - будет не корректно высчитыватся освешенность объекта и т.д. и т.п. Хотя точно могу сказать, что подобные искажения координатной системы используются для некоторых нужд.

Biburath :
Предложи как по-другому поместить солнечную систему в кубик 100x100 метров , и я буду тебе очень благодарен как программист.


А откуда такое ограничение: 100х100 ??? Я не помню, чтобы меня когда либо ограничевало пространство координатной системы. Используешь float для координат, определяешь пространство как кубик 1.0f х 1.0f х 1.0f, а метру будет соответствовать, скажем, 0.000001 - вот и получилось пространство с ребром в 100000 метров. И поверь мне - все поместится. Придется правда пересчитывать эти координаты для метрического отображения на индикаторах кабины/интерфейсе, но это мелочи.
_________________
   o
_/0\_
 < >  КУ!
    Добавлено: 01:10 24-07-2004   
NetImperia
 200 EGP


Репутация: 15
Сообщения: 539
Откуда: Санкт-Петербург
Зарегистрирован: 23.08.2002
Да что вы вечно войны устраиваете DX vs OGL.
И на том и на том можно что угодно написать.
Лично я и то, и то пробовал. Просто когда начинаешь проект нужно определиться. Что более важно. Либо что-бы работало под кучей систем.(PC,PlayStation итд) но при этом потратить намного больше времени на программирование. Так как OGL не имеет столько функций как DirectX. И их придется самому писать либо искать библиотеки для этого.
Либо использовать DirectX. В котором значительно меньше писать нужно. Да и многие вещи он сам делает. Но работает только на платформах с Windows таких как PC и XBox + пара карманных компов.

Что у OGL что в DX скорость примерно одинаковая.
Ну естественно кому-то больше нравится OpenGL кому-то DirectX.
Это уже личные предпочтения.
Можно конечно написать что-бы работало и на том и на том. Но это лишняя трата времени.

По проводу показа объектов. Что-то вас совсем глючит. Что в OGL что в DX практически одинаковая матрица.
И по поводу 100x100 метров - Метры это не реальные координаты в которых вычисляются кординаты и размеры объектов в игре.
Все координаты гораничиваются размером переменной INT.
Тоесть координаты XYZ в пространстве. Каждая координата имеет числовой FLOAT формат это значение от 0 до 1500000000 если не ошибаюсь. Есть еще FLOAT64 - это 64 битный FLOAT но на простых не 64 битных процессорах оно медленно работает но значительно больше. Соответственно в этих кординатах происходят все манипуляции.
Одной еденице можно и метр присвоить и километр. Вопрос как этими координатами пользоваться.

Как кто-то выше вообще удивлялся что почемуб не создать всю вселенную в сразу. А вы подумайте 1) Сколько это будет памяти есть. (если вы не заметили во всех играх объекты дальше чем N просто не показываются и удаляются) 2) Сколько времени вся эта вселенная будет у пользователя генериться. Ведь генерится каждый кадр в игре.

Просто видимо далеко не все понимают как строится изображение.
Для тех кто не в курсе...
Большинство думают что изображение строится только 1 раз до тех пор пока в нем что-то не нужно будет поменять.
А это не верно. Все объекты пересоздаются каждый кадр и компьютер каждый раз просчитывает их и пытается вывести.
Тоесть если вы видите куб то это не значит что компьютер его 1 раз вывел. Он его заново прорисовывает каждый кадр. Уж так все устроено. Поэтому все игры и сжирвют 100% ресурсов процессора.

Вот Улыбка
_________________
Космос.Таинственный космос. Почему же он нас так тянет к себе.
    Добавлено: 01:25 24-07-2004   
Dark Archon
 231 EGP


Репутация: 56
Сообщения: 389
Откуда: Moscow Federation
Зарегистрирован: 27.05.2004
2NetImperia:
Вот молодец, написал все что мне лень было Улыбка

Правда, DX vs OGL никто не собирался устраивать. Я лишь заступился за DX, который не поправу назвали "дерьмицом", хотя сам его (DX) не знаю и пишу на OpenGL под Solaris(Sun)/IRIX(Silicon Graphics) и на mesa3d под DOS.

Хочу также добавить, что матрицы действительно одинаковые, 4х4, и обусловлено это математикой при помощи которой строится 3D пространство, а не конкретной библиотекой которая это делает. Когда-то на курсе компьютерной графики мне всю эту математику приходилось писать вручную, после чего OpenGL, где все это уже реализованно, конечно показался сказкой Улыбка

Что касается координат в формате int и int64: целые числе плохое решение для 3D графики, т.к. выполняется моножество действий, в результате которых получается дробный результат, который соответственно округляется и приводит к неточностям и искажениям, которые, в зависимости от построения алгоритма, могут накапливатся с каждым кадром. Вместо этого используется float и double - т.е. заведомо дробные переменные, у которых такой проблемы нет.

И последние: изображение, в большинстве случаев, действительно строится по новой каждый кадр, но в некоторых случаях это не так. Например в аркадных играх, для увеличения производительности, я делил сцену на статические и динамические обьекты, статические прорисовывал один раз, закидывал все в буффер аккумулятора и потом каждый кадр выкидывал их готовенькими на экран, тогда как только динамические объекты проходили полную прорисовку по новой. Результат - значительный speed up.
_________________
   o
_/0\_
 < >  КУ!
    Добавлено: 02:21 24-07-2004   
NetImperia
 200 EGP


Репутация: 15
Сообщения: 539
Откуда: Санкт-Петербург
Зарегистрирован: 23.08.2002
Dark Archon :

Что касается координат в формате int и int64: целые числе плохое решение для 3D графики, т.к. выполняется моножество действий, в результате которых получается дробный результат, который соответственно округляется и приводит к неточностям и искажениям, которые, в зависимости от построения алгоритма, могут накапливатся с каждым кадром. Вместо этого используется float и double - т.е. заведомо дробные переменные, у которых такой проблемы нет.


Я имел ввиду Float. Просто не то написал Улыбка Очепятался мысленно маленько.


Dark Archon :

И последние: изображение, в большинстве случаев, действительно строится по новой каждый кадр, но в некоторых случаях это не так. Например в аркадных играх, для увеличения производительности, я делил сцену на статические и динамические обьекты, статические прорисовывал один раз, закидывал все в буффер аккумулятора и потом каждый кадр выкидывал их готовенькими на экран, тогда как только динамические объекты проходили полную прорисовку по новой. Результат - значительный speed up.


Это редкий случай. А вообще практически везде все по новой строится.
_________________
Космос.Таинственный космос. Почему же он нас так тянет к себе.
    Добавлено: 02:48 24-07-2004   
Dark Archon
 231 EGP


Репутация: 56
Сообщения: 389
Откуда: Moscow Federation
Зарегистрирован: 27.05.2004
Ok, это конечно интересные дебаты мы тут развели, но немного отвлеклись от темы вопроса, а спрашивалось о бесконечности космоса vs конечности 3D пространства. И так по теме:
Я склонен утверждать, что бесконечность космоса смоделировать на компьютере невозможно, по причине ограничености носителей информации. Можно ее (бесконечность) только имитировать большими, но все же ограничеными пространствами. Допустим мы как раз пытаемся сделать сию имитацию. Все объекты, имеющиеся в нашей "конечной-бесконечной" Вселенной, прорисовывать и вообще загружать нет смысла, так как все равно видно только те, что находятся на расстоянии видимости. Обозначим это расстояние L. Значит нам нужно загружать и рисовать лишь те объекты, что находятся не далее чем L от корабля. На немного большем расстоянии, скажем L+a, нужно вывесить текстуру звездного пейзажа. Делаем это при помощи сферы радиусом L+a с центром в точке наблюдения. Тоесть, мы имеем графическую координатную систему - куб, в центре которого находится наш космический корабль и вписаная сфера с текстурой звезд, туманностей и т.п. фигни, эта сфера определяет также видимую область космического пространства и все видимые объекты находятся внутри нее. Этот куб графического (прорисовываемого) пространства, движется вместе с кораблем относительно гораздо большего логического координатного пространства, в котором прописано расположение всех объектов нашей "конечной-бесконечной". По мере движения, как только некий объект входит в видемую область - его подгружают и начинают рисовать. Соответственно когда объект выходит из этой области - его более не рисуют и убирают из памяти. Такой метод может позволить не делить космос на сектора, а врата оставить как опцию быстрого передвижения. Логическое координатное пространство может быть очень большим, но все же не бесконечным, по той простой причине, что координаты объектов представлены переменными, будь то float или double, имеющими строго определенные области значений:
максимальное значение для float = 3.402823466e+38F
максимальное значение для double = 1.7976931348623158e+308
Для решения этого ограничения можно логическое координатное пространство сделать динамичным, т.е. оно будет двигатся вместе с кораблем и графическим пространством если надо - до бесконечности, а объекты в нем будут генерироватся или убиратся по мере продвижения и тоже до бесконечности. Это была бы почти идеальная имитация бесконечности, еслибы не одно "но": если после долгого полета вернутся назад - там все будет по-другому, так как сгенерируется по-новой. Сохранять информацию об изученых участках Вселенной нельзя, так как подразумевается что она бесконечна, а носители информации, как уже говорилось - нет.
Можно конечно почесать затылок и придумать еше какой-нибудь трюк, но на 100% решить это все равно не удастся, а главное - нужно ли? Можно смоделировать хоть и ограниченое, но большое, даже огромное пространство, которое игрок просто опухнет изучать. А нафига ему (игроку) еще и бесконечность? В конце концов, жизнь игрока тоже явление не бесконечное, так нужно ли придумывать ему бесконечное развлечение? Подмигиваю
_________________
   o
_/0\_
 < >  КУ!
    Добавлено: 04:42 24-07-2004   
NetImperia
 200 EGP


Репутация: 15
Сообщения: 539
Откуда: Санкт-Петербург
Зарегистрирован: 23.08.2002
Dark Archon
Ты полностью прав что все ограничивается только в том что места не хватит на Винчестере и памяти. А если создавать и уничтожать все объекты будут пропадать при возвращении.
_________________
Космос.Таинственный космос. Почему же он нас так тянет к себе.
    Добавлено: 11:15 24-07-2004   
Dark Archon
 231 EGP


Репутация: 56
Сообщения: 389
Откуда: Moscow Federation
Зарегистрирован: 27.05.2004
2NetImperia: Спасибо за поддержку Улыбка

Все, что выше мною написанно - сильно утрированно и при реализации все гораздо сложнее, но вполне реально. Надеюсь, что LK почерпнет из этого полезную для его заморочки инфу Подмигиваю
_________________
   o
_/0\_
 < >  КУ!
    Добавлено: 11:27 24-07-2004   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
>Dark Archon
"Вселенной, прорисовывать и вообще загружать нет смысла, так как все равно видно только те, что находятся на расстоянии видимости. Обозначим это расстояние L. Значит нам нужно загружать и рисовать лишь те объекты, что находятся не далее чем L от корабля. На немного большем расстоянии, скажем L+a, нужно вывесить текстуру звездного пейзажа."

Т.е. что корабль в 10м, что планета в 12000000м размерами, выпрыгивают на экран, на дистанции L? Подмигиваю
С кораблём ладно, а вот двенадцатимегаметровая сфера проявляющаяся из подпространства (т.е. из-за сферы с текстурой звёздного неба), это феерическое зрелище... Улыбка
_________________
У меня бисера не доxеpа.
    Добавлено: 07:48 26-07-2004   
NetImperia
 200 EGP


Репутация: 15
Сообщения: 539
Откуда: Санкт-Петербург
Зарегистрирован: 23.08.2002
Shirson :
>
Т.е. что корабль в 10м, что планета в 12000000м размерами, выпрыгивают на экран, на дистанции L? Подмигиваю
С кораблём ладно, а вот двенадцатимегаметровая сфера проявляющаяся из подпространства (т.е. из-за сферы с текстурой звёздного неба), это феерическое зрелище... Улыбка


Не совсем. Чем ты дальше от объекта тем меньше ты его просто рисуешь. Некоторые объекты в играх такие как планеты обязательы к прорисовке если ты не настолько далеко от нее что ее не видно уже. А вот все остальные объекты дальше чем N не рисуются.
_________________
Космос.Таинственный космос. Почему же он нас так тянет к себе.
    Добавлено: 09:24 26-07-2004   
VMS
 108 EGP


Репутация: 2
Сообщения: 615
Откуда: г.Медногорск Оренбургской обл.
Зарегистрирован: 03.06.2002
2 Dark Archon
Цитата:
объекты в нем будут генерироватся или убиратся по мере продвижения и тоже до бесконечности. Это была бы почти идеальная имитация бесконечности, еслибы не одно "но": если после долгого полета вернутся назад - там все будет по-другому...

В FFE, звездные системы, за редким искдючением, генерируются, и после возвращения находятся там-же где ты их оставил. Подмигиваю
    Добавлено: 13:31 26-07-2004   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
NetImperia :
Не совсем. Чем ты дальше от объекта тем меньше ты его просто рисуешь. Некоторые объекты в играх такие как планеты обязательы к прорисовке если ты не настолько далеко от нее что ее не видно уже. А вот все остальные объекты дальше чем N не рисуются.

В указанной концепции это неосуществимо.
Все объекты, находящиеся дальше L+a не видны, независимо от размеров.
_________________
У меня бисера не доxеpа.
    Добавлено: 13:54 26-07-2004   
Канал Игры Мечты: «К вопросу о гранях, рёбрах, и вершинах вселенной :-)»
На страницу: 1, 2, 3, 4, 5  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Пока летишь от станции до станции - почистишь картошку, закупился - полетел дальше - сварил суп. Почти полный перенос космической жизни в реал... (Blinder)

  » К вопросу о гранях, рёбрах, и вершинах вселенной :-) | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18