beast24.jpg

To extract model files from NPC files, you need these tools. (you may need to compile them yourself)
Any tool that can extract files from ISO.
https://github.com/AdmiralCurtiss/HyoutaTools
https://github.com/aap/rwtools
https://github.com/mchubby/RE-games-attic/blob/master/sega-nextech/cvm_tool%20%5Broxfan%5D/cvm_tool_02.zip?raw=true
http://aluigi.altervista.org/quickbms.htm

and of course, you need the Tales of the Abyss ISO.

First, extract TO7NPC.CVM from the ISO of the game using your favorite ISO tool.

Once you have done that, use cvm_tool to convert the CVM to ISO.
Then, use your ISO tool to extract whatever NPC you want to convert.

Use HyoutaTools's TotAfps3e function to extract the .NPC files.

You should get a .rpx file.

Use the RPXto3DS.bms script to convert .rpx files into .3DS files with the UV coords.

You will get a .3DS file in the same directory.

Now, to get the textures, use txdex (from rwtools) to get .tga files from the .rpx.

Then once imported in blender, to get the textures to display properly:
Select all the UV's then use the button in the uv menu that says Mirror "Flip on Y axis"

Then import the tga image(s).
The model will now appear to have holes to fix this:
Select the object, then change the mode into edit mode.
Now go to the Mesh menu, and the sub menu Normals, and press "Recalculate Outside".
Now go to the Mesh menu again, and the sub menu Normals, and press "Recalculate Outside".
Then when still in edit mode, go to the bottom of the screen and underneath the words on the panel
that says "Mesh Tools"
press "Rem Double"
Then again go to the Mesh menu, and the sub menu Normals, and press "Recalculate Outside".

Your model should looked textured such as this one:
beast0UV.jpg


The model above is found in DOG00.NPC

This format uses the Renderware SDK.

RPX file extension (RenderWare stream) format:

..........
Textures
........
Model Section:
Model Components for each SubMesh
00 00 00 05 05 01 00 01 00 80 XX 68
{4ByteFloatVertexes(X,Y,Z)}
00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 05 05 01 00 01 01 80 XX 64
{4ByteFloatUVCoords(U,V)}
........