![]() |
Формат Cam - Версия для печати +- Город Джунов (https://www.gipat.ru/forum) +-- Форум Аддон для Проклятых Земель (https://www.gipat.ru/forum/forum-20.html) +--- Форум Программирование (https://www.gipat.ru/forum/forum-6.html) +--- Темы: Формат Cam (/thread-2112.html) Страницы:
1
2
|
Формат Cam - ELF - 25.06.2004 Решил тут немного поразбираться с форматом CAM. Узнал, что у файла CAM нет заголовка, он разбит на поля по 36 байт. Скорее всего все поля являются float'ами... Скорее всего буду сейчас над ними баловаться... ![]() ------------- Урезал файл mainmenu.cam до 36 байт. Работает нормально! :blink: Скорее всего Нивальцы опять что-то хотели, но недоделали... Узнал, что первые два поля (из девяти в одном блоке) камеру не трогают, остальные её крутят как-то непонятно... может быть, даже по кругу. :ph34r: ------------- Итак, нулевое и первое поля ещё не известны. Поле 2: Смещение на восток; Поле 3: Смещение на север; Поле 4: Смещение в небо. Всё-таки в этих полях перемещение идёт по прямой. ![]() -------------- Поля 5,6,7,8 поворачивают камеру. Но вот делают они это очень не хорошо! :angry: Очень странная тректория поворота камеры. Но всё-таки смог немного разобраться: Поля 7 и 8 делаю поворот в одну сторону (при увеличении камера поворачивается к небу, если смотрела прямо). Если записать в поле 7 ноль, то камера будет смотреть в небо, а если записать в поле 8 ноль, а в поле 7 число (0>xxx>1), то камера будет смотреть на землю. Чтобы камера смотрела прямо, желательно в поле 7 поставить -1, а в поле 8 поставить 1 (скорее всего камера становится в разницу между этими значениями). Поля 5 и 6 ещё кривее предыдущих. Они тоже работают на пару. Если увеличивать эти поля, причём сохранять их равными, то камера будет проворачиваться набок против часовой стрелки. А вот если значения этих полей увеличивать, но при этом сохранять их равными с противоположными знаками, то камера будет поворачиваться, как обычные юниты поворачиваются, только при увеличении значений резко падает чуствительность камеры и её начинает косить (это дело выравнивается подборкой мелкой разницы между абсолютными значениями полей). Хух, я бы лучше понял логику поворота камеры, скорее всего, если бы знал, как обычно в играх реализую работу с камерой. А так вот приходится вертеться. ![]() Смысл первых двух полей я так и не понял. Знаю, что второе поле часто бывает отключено (FF FF FF FF), а в первом гигантское значения записаны, но в разумных пределах для float - скорее всего это ID, или что-то типа номерка... :unsure: Пока на этом работы с форматом CAM останавливаю. Мне удобнее всего их было менять спомощью ArtMoney 7.08 - она файлы править умеет, причём позволяет разбивать файл на поля нужно типа. ![]() Формат Cam - Guest - 06.07.2004 Цитата:Хух, я бы лучше понял логику поворота камеры, скорее всего, если бы знал, как обычно в играх реализую работу с камерой. А так вот приходится вертеться Ключевое слово здесь - кватернионы.В формате cam все сделано четко и логично.Не следует оправдывать собственное незнание кривосью Нивала. Возьми самый большой файл cam (не помню уже его название). На нем удобно проводить изучение. 4 байта - время камеры (если записей положения больше чем 1) 4 байта - хз...не помню что за поле 3 блока по 4 байта - координаты x,y,z 4 блока по 4 байта - кватернион поворота камеры итого 9 блоков по 4 байта и есть наши 36 байт на одну запись положения. Формат Cam - ELF - 06.07.2004 Теперь у меня в плане работ будет ещё и изучение кватернионов (которые, как я понял, относятся к фракталам и комплексным числам, о которых я ничего не знаю). p.s.: про Нивал вообще-то я ничего не говорил. Формат Cam - ALtair - 06.07.2004 ГЫ ) Во-первых, фрактал и комплексные числа - две большие разницы. Во-вторых, кватернион к ним тоже никакого отношения не имеет. З.Ы. Кватернион в данном случае просто набор четырех координат (XYZW). Формат Cam - ELF - 06.07.2004 ALtair, прости, просто я грубо написал, я имел ввиду, что кватернионы относятся к фракталам и комплексным числам по сложности, т.к. всё это высшая математика. Вообще кватернион в данном случае уж точно не координаты описывает (это я сам на собственной шкуре проверял), а именно поворот камеры он описывает. Формат Cam - ALtair - 06.07.2004 В трехмерной геометрии поворот задается координатами вектора поворота, если не ошибаюсь. А вообще в 3Д Графике по идее поворот должен задаваться матрицей. Формат Cam - ELF - 07.07.2004 ALtair, сможешь меня неумного научить эти кватернионы переводить в обычные градусы? ![]() ![]() Формат Cam - ALtair - 07.07.2004 эээ. Если б я сам умел ![]() Формат Cam - Jet - 07.07.2004 yandex, google, Google groups :blink: Формат Cam - Guest - 12.07.2004 Ладно, просто скажу, что хотел вообще придумать алгоритм, который, имея расположение камеры (x,y,z) и точку, куда она должна смотреть, соответственно её повернёт. :unsure: --------------------- Вот, есть две ссылки неплохие по поводу кватернионов: http://algolist.manual.ru/graphics/3dfaq/articles/77.php http://itsoyuz.h10.ru/articles/d3d/quat.html Так вот, там всё довольно подробно объяснено. Нет не у кого желания попробовать реализовать задумку с камерой (по двум точкам)? Я вот уже научился немного делать эти кватернионы. Теперь у меня другая проблема, попробую объяснить её суть: Итак, мы имеет две 3D-точки (x,y,z). Нам нужно сделать так, чтобы камера оказалась в первой точке и смотрела во вторую. Первое, что мне пришло на ум, что нужно задать ось вращения от первой точке ко второй. Эта ось задаётся вектором: VectorAxis ( x2-x1, y2-y1, z2-z1 ) , где x1,y1,z1 - Первая точка; x2,y2,z2 - Вторая. Чтобы переделать ось (Axis) + угол (Angle) вращения в кватернион, нужно провести, как мне кажется, известные рассчёты. Предварительно нужно вектор, который описывает ось сделать единичным - разделить все его компоненты на его же длину. А затем вот: Код: w = cos(Angle/2) Просто, на сайтах, которые я показал, написано наоборот. Проблема заключается в том, что если ось вращения будет пересекать обе 3D-точки (наши), то камера никогда не будет смотреть во вторую точку. Решение этой проблемы я нашёл в том, чтобы развернуть ось на 90% и тогда при определённом углу вращения камера должна будет смотреть во вторую точку. Вот только как повернуть ось на 90%???? Может я вообще не в ту степь лезу? ![]() ![]() Формат Cam - ELF - 12.07.2004 ALtair, а сможешь рассчитать матрицу3x3 поворота по начальной и конечной точке? Просто я нашёл алгоритм, который переводит матрицу в кватернион, но вот теперь задать матрицу проблема. Как ни пытаюсь не пойму. Там в матрице целых три вектора задавать надо, а я могу только один получить по начальной и конечной точкам. Как остальные два вектора найти? ![]() ![]() Формат Cam - ALtair - 13.07.2004 Опять же, пишу по памяти, вполне возможно, что не прав. При простых преобразованиях (поворот, смещение и т.д.), задаваемых матрицами, в самой матрице используется только 4 ячейки. Конфигурация используемых ячеек и функции, подставляемые в ячейки, тебе придется поискать в инете. Формат Cam - Guest - 28.02.2006 Вижу что это давно обсуждалось ![]() ![]() ![]() Кому интересно вот библа , для Blitz3D Которая переводит кватернионы в углы эйлера и обратно ( тут нарисовывается проблема в том что в углах эйлера важены не только координаты угла , но и то в каком порядке поворачивается обьект ) Вот код : Код: ; Quat.bb : v1.0 : 15/11/02 PS Думаю понять его будет нетрудно так как это проктически обычный бейзик . Забыл в предыдущем посте написать ник ![]() ![]() ICQ 272529694 mail conan_fedr_666@mail.ru MSN conan_fedr_666@mail.ru Вообщем вотЪ мне нужна помощь , мой кам вьюер очень глючный , несчитая того что я возможно неправельно пересчитываю координаты , он еще почемуто все камы кроме самого большего несовсем правельно отображает в плане того что видна лиш одна камер , я незнаю изза чего это хотя сбоку в меню отображаются что камер 9 или больше в зависимости от файла , очень странное явление . Вообщем вот мой исходник , тут используются либы quaternions опубликованная выше и XUI2 либа интерфейса . Прошу вас посмотреть и порекомендовать все что можно от координат и угла до того как правельнее организовать интерфейс и глючащих камер ![]() ![]() ![]() ![]() Исходник : Код: ; Включения Блиин у вас низя гостям циплять файлы , ну лана закачаю на фтп ... Вот сцылко на архив с прогой : http://www.cool.hut1.ru/XUI2_Demo_Release_05-08-20.rar PS Очень нужна помощь ![]() Опять забыл ![]() W - поворот камеры вверх S - поворот камеры вниз Up - Передвежение камеры вперед Down - Передвежение камеры назад Left - поворот камеры в лево Right - поворот камеры в право Alt + Left Mouse Button - Произвольное вращение камеры Формат Cam - SnAIper - 01.03.2006 2ELF "Quaternion {x, y, z, w}" - не верно! Всё работает на WXYZ-настройках. Проблемма редактора камов полностью решена вчера - 18 фефраля 2006 года, да будет памятен этот день %) И спасибо некоторым личностям, которые сильно помогли это сделать. PS: Из скрина видно, что камера настроена как надо ![]() Формат Cam - ConanFedr - 01.03.2006 Снайп ![]() ![]() ![]() PS КалбасКа злой редиска ![]() Формат Cam - ConanFedr - 01.03.2006 2MerkuiY Снайп невиноват что он неможет дать редактор все , хотя незнаю хочит он этого или нет ![]() КалбасКа злой редиска ![]() Формат Cam - SnAIper - 02.03.2006 Руки есть? Комп в порядке? Формат кама известен? Формулы рабочие есть? Кватерион считать умеем? С 3-д программингом знаком? Буфер данных обрабатывать умеешь? --------------------------------------------------? Так что орать на Калбаса, если ты и сам можешь? А если не можешь сам - так что винить в этом других? Формат Cam - Jack - 02.03.2006 Как говорится... "Если ты ни на что не способен! - Ты ничего не должен хотеть" Формат Cam - SnAIper - 02.03.2006 "Но тебе то пох должно быть =)" По себе людей не судят. Я вот написал там маленький списочек вопросов. Вот пусть тот, кто намеревается сделать эдитор ответит отрицательно хоть на 1 вопрос до разделителя - тогда и будем разбираться. А пока - вперёд и с песней Формат Cam - ConanFedr - 02.03.2006 Я непонял чо тут все на меня наезжают ? ![]() У меня тоже есть camEditor уже рабочий ![]() Ну раз вы меня так благадарите у меня вся охота работать отпадает ... 2Jack Мне интересно кому ты это сказал ? PS Вообщето когда на когото наезжают на форуме принято писать 2ник_пациента |