ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Структура данных X-Tension | страница 3 |
|
|
|
Канал X-Tension/X-BTF: «Структура данных X-Tension» |
|
|
Рыб 1242 EGP
Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001 |
|
Так, не знаю как в 3D-моделировании, но в DX есть следующие типы источников света (взято из DX SDK, проверенно на простых сценах):
1. Точечный - светит во все стороны относительно себя.
2. Прожектор - из названия понятно.
3. Направленный свет - принцип этого типа в том, что он "светит" абсолютно параллельными лучами в едином направлении во всём объёме сцены. И именно этот тип разумно применять, когда рассматривается мизерный участок космоса относительно оооочень далёкой (относительно размеров рассматриваемого участа) зведы, которая является источником освещения.
Звёзды в XT, которые находятся в секторах, по моим наблюдениям вообще не светят, а просто есть для видимости и при этом все объекты сектора (где бы ты их не расположил) всегда равномерно освещены с одной стороны и направление этого освещения никак не связано с расположением звёзд, вывод - есть единый направленный (3) источник света для всего сектора.
P.S.: насчёт звёзд в секторе могу ошибаться, но было бы абсурдно задавать звезду как источник освещения, когда эта "звезда" находится от центра сектора на расстоянии 900 километров . К тому же добавление каждого нового источинка освещения в сцену даёт значительный и ощутимый прирост тормозов при прорисовке объектов, так что скорее всего освещение сектора собирается из:
1. Единый источник типа (3) для сектора, возможно, чётко преопределённый и одинаковый для всех секторов. Может определяется по некому псевдослучайному алгоритму, основанному на координатах сектора.
2. Пространственный свет, собираемый из RGB-составляющих звёзд, присутствующих в секторе.
P.P.S: задавать реальную модель звёздной системы, т.е. звезда и планета расположенная в нескольких миллионах километрах от неё процесс простой если не нужна детализации. А вот если нужно задать звезду и на расстоянии 2млн километров от неё детализировать сектор с точностью до метра, то тут возникает серьёзная проблема, просто потому, что даже значений типа double становится недостаточно для задания координат объектов (с порядком проблем нет - точности не хватает).
|
|
|
Shaddie 556 EGP
Рейтинг канала: 6(438) Репутация: 118 Сообщения: 261 Откуда: Томск Зарегистрирован: 09.09.2004 |
|
Argonaut : |
P.S. Расстояние = SQRT((X1-X2)^2 + (Y1-Y2)^2 + (Z1-Z2)^2)
|
Дааа опечаточка
Рыб : |
Звёзды в XT, которые находятся в секторах, по моим наблюдениям вообще не светят, а просто есть для видимости. Но при этом все объекты сектора (где бы ты их не расположил) всегда равномерно освещены с одной стороны, вывод - есть единый направленный источник света для всего сектора.
|
Полность согласен.
Кстати нужно уточнить с какой стороны освещены объекты. Если мне не изменяет память то с южной.
|
|
|
Рыб 1242 EGP
Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001 |
|
Shaddie : |
Кстати нужно уточнить с какой стороны освещены объекты. Если мне не изменяет память то с южной.
|
В Триумфе Бреннана вроде как с восточной или северо-восточной .
|
|
|
Shaddie 556 EGP
Рейтинг канала: 6(438) Репутация: 118 Сообщения: 261 Откуда: Томск Зарегистрирован: 09.09.2004 |
|
Рыб : |
В Триумфе Бреннана вроде как с восточной или северо-восточной .
|
Может быть, и в правду где-то задан вектор направления освещенности сектора. Нужно
Кстати про Триумф Бреннана.
В этом секторе есть разрушенные ворота (находится по-моему прямо в центре сектора). Так вот расшифровал блок данных этого сектора и оказалось, что данных по этому объекту там нет. Если поменять, к примеру, координаты секторов Стена и Триумф Бреннана, то когда прилетим в сектор Стена (который на самом деле будет уже сектором Триумф Бреннана), разрушенных ворот не будет. То есть этот объект добавляется по тому же принципу, что и сектора Гетсу Фан и Вражеский сектор.
Кстати это добавление, я думаю, происходит после генерации из основного блока данных.
|
|
|
Argonaut 260 EGP
Рейтинг канала: 1(9) Репутация: 43 Сообщения: 185 Откуда: Челябинск Зарегистрирован: 27.04.2004 |
|
Вчера-сь продолжил мучить карту. Вот что было проделано:
1. В секторе "Стена (The Wall)" установил восточные ворота, а в секторе "Легенда Фархама (Farnham's Legend)" западные ставить не стал.
Влетел. Очутился в секторе "Легенда...". Вот именно, что только очутился. Похоже, даже без корабля. Сектор - есть. Все объекты - тоже. Карты обе отображаются. Но я стою в воротах и ни гу-гу (корабль застрял ). Ворота, из которых я вылетел , даже отобразились. Точнее, были видны справа и слева их "усы". И все! Очень похоже на ситуацию, когда я пытался улететь "влево" из сектора "Шахты Императора". Только вместо белого экрана просматривался сектор. Через некоторое время игра жестко зависла.
Где-то еще хранится информация о воротах для карты галактики. Либо прописаны связи между секторами. Так как ворота не отобразились.
Интересно, а если бы я все-таки установил запаные ворота, этот проход был бы виден? Кто-нить пробовал?
2. В секторе "Danna's Chance" - южные ворота, в "Preacher's Refuge" - северные. (а вдруг перепрыгнет? )
В итоге, влетел в пустой сектор [4,7]. Пространственный тонель не получился. Зависона дожидаться не стал, вышел скорее из игры (виснет не сразу, а только после нескольких команд: типа "просмотр карты", "персональная инфа" и т.п.).
To Рыб:
да, я с тобой полностью согласен по всему выше описанному.
Просто я тебя не понял ( I - ), думал ты о "прожекторе" говоришь . Да, на самом деле там используется направленный с параллельными лучами (что-то ваще я про этот тип забыл). Причем, вчера чуток полетал, направление света либо с юго-востока (Ю-В), либо с С-З.
Звезды не являются источниками света, но расположены с той же стороны, откуда "идет" освещение.
_________________ Объявление
Отдам малыша Ксенона в хорошие руки. Денег не предлагать. |
|
|
Shaddie 556 EGP
Рейтинг канала: 6(438) Репутация: 118 Сообщения: 261 Откуда: Томск Зарегистрирован: 09.09.2004 |
|
Argonaut : |
Где-то еще хранится информация о воротах для карты галактики. Либо прописаны связи между секторами. Так как ворота не отобразились.
Интересно, а если бы я все-таки установил запаные ворота, этот проход был бы виден? Кто-нить пробовал?
|
Я пробовал проделать тоже самое для этих же секторов. Если ты поставишь западные ворота в секторе Farnham's Legend, то корабль не застрянет и на обеих картах все будет отображаться нормально. Связь между двумя секторами (на галактической карте) формируется при совпадении ворот (например, восток-запад), при соблюдении условия: оба сектора находятся в области стандартных секторов.
Argonaut : |
Да, на самом деле там используется направленный с параллельными лучами (что-то ваще я про этот тип забыл). Причем, вчера чуток полетал, направление света либо с юго-востока (Ю-В), либо с С-З.
Звезды не являются источниками света, но расположены с той же стороны, откуда "идет" освещение.
|
Вчера изменил координаты для солнц в системе Argon Prime. То, которое скрыто планетами, поместил на восток, а другое, южное, поместил строго в северо-восточный угол сектора (на расстояние от центра сектора 40 км.). В итоге получилось, что направление освещения изменилось и стало не с юга, а где-то с северо-востока. Еще возникло подозрение, что направление освещенности рассчитывается с учетом всех солнц, источником света является солнце и этот источник точечный. Так, когда я крутился вокруг т.н. солнца освещенность корабля менялась, и центром освещения являлось солнце.
Рыб прав. Солнце представляет собой нематериальную точку в пространстве, через которую можно пролететь.
Надо будет попробовать поместить солнце между двумя станциями и посмотреть как они освещаются.
По поводу расстояний: выбрал северные ворота и полетел к южным, при начале прыжка расстояние до северных ворот было 64,4 км. Вопрос, как определили что между воротами 64 км?
|
|
|
Рыб 1242 EGP
Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001 |
|
Shaddie : |
Вопрос, как определили что между воротами 64 км?
|
Очень просто.
Ты прямо в игре можешь с точностю до "миллиметра" увидеть положение любого объекта в секторе (координаты и направление), указанное во внутренних единицах игры. Координаты - в единицах, направление - в градусах (0-360) относительно каждой из осей (X, Y, Z).
Для того, что бы увидеть точные данные по своему кораблю - просто вися в космосе нажми F2, будет выброшена камера для слежки за твоим кораблёи и слева будет столбик чисел с полной инфой по положению твоего корабля.
Для того, что бы увидеть координаты любого объекта - наведи прицел на этот объект и запусти к нему камеру кнопкой F3.
|
|
|
Рыб 1242 EGP
Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001 |
|
Shaddie : |
этот источник точечный. Так, когда я крутился вокруг т.н. солнца освещенность корабля менялась, и центром освещения являлось солнце
|
А ведь может и так, может и в самом деле каждое солнце является точечным источником света и вся сцена рассчитывается с учётом всех солнц сектора . С точки зрения здравого смысла - абсурд, но в XT с "физикой" много где именно так .
|
|
|
Shaddie 556 EGP
Рейтинг канала: 6(438) Репутация: 118 Сообщения: 261 Откуда: Томск Зарегистрирован: 09.09.2004 |
|
Рыб ты не понял . Я имел ввиду: как определили, что расстояние между воротами именно 64 км. (в смысле есть ли еще какой способ определить расстояние до объекта в километрах, кроме как выбора его целью). А ты мне про 7200000*2 УЕ. Ты думал я про F2 и F3 не знаю ?
|
|
|
Рыб 1242 EGP
Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001 |
|
А зачем ещё какой-то способ? Этот вроде максимально точный и понятный, а эти "км" они ведь получаются только для отображения именно из этих внутренних единиц и нет гарантии, что там не стоит какое-нить округление или отбрасывание.
|
|
|
Shaddie 556 EGP
Рейтинг канала: 6(438) Репутация: 118 Сообщения: 261 Откуда: Томск Зарегистрирован: 09.09.2004 |
|
Ну, если нет другого способа тогда расстояние между воротами 64.4 (приблизительно). Я к чему это выясняю: если точно знать, сколько попугаев в одном метре или километре, то можно попробовать найти этот коэффициент в программе.
Просьба to all, сообщите координаты станций (или станции) из сектора Гетсу Фан.
|
|
|
Рыб 1242 EGP
Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001 |
|
Вариант:
1. Встать в точку паралельно какой-нить оси.
2. Выбросить спутник.
3. Навести прицел на спутник и запомнить расстояние в 'm'.
4. Отлететь от спутника прямо по оси на, скажем, 100m.
5. Выбросить второй спутник.
6. Посмотреть разницу кординат спутников по оси, параллельно которой двигались.
7. Вычислить соответствие между 100m и разницей в единицах по оси.
P.S.: я на работе, XT тут нет, так что самом не проверить.
Метод не даст 100%-й точности. Это факт, потому как один метр это где-то пара сотен единиц игры, и в пока двигаешься в рамках этих пар сотен, расстояние в метрах не меняется.
Кста, а зачем вообще нужны эти округлённые "метры" ? Во внутренних структурах все координаты задаются во внутренних единицах, мы знаем направление осей сектора и размер сектора во внутренних единицах, соответственно может точно задавать координаты любых объектов и искать объекты по координатам безо всяких коэффициентов перевода координат.
|
|
|
Shaddie 556 EGP
Рейтинг канала: 6(438) Репутация: 118 Сообщения: 261 Откуда: Томск Зарегистрирован: 09.09.2004 |
|
Рыб : |
Это факт, потому как один метр это где-то пара сотен единиц игры, и в пока двигаешься в рамках этих пар сотен, расстояние в метрах не меняется.
|
Рыб ты опять прав. Точно это коэффициент мы не определим, хотя если исходить из соображения что этот коэф. имеет целое значение и он для одного метра, то он равен 223.
Появилась следующая мысль, а что если непонятные байты в идентификаторе сектора отвечают за музыкальную тему сектора (интересно сколько разных музыкальных тем в )? Насколько я помню музыка в каждом секторе вроде одна и та же. Правда проверить будет трудновато: у меня слух не музыкальный, да и музыка в X-Tension похожая. Хотя можно все dat файлы заменить на песни .
|
|
|
Рыб 1242 EGP
Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001 |
|
У меня получилось 225 единиц на метр.
По идее музыка к сектору должна быть привязана вполне определённая. Возможно, идентификаторы музыкальных файлов хранятся по их номерам, которые являются названиями этих файлов в каталоге mov.
|
|
|
Argonaut 260 EGP
Рейтинг канала: 1(9) Репутация: 43 Сообщения: 185 Откуда: Челябинск Зарегистрирован: 27.04.2004 |
|
Shaddie : |
в смысле есть ли еще какой способ определить расстояние до объекта в километрах, кроме как выбора его целью
|
= Карта сектора : ее масштаб (там указан)
Я же писАл уже: у мну получалось 2 коэффициента. 225 и ~223.
225 - это если считать из того, что между вратами 64 км (а я более склонен к этой цифре).
223 - это значение из показаний радара (до объекта) - вычисляем по закону Пифагора.
Вполне возможно, что используются 2 алгоритма. И один из них с округлением или еще с чем. Скорее всего, потеря точности происходит при возведении во вторую степень и вычислении квадратного корня, причем в реальном времени. Возможно, считают упрощенным методом. (а может складывать не умеют прально? ).
Рыб : |
Кста, а зачем вообще нужны эти округлённые "метры" ? Во внутренних структурах все координаты задаются во внутренних единицах, мы знаем направление осей сектора и размер сектора во внутренних единицах, соответственно может точно задавать координаты любых объектов и искать объекты по координатам безо всяких коэффициентов перевода координат.
|
Действительно, зачем?
_________________ Объявление
Отдам малыша Ксенона в хорошие руки. Денег не предлагать. |
|
|
Shaddie 556 EGP
Рейтинг канала: 6(438) Репутация: 118 Сообщения: 261 Откуда: Томск Зарегистрирован: 09.09.2004 |
|
Зачем нужно знать, сколько УЕ в метре?
Ну, например, в редакторе карты X-tension (который в принципе уже можно сделать) необходимо посмотреть расстояние между объектами в километрах, так как большинству пилотов удобнее будет редактировать карту именно в километрах, а не в УЕ.
|
|
|
Shaddie 556 EGP
Рейтинг канала: 6(438) Репутация: 118 Сообщения: 261 Откуда: Томск Зарегистрирован: 09.09.2004 |
|
Данные по сектору Гетсу Фан хранятся в файле 001.obj, данные по вражескому сектору (на север от Гетсу Фан) думаю, находятся там же.
Спасибо пилоту star_kopcap за предоставленные координаты объектов из сектора Гетсу Фан.
Координаты и адреса данных объектов:
_______________________________XXXXXXX____YYYYYYY____ZZZZZZZ___Offset begin:Offset end
Док оборудования Сплита________2850000___-2700000____-200000___1A2684:1A290D
Док оборудования Телади________5700000___-1130000___-1400000___1A290E:1A2C03
Док оборудования Паранида____________0___-4100000_____800000___1A2C04:1A2EF7
Док оборудования Аргона_______-5700000___-1130000___-1400000___1A2EF8:1A31B3
Док оборудования Борона_______-2850000___-2700000____-200000___1A31B4:1A3489
Фабрика щитов 125МВ (Аргон)____9140000___-5060000____2170000___1A348A:1A35C1
...
Железный рудник (13)__________-1267800___-1767600____1439400___
Железный рудник (93)___________2951400____1729800____-296400___1A35E0:1A35FF
Кремниевый рудник (25)________-2735400____-125400___-1265400___
...
Торговая станция Борон________-2300000___-1870000_____160000___1A3BF6:1A3E65
|
|
|
Argonaut 260 EGP
Рейтинг канала: 1(9) Репутация: 43 Сообщения: 185 Откуда: Челябинск Зарегистрирован: 27.04.2004 |
|
А "заголовок" данного сектора там есть?
Его описание совпадает с общей структурой?
Интересно, как потом добавляются ворота, для "влета" в него.
_________________ Объявление
Отдам малыша Ксенона в хорошие руки. Денег не предлагать. |
|
|
Рыб 1242 EGP
Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001 |
|
Взял в прицел южные врата и поставил корабль в точку (0, 0, 0), было показано странное расстояние - 32.3km, врата находились в 7.200.000. Теперь совсем ничего непонятно, потому как если предположить, что в одном метре 225 единиц, то расстояние от центра до врат должно быть ровно 32km. Если предположить, что в одном метре 223 единицы, то получается, что расстояние до врат должно отображаться как 32.29km, потому как при делении получается 7200000/223 = 32.2869955~, а округление в игре идёт до сотых, т.е. расхождение получается ровно на 0.01km.
В любом случае получается, что скорее 223, чем 225, но опять же с некоторой погрешностью непонятно чем обусловленной.
Могу предположить, что при делении целочисленного 7200000 на некий коэффициент 223 комп даёт несколько иной результат при приведении результата деления к double или float, чем мой калькулятор. Ещё вполне возможно, что там не 223 в чистом виде, а какая-нибудь формула и погрешность получается за счёт того, что она накапливается на каждом шаге вычисления.
|
|
|
Рыб 1242 EGP
Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001 |
|
Нашёл странную инфу, нашёл в факе по XT, не знаю кто был источником этой инфы, но сказано следующее ...
внутри игры все расстояния меряются в единицах. 9 метров это 2000 единиц
... но у меня всё равно не сходится, потому как если составить пропорцию, то получается, что расстояние от точки (0, 0, 0) до точки (7200000, 0, 0) должно быть L = 7200000*9/2000 = 32.4km, причём получается ровно, без округлений и независимо от порядка выполнения операций, но радар при этом упорно показывает ровно 32.3km .
|
|
|
|
|
|
Канал X-Tension/X-BTF: «Структура данных X-Tension» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: Зашёл в тему и сразу, сходу кликнул в первый вариант, просто потому что первый он, потом почитал, чего и как, понял, что чего-то не то нажал. (обнаружил Рыб)
|
» Структура данных X-Tension | страница 3 |
|