READ THE RULES: Click here

Follow us on Facebook: https://www.facebook.com/xentax/ :)

(Xbox) Crimson Skies High Road to Revenge plane models (.x)

Post questions about game models here, or help out others!
IronArthur
n00b
Posts: 17
Joined: Wed Aug 05, 2015 2:25 pm
Been thanked: 10 times

(Xbox) Crimson Skies High Road to Revenge plane models (.x)

Post by IronArthur » Tue Oct 10, 2017 3:22 pm

I´m extracting Crimson skies plane models to unity (right now).
The models are in the game iso in an airplanes.zip file with each plane in a bin packaged file.
It can be extracted (textures & model files) with this quickbms script http://aluigi.org/bms/crimson_skies.bms

Textures are DXT5/DXT1 with some xbox swizzled images and some *~a.tga file that i don´t know the format.

I imported all the plane models with texture into Unity, they are .x files but they aren´t DIRECTX binary files:
Image


Geometry of the planes are in Vertexblocks of 32 bytes:
12 bytesfor vertex
4 bytes for packed normals
4* 4 bytes of UV (each mesh can have up to 4 textures so they have up to 4 uv definitions)

My problem is that i really don´t know how to unpack the uv values.
U: 2 bytes from 0 to 65536
V: 2 bytes from 0 to 65536

The usual way should be value/65536, but i get correct UV shapes with wrong dimensions (~1/4 size)
Image

Then i divided the value by 16384, and i get mostly correct uvs but in some cases they are not (0,16384,46152...):
Image
Image

i´ve even tried to mask the value: (u & 16383) / 16384f
Image

These are the Vertex Blocks of one of the propellers (the black squares with a red circle)

Code: Select all

A4 2F 1B BF 54 4E 1B 3F 0C E3 85 BF 00 00 40 80 CF 3F DB FF 00 00 00 00 00 00 00 00 00 00 00 00
C8 7A 1A 3F 91 02 1C 3F 14 E3 85 BF 00 00 40 80 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
64 7A 1A BF 1B 39 1C BF 3A D9 85 BF 00 00 40 80 AA 3F 00 C0 00 00 00 00 00 00 00 00 00 00 00 00
9C 2F 1B 3F 91 85 1B BF 40 D9 85 BF 00 00 40 80 31 00 25 C0 00 00 00 00 00 00 00 00 00 00 00 00
64 7A 1A BF 1B 39 1C BF 3A D9 85 BF 00 00 C0 7F AA 3F 00 C0 00 00 00 00 00 00 00 00 00 00 00 00
9C 2F 1B 3F 91 85 1B BF 40 D9 85 BF 00 00 C0 7F 31 00 25 C0 00 00 00 00 00 00 00 00 00 00 00 00
A4 2F 1B BF 54 4E 1B 3F 0C E3 85 BF 00 00 C0 7F CF 3F DB FF 00 00 00 00 00 00 00 00 00 00 00 00
C8 7A 1A 3F 91 02 1C 3F 14 E3 85 BF 00 00 C0 7F 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Position 1AFB7 of this file
https://www.dropbox.com/s/edsugfb9b7wak ... yro.x?dl=0

Image


Any help??? I'm really desperate about this, i don´t how many hours i´ve worked in this problem :(

Thanks

User avatar
ThunderOwl
ultra-n00b
Posts: 4
Joined: Mon Sep 24, 2018 12:52 pm
Location: Latvia
Has thanked: 2 times
Contact:

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by ThunderOwl » Mon Sep 24, 2018 1:50 pm

Hello. Could you be so helpful to tell more about how to import .x files into any program. Yes, i have tried Blender26 .x import, and also LithUnwrap, but those does not work. As you said - those are not really DirextX files I guess. Can you tell please about Crimson Skies .x importing? Or, maybe share plane models (no matter UV condition) in some usual format?
Thank You in advance!

IronArthur
n00b
Posts: 17
Joined: Wed Aug 05, 2015 2:25 pm
Been thanked: 10 times

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by IronArthur » Tue Sep 25, 2018 12:23 pm

I´ve attached a really fast and incomplete noesis plugin for crimson skies planes .x

It´s very incomplete and without normals,uvs or texture support.

Probably you want it for 3d printing or something like that, your main problem with this plugin it´s that some submeshes need to be repositioned by a position matrix and i don´t know howto do it with noesis.

Image



edit: i´ve found howto position the submesh by matrix
Image
You do not have the required permissions to view the files attached to this post.

User avatar
ThunderOwl
ultra-n00b
Posts: 4
Joined: Mon Sep 24, 2018 12:52 pm
Location: Latvia
Has thanked: 2 times
Contact:

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by ThunderOwl » Tue Sep 25, 2018 1:38 pm

IronArthur, Thanks a lot! Later tonight I will try how it goes, I have been using Noesis before, including already for textures from Crimson Skies. It looks like it will be more than enough for my curiosity :) Thing is, I started to learn UE4 last year, and i am all about sci-fi aerial combat. Well, lack of such games in past years is main reason why I started. Terminal Velocity, Rogue Squadron 3D, Crimson Skies - kind of cornerstones for me :) Will try to use these exports as references or bases for some UE4 flying models. Just personal learning for now.

User avatar
shakotay2
MEGAVETERAN
MEGAVETERAN
Posts: 2695
Joined: Fri Apr 20, 2012 9:24 am
Location: Nexus, searching for Jim Kirk
Has thanked: 668 times
Been thanked: 1380 times

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by shakotay2 » Tue Sep 25, 2018 6:43 pm

IronArthur wrote:It´s very incomplete and without normals,uvs or texture support.
Getting uvs:
rapi.rpgBindUV1BufferOfs(VertBuff, noesis.RPGEODATA_SHORT, 32, 20)
(uvs2 assumed to be located at 24).

This is the sample where uvs are correct? I didn't get your size problem; you'd need to upload the concerning sample and its texture(s).

Would make sense to separate the submeshes into groups, btw.

Here's uvs for main mesh:
minigyro.jpg
You do not have the required permissions to view the files attached to this post.
Bigchillghost, Reverse Engineering a Game Model: viewtopic.php?f=29&t=17889
extracting simple models: viewtopic.php?f=29&t=10894
Make_H2O-ForzaHor3-jm9.zip
"You quoted the whole thing, what a mess."

User avatar
ThunderOwl
ultra-n00b
Posts: 4
Joined: Mon Sep 24, 2018 12:52 pm
Location: Latvia
Has thanked: 2 times
Contact:

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by ThunderOwl » Tue Sep 25, 2018 10:17 pm

@IronArthur - Thanks one more time! I got Noesis plugin doing its thing, but, I had to delete line 30 in it, about textures path. There was error about "os", i was lazy to properly find fix, just deleted that :) I attach screenshots what i got - I guess that is a good basis for "further investigations":)
CrimsonPlane1.jpg
You do not have the required permissions to view the files attached to this post.

IronArthur
n00b
Posts: 17
Joined: Wed Aug 05, 2015 2:25 pm
Been thanked: 10 times

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by IronArthur » Wed Sep 26, 2018 1:09 pm

shakotay2 wrote:
IronArthur wrote:It´s very incomplete and without normals,uvs or texture support.
Getting uvs:
rapi.rpgBindUV1BufferOfs(VertBuff, noesis.RPGEODATA_SHORT, 32, 20)
(uvs2 assumed to be located at 24).

This is the sample where uvs are correct? I didn't get your size problem; you'd need to upload the concerning sample and its texture(s).

Would make sense to separate the submeshes into groups, btw.

Here's uvs for main mesh:
minigyro.jpg
I didn´t know howto make a submesh in noesis it was my first time doing a plugin and first time in python, i only copied stuff from others plugin. There is any documentation??

I´ve tried a lot of different options to divide the UV shorts
var uaux = (reader.ReadInt16());
var vaux = (reader.ReadInt16());
u = (float)uaux / 65536f;
v = (float)vaux / 65536f;
Image

var uaux = (reader.ReadInt16());
var vaux = (reader.ReadInt16());
u = (float)uaux / 32768f;
v = (float)vaux / 32768f;
Image


This one it´s pretty much accurate but has some cases that has errors:
var uaux = (reader.ReadInt16());
var vaux = (reader.ReadInt16());
u = (float)uaux / 16384f;
v = (float)vaux / 16384f;
Image


Right now in Unity i´ve mostly correct uvs and i doing this ugly stuff:
var uaux = (reader.ReadInt16()); //Signed short
if (uaux > 16384f || uaux < -16384f)
u = ((float)(uaux & 16383) / 16384f);
else
u = ((float)(uaux) / 16384f);
Image


I´ve uploaded one of the most problematic model the Cinematic model for the Devastator model (the right one in previous screenshots)
https://www.dropbox.com/s/36ozeub6dlqow ... tor.x?dl=0

In Hex2Obj i look for the prop_fast_1 object.
Image

This mesh should be the circular propeller in the airplanes with a yellow strip.

User avatar
shakotay2
MEGAVETERAN
MEGAVETERAN
Posts: 2695
Joined: Fri Apr 20, 2012 9:24 am
Location: Nexus, searching for Jim Kirk
Has thanked: 668 times
Been thanked: 1380 times

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by shakotay2 » Wed Sep 26, 2018 6:47 pm

IronArthur wrote:I didn´t know howto make a submesh in noesis it was my first time doing a plugin and first time in python, i only copied stuff from others plugin. There is any documentation??
Not for details, afaik. There's
noesis\plugins\python\__NPReadMe.txt
noesis\plugins\python\__NPExample.txt
and a header file (for 'C', but descriptions of functions and constants are important to know)
noesis\pluginsource\pluginshare.h
Right now in Unity i´ve mostly correct uvs and i doing this ugly stuff:
var uaux = (reader.ReadInt16()); //Signed short
if (uaux > 16384f || uaux < -16384f)
u = ((float)(uaux & 16383) / 16384f);
else
u = ((float)(uaux) / 16384f);
Well, just cutting off the higher 2 bits doesn*t make you lose texture parts?
This mesh should be the circular propeller in the airplanes with a yellow strip.
you can press the 'UVs' button to check whether it's "proper".

Do you have separate submeshes in unity?

I've put some g sm_x lines into the obj created by Noesis and loaded it into blender (body uv2 scaled by 2.75):
edit: well, I used the wrong uv set, uv1: offset 20, uv2: offset 24; IronArthur found a set the suiting one uv1 at offset 16, depends on the submesh
Devastator.jpg
(Without the texture for the body I can't tell more. Could be a matter of 2nd uvs?)

Here's the details for building submeshes:
(example for submesh 84, last vSum was 1821, current vSum= 2925:
f 1821/1821/1821 1820/1820/1820 1818/1818/1818
g sm_1
f 1824/1824/1824 1823/1823/1823 1822/1822/1822
...
f 2924/2924/2924 2925/2925/2925 2917/2917/2917
g sm_2
f 2928/2928/2928 2927/2927/2927 2926/2926/2926
)
1. SM, vCnt: 4, vSum 4 (0x2e5 TrisBuff)
2. SM, vCnt: 16, vSum 20 (0x5b3)
3. SM, vCnt: 16, vSum 36 (0x8ff)
4. SM, vCnt: 16, vSum 52 (0xc4b)
5. SM, vCnt: 34, vSum 86 (0x11d7)
6. SM, vCnt: 24, vSum 110 (0x1690)
7. SM, vCnt: 36, vSum 146 (0x1ca5)
8. SM, vCnt: 38, vSum 184 (0x231c)
9. SM, vCnt: 20, vSum 204 (0x2797)
10. SM, vCnt: 21, vSum 225 (0x2b64)
11. SM, vCnt: 21, vSum 246 (0x3027)
12. SM, vCnt: 144, vSum 390 (0x4514)
13. SM, vCnt: 8, vSum 398 (0x4c20)
14. SM, vCnt: 8, vSum 406 (0x4e15)
15. SM, vCnt: 28, vSum 434 (0x52e9)
16. SM, vCnt: 64, vSum 498 (0x5d0b)
17. SM, vCnt: 28, vSum 526 (0x6339)
18. SM, vCnt: 20, vSum 546 (0x6774)
19. SM, vCnt: 20, vSum 566 (0x6bf7)
20. SM, vCnt: 14, vSum 580 (0x6f09)
21. SM, vCnt: 14, vSum 594 (0x71f4)
22. SM, vCnt: 44, vSum 638 (0x789e)
23. SM, vCnt: 64, vSum 702 (0x82d6)
24. SM, vCnt: 20, vSum 722 (0x8964)
25. SM, vCnt: 14, vSum 736 (0x8c74)
26. SM, vCnt: 14, vSum 750 (0x8f5d)
27. SM, vCnt: 44, vSum 794 (0x9605)
28. SM, vCnt: 64, vSum 858 (0xa02d)
29. SM, vCnt: 20, vSum 878 (0xa694)
30. SM, vCnt: 20, vSum 898 (0xaa49)
31. SM, vCnt: 14, vSum 912 (0xad58)
32. SM, vCnt: 14, vSum 926 (0xb040)
33. SM, vCnt: 44, vSum 970 (0xb6e7)
34. SM, vCnt: 64, vSum 1034 (0xc10e)
35. SM, vCnt: 20, vSum 1054 (0xcb0c)
36. SM, vCnt: 20, vSum 1074 (0xd2e8)
37. SM, vCnt: 38, vSum 1112 (0xe061)
38. SM, vCnt: 38, vSum 1150 (0xeed4)
39. SM, vCnt: 18, vSum 1168 (0xf70b)
40. SM, vCnt: 18, vSum 1186 (0xfe46)
41. SM, vCnt: 117, vSum 1303 (0x10e23)
42. SM, vCnt: 117, vSum 1420 (0x1242a)
43. SM, vCnt: 28, vSum 1448 (0x13490)
44. SM, vCnt: 28, vSum 1476 (0x13f28)
45. SM, vCnt: 43, vSum 1519 (0x1461a)
46. SM, vCnt: 18, vSum 1537 (0x14f27)
47. SM, vCnt: 18, vSum 1555 (0x15658)
48. SM, vCnt: 18, vSum 1573 (0x15d89)
49. SM, vCnt: 18, vSum 1591 (0x164ba)
50. SM, vCnt: 18, vSum 1609 (0x16beb)
51. SM, vCnt: 18, vSum 1627 (0x1731c)
52. SM, vCnt: 18, vSum 1645 (0x17a4d)
53. SM, vCnt: 18, vSum 1663 (0x1817e)
54. SM, vCnt: 12, vSum 1675 (0x186d1)
55. SM, vCnt: 15, vSum 1690 (0x18cbc)
56. SM, vCnt: 12, vSum 1702 (0x191c9)
57. SM, vCnt: 15, vSum 1717 (0x197b4)
58. SM, vCnt: 4, vSum 1721 (0x19986)
59. SM, vCnt: 4, vSum 1725 (0x19ab7)
60. SM, vCnt: 4, vSum 1729 (0x19beb)
61. SM, vCnt: 4, vSum 1733 (0x19d1f)
62. SM, vCnt: 4, vSum 1737 (0x19e53)
63. SM, vCnt: 4, vSum 1741 (0x19f87)
64. SM, vCnt: 4, vSum 1745 (0x1a0bb)
65. SM, vCnt: 4, vSum 1749 (0x1a1ef)
66. SM, vCnt: 4, vSum 1753 (0x1a323)
67. SM, vCnt: 4, vSum 1757 (0x1a457)
68. SM, vCnt: 4, vSum 1761 (0x1a58b)
69. SM, vCnt: 4, vSum 1765 (0x1a6bd)
70. SM, vCnt: 4, vSum 1769 (0x1a7f2)
71. SM, vCnt: 4, vSum 1773 (0x1a927)
72. SM, vCnt: 4, vSum 1777 (0x1aa5c)
73. SM, vCnt: 4, vSum 1781 (0x1ab91)
74. SM, vCnt: 4, vSum 1785 (0x1acc5)
75. SM, vCnt: 4, vSum 1789 (0x1adf9)
76. SM, vCnt: 4, vSum 1793 (0x1af2d)
77. SM, vCnt: 4, vSum 1797 (0x1b061)
78. SM, vCnt: 4, vSum 1801 (0x1b195)
79. SM, vCnt: 4, vSum 1805 (0x1b2c9)
80. SM, vCnt: 4, vSum 1809 (0x1b3fd)
81. SM, vCnt: 4, vSum 1813 (0x1b531)
82. SM, vCnt: 4, vSum 1817 (0x1b66b)
83. SM, vCnt: 4, vSum 1821 (0x1b7a7)
84. SM, vCnt: 1104, vSum 2925 (0x311b4) <<<
85. SM, vCnt: 65, vSum 2990 (0x34f95)
86. SM, vCnt: 200, vSum 3190 (0x36cbc) <<
87. SM, vCnt: 70, vSum 3260 (0x37db6)
88. SM, vCnt: 971, vSum 4231 (0x3f93a) <<<
89. SM, vCnt: 675, vSum 4906 (0x467d7) <<<
90. SM, vCnt: 120, vSum 5026 (0x487d6)
91. SM, vCnt: 204, vSum 5230 (0x4a508) <<
92. SM, vCnt: 43, vSum 5273 (0x4b02a)
93. SM, vCnt: 4, vSum 5277 (0x4b43a)
94. SM, vCnt: 4, vSum 5281 (0x4b5e6)
95. SM, vCnt: 4, vSum 5285 (0x4b792)
96. SM, vCnt: 4, vSum 5289 (0x4b8c9)
97. SM, vCnt: 4, vSum 5293 (0x4ba02)
98. SM, vCnt: 4, vSum 5297 (0x4bbb1 TrisBuff)
You do not have the required permissions to view the files attached to this post.
Last edited by shakotay2 on Thu Sep 27, 2018 8:32 am, edited 1 time in total.
Bigchillghost, Reverse Engineering a Game Model: viewtopic.php?f=29&t=17889
extracting simple models: viewtopic.php?f=29&t=10894
Make_H2O-ForzaHor3-jm9.zip
"You quoted the whole thing, what a mess."

Puterboy1
veteran
Posts: 140
Joined: Fri Mar 02, 2018 3:05 am
Been thanked: 6 times

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by Puterboy1 » Wed Sep 26, 2018 10:17 pm

You should put these up on the Models Resource, they come in handy: https://www.models-resource.com/

IronArthur
n00b
Posts: 17
Joined: Wed Aug 05, 2015 2:25 pm
Been thanked: 10 times

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by IronArthur » Wed Sep 26, 2018 10:46 pm

shakotay2 wrote:
Right now in Unity i´ve mostly correct uvs and i doing this ugly stuff:
var uaux = (reader.ReadInt16()); //Signed short
if (uaux > 16384f || uaux < -16384f)
u = ((float)(uaux & 16383) / 16384f);
else
u = ((float)(uaux) / 16384f);
Well, just cutting off the higher 2 bits doesn*t make you lose texture parts?
This mesh should be the circular propeller in the airplanes with a yellow strip.
you can press the 'UVs' button to check whether it's "proper".

Do you have separate submeshes in unity?

I've put some g sm_x lines into the obj created by Noesis and loaded it into blender (body uv1 scaled by 2.75):
Devastator.jpg
(Without the texture for the body I can't tell more. Could be a matter of 2nd uvs?)
I don´t know if i lose some info about uvs, but if use short/65k the texture is like 1/4 of the full model.

I´ve every submesh and object in Unity. it´s really easy when you are on a full game engine:
Image

I´ve uploaded two main textures of that model
https://www.dropbox.com/s/8undw9x8amhft ... r.png?dl=0 MainTexture
https://www.dropbox.com/s/2qf19vm4fizlc ... r.png?dl=0 Propellers texture

the 2nd 3rd and 4th uv are used with extra Mask textures for damage and normal texture.
Image

In hex2obj i see the uv:
Image

User avatar
shakotay2
MEGAVETERAN
MEGAVETERAN
Posts: 2695
Joined: Fri Apr 20, 2012 9:24 am
Location: Nexus, searching for Jim Kirk
Has thanked: 668 times
Been thanked: 1380 times

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by shakotay2 » Thu Sep 27, 2018 8:13 am

IronArthur wrote:I´ve every submesh and object in Unity. it´s really easy when you are on a full game engine:
Image
That's cool! :)
I´ve uploaded two main textures of that model
Thanks!
In hex2obj i see the uv:
Image
yeah, I'd to zoom (and rotate it) to make it fit the texture:
prop.jpg
You do not have the required permissions to view the files attached to this post.
Bigchillghost, Reverse Engineering a Game Model: viewtopic.php?f=29&t=17889
extracting simple models: viewtopic.php?f=29&t=10894
Make_H2O-ForzaHor3-jm9.zip
"You quoted the whole thing, what a mess."

User avatar
shakotay2
MEGAVETERAN
MEGAVETERAN
Posts: 2695
Joined: Fri Apr 20, 2012 9:24 am
Location: Nexus, searching for Jim Kirk
Has thanked: 668 times
Been thanked: 1380 times

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by shakotay2 » Thu Sep 27, 2018 8:18 am

And here's what I got for the body:
devastator-body.jpg
the H2O file:

0x311B4 4080
Vb1
32 16
0x1B89F 1104
020300
0x0 255

You could add texture/submesh support to Noesis; I remember having done this using materials:
matName = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"]
(Where you can replace the numbers by texturenames.)

rapi.rpgSetMaterial(matName[j])
You do not have the required permissions to view the files attached to this post.
Bigchillghost, Reverse Engineering a Game Model: viewtopic.php?f=29&t=17889
extracting simple models: viewtopic.php?f=29&t=10894
Make_H2O-ForzaHor3-jm9.zip
"You quoted the whole thing, what a mess."

User avatar
ThunderOwl
ultra-n00b
Posts: 4
Joined: Mon Sep 24, 2018 12:52 pm
Location: Latvia
Has thanked: 2 times
Contact:

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by ThunderOwl » Thu Sep 27, 2018 8:33 am

Guys, could you tell (share) is at this point some more "advanced" (fixed) Noesis plugin usable, than that posted above? Thing is, I try to follow, but I don't know all nuanses about sub-meshes and stuff :) Thank You in advance!

User avatar
shakotay2
MEGAVETERAN
MEGAVETERAN
Posts: 2695
Joined: Fri Apr 20, 2012 9:24 am
Location: Nexus, searching for Jim Kirk
Has thanked: 668 times
Been thanked: 1380 times

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by shakotay2 » Thu Sep 27, 2018 8:40 am

For me, I simply added this line
rapi.rpgBindUV1BufferOfs(VertBuff, noesis.RPGEODATA_SHORT, 32, 16)
where I have to change uv1 offset (16) manually. Don't have the time to change the code to automatically detect the offset
(sometimes uv1 offset is 20). At 24 maybe other channel, such as for destruction texture.

(I also had to scale up the uv1 for the body in my previous post with 5.5; with Noesis obj output it's 2.75)
Bigchillghost, Reverse Engineering a Game Model: viewtopic.php?f=29&t=17889
extracting simple models: viewtopic.php?f=29&t=10894
Make_H2O-ForzaHor3-jm9.zip
"You quoted the whole thing, what a mess."

Mrblue630
n00b
Posts: 12
Joined: Sat Dec 01, 2018 6:15 am
Has thanked: 1 time

Re: (Xbox) Crimson Skies High Road to Revenge plane models (

Post by Mrblue630 » Sat Dec 01, 2018 6:29 am

I'd like the updated version of this noesis plugin since I have no idea what to do. I'm making a mod for a game and these models extracted w/ textures would help amazingly.

Post Reply