ENG Новый сайт

Расширенный поиск
[ Новые сообщения · Пользователи · Правила ]
  • Страница 1 из 1
  • 1
Движение
ZmejGДата: Суббота, 01.09.2012, 13:13 | Сообщение # 1
Нет аватара
Наблюдатель
Группа: Новички
Эстония
Сообщений: 1
Награды: 0
Статус: Offline
Здравствуйте,

Пользватель SHVV рассказал в статье на Хабре о базовых принципах привязки обьектов к их координатам в дереве, но у меня сложилось впечатление, что в целом карта неба статична. Т.е. объект (типа галактики) имеет фиксированую координату. Так ли это? На форуме и сайте не нашёл ответа на вопрос - учитываются ли движения галактик и др. объектов относительно друг друга? В свете развития проэкта как ММО возможно это движение было бы лишним, но зато сильно бы приблизило к реальности астронавигацию.

SpaceEngineerДата: Воскресенье, 02.09.2012, 01:19 | Сообщение # 2
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Звёзды и галактики статичны. Движутся только планеты по орбитам. Для звёзд и галактик реализовать движение почти невозможно по одной простой причине - в SE объект не существует, пока он не виден. А чтобы узнать, виден ли объект, надо сравнить его координаты и координаты камеры (грубо говоря). Но если объект движется, мы не можем узнать его координаты, пока не сгенерируем его с его траекторией и не вычислим куда он прилетел. Со статичными объектами все просто - галактика разбивается на кубики с помощью octree, критерий видимости применяется сразу ко всему кубику, и если он виден, в нём происходит генерация псевдослучайного распределения координат звёзд с использованием координат кубика как сид. Для подвижных объектов надо строить какой-то четырехмерное пространственно-временное дерево, как-то формализовывать траектории звёзд (которые на самом деле чрезвычайно сложные, это не простые окружности вокруг центра галактики), и т.д.

GV_FiQstДата: Воскресенье, 02.09.2012, 01:38 | Сообщение # 3
Строитель Миров
Группа: Команда SE
Украина
Сообщений: 1062
Награды: 3
Статус: Offline
Я так понимаю что каталожне объекты существуют всегда. Значит для них можно описать движение вокруг центра галактики в файле. Теперь процедурные объекты. Они ведь генерируются с помощю сида (семья)? Тогда можно зделать так: Ввести в генерацию еще одну переменную эпоху. Выбрать эпоху на которую и будут генерироватся объекты точнее их даные о движении навколо центра галактики, а потом просто прокрутить время и узнать где сейчас видимый объект а потом его отобразить. когда мы покинули объект то удалить его из памяти, и сгенерировать заново, когда надо, все даные об движении. Так как вся генерация базирована на сиде то у всех будут одинаковые объекты и одинаковые даные о движении.

AMD Phenom II X2 555 3200 MHz;
RAM 4GB 1333 Hz;
ATI Radeon HD 5670 1024 Mb;
ОС Win 7 tabulorasa edition 32 bit
SpaceEngineerДата: Воскресенье, 02.09.2012, 02:11 | Сообщение # 4
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Ключевая фраза здесь эта:

Quote (GV_FiQst)
а потом просто прокрутить время и узнать где сейчас видимый объект а потом его отобразить


А как узнать что объект видимый? Если неизвестно даже, где он в данный момент должен находиться, т.к. он ещё не сгенерирован движом?


GV_FiQstДата: Воскресенье, 02.09.2012, 02:49 | Сообщение # 5
Строитель Миров
Группа: Команда SE
Украина
Сообщений: 1062
Награды: 3
Статус: Offline
По его начальной позиции при начальной эпохе, далеко он не успел убежать за несколько лет. Если уже известна его начальная позиция (которая процедурно задается), и его даные об движении то отобразить объект (сгенерировать сам объект, а не даные про него ) становится обичным делом.

AMD Phenom II X2 555 3200 MHz;
RAM 4GB 1333 Hz;
ATI Radeon HD 5670 1024 Mb;
ОС Win 7 tabulorasa edition 32 bit
MibusДата: Воскресенье, 02.09.2012, 08:34 | Сообщение # 6
Первооткрыватель
Группа: Команда SE
Украина
Сообщений: 301
Награды: 0
Статус: Offline
А если поступить по-другому. Разделить движение на несколько компонентов. Во первых, движение галактик - для начала равномерное и прямолинейное (или будут проблемы с построением октри сталкивающихся галактик?). Во вторых - вращение галактик. В третьих - собственные движения звезд в галактиках. Для генерации объектов разделить генератор объектов и генератор метрики. Т.е. считать галактики газовыми облаками с течениями, вычислять их динамику. Поскольку динамика координат звезд заметна лишь на очень больших промежутках времени эти механизмы можно и разделить. А потом, зная текущее состояние "метрики" галактического пространства, пересчитать реальные координаты звезд. При этом координаты звезд и соответственно их видимость относительно "внутригалактической метрики" можно считать фиксированными. Написал коряво, но надеюсь понять меня всё-таки возможно.

Win7 64 prof, Athlon II x2 256 3.3Mhz, RAM 4GB, GeForce GTS 250 512MB

Сообщение отредактировал Mibus - Воскресенье, 02.09.2012, 08:36
aikixdДата: Воскресенье, 02.09.2012, 13:15 | Сообщение # 7
Нет аватара
Наблюдатель
Группа: Пользователи
Израиль
Сообщений: 11
Награды: 0
Статус: Offline
А зачем вообще задавать звездам движение? Вряд-ли вы будете играть 5-8 тысяч лет, что-бы заметить изменения. А на динамику игры это никак не влияет. Для симулятора такое допущение более чем оправдано. Сделать просто что-бы было, без всякой пользы, это лишнее.
SpaceEngineerДата: Воскресенье, 02.09.2012, 15:16 | Сообщение # 8
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (GV_FiQst)
По его начальной позиции при начальной эпохе, далеко он не успел убежать за несколько лет. Если уже известна его начальная позиция (которая процедурно задается), и его даные об движении то отобразить объект (сгенерировать сам объект, а не даные про него ) становится обичным делом.

Значит начальная позиция и данные о движении уже должны быть в памяти. А теперь представьте галактику, 300 миллиардов звёзд...


GV_FiQstДата: Воскресенье, 02.09.2012, 17:19 | Сообщение # 9
Строитель Миров
Группа: Команда SE
Украина
Сообщений: 1062
Награды: 3
Статус: Offline
Quote (SpaceEngineer)
Значит начальная позиция и данные о движении уже должны быть в памяти. А теперь представьте галактику, 300 миллиардов звёзд...


Да должны бить в памяти но только даные про ближайшие звезды, если удаляемся от звезды на приличное растояние то даные удаляются, и когда приближаемся то генерировать заново, так как все задается сидом то даные будут идентичны


AMD Phenom II X2 555 3200 MHz;
RAM 4GB 1333 Hz;
ATI Radeon HD 5670 1024 Mb;
ОС Win 7 tabulorasa edition 32 bit
SpaceEngineerДата: Воскресенье, 02.09.2012, 22:03 | Сообщение # 10
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (GV_FiQst)
Да должны бить в памяти но только даные про ближайшие звезды, если удаляемся от звезды на приличное растояние то даные удаляются, и когда приближаемся то генерировать заново, так как все задается сидом то даные будут идентичны

Если звёзды движутся, то нельзя определить, какие ближайшие. Для этого надо их все сгенерировать, рассчитать движение, получить координаты в данный момент времени, и сравнить с координатами камеры. Поэтому теряется весь смысл octree, галактику надо генерировать всю, а это пока невозможно.


GV_FiQstДата: Воскресенье, 02.09.2012, 22:18 | Сообщение # 11
Строитель Миров
Группа: Команда SE
Украина
Сообщений: 1062
Награды: 3
Статус: Offline
А если определать какие ближайшие только начальные точки (точки где перебывает объект при начальной эпохе), а потом относительно этих точек генерировать звезды?

AMD Phenom II X2 555 3200 MHz;
RAM 4GB 1333 Hz;
ATI Radeon HD 5670 1024 Mb;
ОС Win 7 tabulorasa edition 32 bit
SpaceEngineerДата: Воскресенье, 02.09.2012, 23:10 | Сообщение # 12
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Звезды движутся с разной скоростью, поэтому при таком подходе будут сгенерированы только звёзды с почти одинаковой скоростью.

GV_FiQstДата: Воскресенье, 02.09.2012, 23:37 | Сообщение # 13
Строитель Миров
Группа: Команда SE
Украина
Сообщений: 1062
Награды: 3
Статус: Offline
Но если его реализовать то работать будет, нет?

AMD Phenom II X2 555 3200 MHz;
RAM 4GB 1333 Hz;
ATI Radeon HD 5670 1024 Mb;
ОС Win 7 tabulorasa edition 32 bit
SpaceEngineerДата: Понедельник, 03.09.2012, 02:13 | Сообщение # 14
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Будет, но неправильно. Зачем это нужно?

Edit: К тому же простым понятием "скорость" не обойдешься, у звёзд есть траектории, причем довольно сложные.


  • Страница 1 из 1
  • 1
Поиск:

>