[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
Форум » Моддинг » 6.1. Остальные уроки » Декодируем Xom, Тип за типом... шаг за шагом... (Собираю группу психов не жалеющих свое время и мозги...)
Декодируем Xom, Тип за типом... шаг за шагом...
DrHitman27
Админы
Сообщений: 2115
Реп: 52
Quote (AlexBond)
эффекты или сами модели?

эффекты( точней ссылки к ним) эффекты главного меню описаны в .xml файле, если удалить модель меню эфекты собирутся в 1 точке


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Так продолжу XImage декодирование:

64x64x32 type 1

Code
00 00 00 C8 10 40 00 40
00 01 00 02 00 01 00 01
00 00 01 00 00 00 00 01
00 00 00 80 80 01

64x64x24 type 7

Code
00 00 00 04 40 00 40 00
07 00 00 00 07 C0 00 00
00 60 00 00 00 30 00 00
00 18 00 00 00 0C 00 00
00 06 00 00 00 03 00 00
00 07 00 00 00 00 00 30
00 00 00 3C 00 00 00 3F
00 00 C0 3F 00 00 F0 3F
00 00 FC 3F 00 00 00 00
00 00 FF 7F

32x32x32 type 6

Code
00 00 00 08 20 00 20 00
06 00 00 00 06 60 00 00
00 30 00 00 00 18 00 00
00 0C 00 00 00 06 00 00
00 03 00 00 00 06 00 00
00 00 00 0C 00 00 00 0F
00 00 C0 0F 00 00 F0 0F
00 00 FC 0F 00 00 00 00
00 00 FF 1F

32x32x32 type 1

Code
00 00 00 F7 03 20 00 20
00 01 00 02 00 01 80 00
00 00 01 00 00 00 00 01
00 00 00 80 20

128x128x24 type 8

Code
00 00 00 54 80 00 80 00
08 00 00 00 08 80 01 00
00 C0 00 00 00 60 00 00
00 30 00 00 00 18 00 00
00 0C 00 00 00 06 00 00
00 03 00 00 00 08 00 00
00 00 00 C0 00 00 00 F0
00 00 00 FC 00 00 00 FF
00 00 C0 FF 00 00 F0 FF
00 00 FC FF 00 00 00 00
00 00 FF FF

128x128x32 type 8

Code
00 00 00 FA 02 80 00 80
00 08 00 02 00 08 00 02
00 00 00 01 00 00 80 00
00 00 40 00 00 00 20 00
00 00 10 00 00 00 08 00
00 00 04 00 00 00 08 00
00 00 00 00 00 01 00 00
40 01 00 00 50 01 00 00
54 01 00 00 55 01 00 40
55 01 00 50 55 01 00 01
00 00 00 D4 AA 05

256x256x32 type 9

Code
00 00 00 7F 00 01 00 01
09 00 00 00 09 00 03 00
00 80 01 00 00 C0 00 00
00 60 00 00 00 30 00 00
00 18 00 00 00 0C 00 00
00 06 00 00 00 03 00 00
00 09 00 00 00 00 00 00
03 00 00 C0 03 00 00 F0
03 00 00 FC 03 00 00 FF
03 00 C0 FF 03 00 F0 FF
03 00 FC FF 03 00 00 00
00 00 FF FF

256x256x24 type 1

Code
00 00 00 81 06 00 01 00
01 01 00 00 00 01 00 03
00 00 01 00 00 00 00 00
00 00 00 80 80 0C

8x8x24 type 1

Code
00 00 00 EF 09 08 00 08
00 01 00 00 00 01 18 00
00 00 01 00 00 00 00 00
00 00 00 C0 01

128x64x32 type 1

Code
00 00 00 B5 11 80 00 40
00 01 00 02 00 01 00 02
00 00 01 00 00 00 00 01
00 00 00 80 80 02

16x32x32 type 1

Code
00 00 00 AA 01 10 00 20
00 01 00 02 00 01 40 00
00 00 01 00 00 00 00 01
00 00 00 80 10

Надеюсь этого хватит для анализа....


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8

64x64x32 type 1

Code
00 00 00 C8 10 40 00 40
00
01 00 02 00 01 00 01
00 00
01 00 00 00 00 01
00 00 00 80 80 01

64x64x24 type 7

Code
00 00 00 04 40 00 40 00
07 00 00 00 07 C0 00 00
00
60 00 00 00 30 00 00
00
18 00 00 00 0C 00 00
00
06 00 00 00 03 00 00
00
07 00 00 00 00 00 30
00 00 00 3C 00 00 00 3F
00 00 C0 3F 00 00 F0 3F
00 00 FC 3F 00 00
00 00
00 00 FF 7F

32x32x24 type 6

Code
00 00 00 08 20 00 20 00
06 00 00 00 06 60 00 00
00 30 00 00 00 18 00 00
00 0C 00 00 00 06 00 00
00 03 00 00 00
06 00 00
00 00 00 0C 00 00 00 0F
00 00 C0 0F 00 00 F0 0F
00 00 FC 0F 00 00
00 00
00 00 FF 1F

32x32x32 type 1

Code
00 00 00 F7 03 20 00 20
00
01 00 02 00 01 80 00
00 00
01 00 00 00 00 01
00 00 00 80 20

128x128x24 type 8

Code
00 00 00 54 80 00 80 00
08 00 00 00 08 80 01 00
00
C0 00 00 00 60 00 00
00 30 00 00 00 18 00 00
00 0C 00 00 00 06 00 00
00 03 00 00 00
08 00 00
00 00 00 C0 00 00 00 F0
00 00 00 FC 00 00 00 FF
00 00 C0 FF 00 00 F0 FF
00 00 FC FF 00 00
00 00
00 00 FF FF

128x128x32 type 8

Code
00 00 00 FA 02 80 00 80
00
08 00 02 00 08 00 02
00 00 00 01 00 00 80 00
00 00 40 00 00 00 20 00
00 00 10 00 00 00 08 00
00 00 04 00 00 00
08 00
00 00 00
00 00 01 00 00
40 01 00
00 50 01 00 00
54 01 00
00 55 01 00 40
55 01 00
50 55 01 00 01
00 00 00 D4 AA 05

256x256x24 type 9

Code
00 00 00 7F 00 01 00 01
09 00 00 00 09 00 03 00
00 80 01 00 00 C0 00 00
00 60 00 00 00 30 00 00
00 18 00 00 00 0C 00 00
00 06 00 00 00 03 00 00
00
09 00 00 00 00 00 00
03 00 00 C0 03 00 00 F0
03 00 00 FC 03 00 00 FF
03 00 C0 FF 03 00 F0 FF
03 00 FC FF 03 00
00 00
00 00 FF FF

256x256x24 type 1

Code
00 00 00 81 06 00 01 00
01
01 00 00 00 01 00 03
00 00
01 00 00 00 00 00
00 00 00 80 80 0C

8x8x24 type 1

Code
00 00 00 EF 09 08 00 08
00
01 00 00 00 01 18 00
00 00
01 00 00 00 00 00
00 00 00 C0 01

128x64x32 type 1

Code
00 00 00 B5 11 80 00 40
00
01 00 02 00 01 00 02
00 00
01 00 00 00 00 01
00 00 00 80 80 02

16x32x32 type 1

Code
00 00 00 AA 01 10 00 20
00
01 00 02 00 01 40 00
00 00
01 00 00 00 00 01
00 00 00 80 10


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
32x32x24 type 6


Code
00 00 00 08 20 00 20 00
06 00 00 00 06 60 00 00
00 30 00 00 00 18 00 00
00 0C 00 00 00 06 00 00
00 03 00 00 00
06 00 00
00 00 00 0C 00 00 00 0F
00 00 C0 0F 00 00 F0 0F
00 00 FC 0F 00 00
00 00
00 00 FF 1F

Итак, из того что я тут понавыделял, видно что XImage выглядит так:

Quote

Name | Width| Height | MapNum | Type | WidthLenNum
------WidthLen N------
WidthLen = Width*Bytes[Type] - ширина картинки в байтах
-------------------------
OffsetMapNum
------OffsetMap N------
OffsetMap
-------------------------
? | ?


Осталось два последних значения расшифровать....



 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Раскодировал!!!! Последние два значения:
1 - наличие альфа канала
2 - Размер XImage в полубайтном формате

Теперь увеличилась скорость листания картинок, и загрузки моделей!!!


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Еще кое что нашел... В W4 шейдеры идут по умолчанию, т.е. инфа про них не пишется... что усложняет отображение моделей в истинной форме....

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
У меня ПРОГРЕСС!!!!! Import Image работает!!!!!!!



Червь после моего Тату Салона =)
Прикрепления: 2190860.jpg (51.4 Kb)


 
vera34
Проверенные
Сообщений: 666
Реп: 18
крутооо! cool



Затянись, и мир станет прекрасным.
С каждым днем я все больше убеждаюсь в том, что людей умышленно делают идиотами (С).
 
Symbianer
Проверенные
Сообщений: 112
Реп: 10
Супер!

^----------,--------,--------------,-----
.... `\\_,---------,---------,--------------------|
....../...SILA... /\'|......../\'
...../...SILA... /..`\\.... /\'
..../...SILA.../`-------\'
.../...SILA.../
../...SILA.../
.( _______
 
DrHitman27
Админы
Сообщений: 2115
Реп: 52
ещё бы это круто тут выложил

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Quote (AlexBond)
-- Далее еще в проекте --
6. Редактируем нужные места
7. Сохраняем через Save *.xom3D

8. В XomView выделяем ту группу что хотим изменить и жмем Load *.xom3D
9. Программа сверяет дерево и имена в группе и файле и если они идентичны, производится замена.
10. Сохраняем Xom

Осталось два пункта cool

Прикрепления: 2711953.png (87.7 Kb)


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Quote (AlexBond)
8. В XomView выделяем ту группу что хотим изменить и жмем Load *.xom3D
9. Программа сверяет дерево и имена в группе и файле и если они идентичны, производится замена.

Осталось только придумать, как реализовать сверку двух деревьев... И как его вообще строить...

Прикрепления: 5841531.png (17.5 Kb)


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Дерево построил, только вот с матрицами проблема...

Прикрепления: 9860139.png (65.0 Kb)


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
завтра думаю допишу импорт, и выложу его тут, мало осталось....

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Нужна функция MatrixDecompose(XMatrix,XPos,XRot,XSize)...

Чтобы разложить матрицу на позицию углы и размер.

углы XRot достаются так:

Code
The final algorithm is then as follows:

     -----------------------------------

     angle_y = D = -asin( mat[2]);        /* Calculate Y-axis angle */
     C           =  cos( angle_y );
     angle_y    *= RADIANS;

     if ( fabs( C ) > 0.005 )             /* Gimball lock? */
       {
       trx      =  mat[10] / C;           /* No, so get X-axis angle */
       try      = -mat[6]  / C;

       angle_x  = atan2( try, trx ) * RADIANS;

       trx      =  mat[0] / C;            /* Get Z-axis angle */
       try      = -mat[1] / C;

       angle_z  = atan2( try, trx ) * RADIANS;
       }
     else                    /* Gimball lock has occurred */
       {
       angle_x  = 0;                      /* Set X-axis angle to zero */

       trx      = mat[5];                 /* And calculate Z-axis angle */
       try      = mat[4];

       angle_z  = atan2( try, trx ) * RADIANS;
       }

     angle_x = clamp( angle_x, 0, 360 );  /* Clamp all angles to range */
     angle_y = clamp( angle_y, 0, 360 );
     angle_z = clamp( angle_z, 0, 360 );

     -----------------------------------

XPos достается из XMatrix[1][4]

Вопрос в следующем, как достать XSize?????


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Последние достижения

P.S. глаза по дурацки сделаны в W4... за маской не видно зрачков...

Прикрепления: 9068548.jpg (36.5 Kb) · 3726543.jpg (42.7 Kb)


 
KROLь
Проверенные
Сообщений: 86
Реп: 10
Класс! biggrin
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
На всякий случай сюда сохраню мою идею:
Code
Дано матрица, назовём её G. В ней заложен растяжение(s_x,s_y,s_z), поворот(r_x,r_y,r_z), перенос(p_x,p_y,p_z)
ну ещё потребуется
cx=cos(rx),cy=cos(ry),cz=cos(rz)
sx=sin(rx),sy=sin(ry),sz=sin(rz)

Матрица G будет состоять из элементов:
a b c 0
d e f 0
g h i 0
j k l 1

1) Выделяем сдвиг:
p_x=j
p_y=k
p_z=l

2) Новая матрица M зануляем в G последнюю строку:
a b c 0
d e f 0
g h i 0
0 0 0 1

Из её элементов находим растяжение:

s_x=sqrt(a*a+b*b+c*c)
s_y=sqrt(d*d+e*e+f*f)
s_z=sqrt(g*g+h*h+i*i)

3) Ищем матрицу R:
a/s_x b/s_x c/s_x 0
d/s_y e/s_y f/s_y 0
g/s_z h/s_z i/s_z 0
0 0 0 1

ну и для простоты её элементы я назову:
ra rb rc 0
rd re rf 0
rg rh ri 0
0  0  0  1

Дальше ищем углы эйлера из матрицы R
r_x=arcsin(rh/sqrt(1-rg*rg))
r_y=arcsin(rg)
r_z=arcsin(rd/sqrt(1-rg*rg))

Только с arcsin могут быть проблемы, ибо иногда он даёт не то значение. Тогда наверно сверять результат с arccos:
r_x=arccos(ri/sqrt(1-rg*rg))
r_y=arcsin(rg)
r_z=arccos(ra/sqrt(1-rg*rg))


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Идея вылетела... размеры всегда положительные... а это ошибка!

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
cool
Прикрепления: 6433947.jpg (69.5 Kb)


 
Форум » Моддинг » 6.1. Остальные уроки » Декодируем Xom, Тип за типом... шаг за шагом... (Собираю группу психов не жалеющих свое время и мозги...)
Поиск: