(PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post questions about game models here, or help out others!
foxdemon90210
ultra-n00b
Posts: 8
Joined: Wed Dec 21, 2011 11:12 pm
Has thanked: 1 time

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by foxdemon90210 » Mon Apr 01, 2013 11:35 pm

oddwarlock wrote:Good news!

I've discovered how the material/texture/image association is done, meaning textures are assigned automatically!

As long as you've extracted them from the *_tex.bin with chrrox's TXP script to the same directory and haven't changed the basename, the script will pick them up in the following order of preference: png, tga, dds. (Blender can render images correctly with the dds textures, but it doesn't look like the realtime GLSL works with them).

I used nvdecompress from https://code.google.com/p/nvidia-texture-tools/ for converting these dds to tga/png, but I'm sure there are others.

Also, if you have the tex_db.bin file in the same directory as the *_obj.bin file, I can retrieve the texture names from that file.

I've also incorporated bone weights based on the information from emankcin700jp, and I set the bone parent chains for most of the jigglebones.

I've only been able to test this with PDDT 1 and 2, would be interested to see if it works for VF5 as well.

Enjoy!
how do we use this and where does it go in blender?

TRDaz
mega-veteran
mega-veteran
Posts: 193
Joined: Sat Sep 24, 2011 7:06 pm
Has thanked: 55 times
Been thanked: 19 times

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by TRDaz » Sat May 04, 2013 6:51 pm

Is there anyway to fix the weight errors in the Project Diva Dream Theater models? Or does someone have a script that fixes this problem?

EDIT: Ignore this lol, figured it out.

User avatar
feareffectinferno
ultra-n00b
Posts: 8
Joined: Sat Nov 12, 2011 6:43 pm

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by feareffectinferno » Fri Jun 07, 2013 4:05 pm

Hi,

I don't have Virtua FIghter 5, and I don't have a PS3, i just want to know if someone could extract El Blaze, Costume A and S.

Image Image

Please, I only need the 3D models with textures for blender. I hope it's possible, it's been so much trying to extract him :(

Thanks :)

User avatar
feareffectinferno
ultra-n00b
Posts: 8
Joined: Sat Nov 12, 2011 6:43 pm

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by feareffectinferno » Sun Jul 21, 2013 7:30 pm

Please, anyone ? :[

shrinkuke
ultra-n00b
Posts: 2
Joined: Wed Oct 15, 2014 5:20 pm

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by shrinkuke » Tue Mar 24, 2015 1:14 am

Hello, my apologies for not understanding quite well. You'll, I've unzipped the farc files and got the .gz, but there are two big files inside, one's for the 3D object. How do I load the 3D object in Blender or Cinema 4D?

LarsMasters
beginner
Posts: 28
Joined: Mon Aug 25, 2014 3:30 am
Been thanked: 2 times

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by LarsMasters » Tue Mar 24, 2015 8:49 am

will this affects Final Showdown?

MarieRose1301
advanced
Posts: 55
Joined: Sat Oct 11, 2014 10:29 pm
Has thanked: 2 times
Been thanked: 1 time

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by MarieRose1301 » Sat May 09, 2015 8:55 am

Sorry for necro
Are there any tools available to play .bin animation files from Dreamy Theater games?
Here's a sample, it's the Dear PV motion file: http://www.mediafire.com/download/2fd33 ... _PV045.bin

Malik Hatsune
ultra-n00b
Posts: 1
Joined: Fri Sep 25, 2015 12:00 am

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by Malik Hatsune » Fri Sep 25, 2015 12:12 am

TRDaz wrote:Is there anyway to fix the weight errors in the Project Diva Dream Theater models? Or does someone have a script that fixes this problem?

EDIT: Ignore this lol, figured it out.

Could you please explain to me how you got the weights? I have spent forever trying to figure it out! :cry:

Darko
double-veteran
double-veteran
Posts: 701
Joined: Mon Jul 13, 2009 6:16 pm
Has thanked: 70 times
Been thanked: 118 times

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by Darko » Fri Sep 25, 2015 3:14 am

Malik Hatsune wrote:
TRDaz wrote:Is there anyway to fix the weight errors in the Project Diva Dream Theater models? Or does someone have a script that fixes this problem?

EDIT: Ignore this lol, figured it out.

Could you please explain to me how you got the weights? I have spent forever trying to figure it out! :cry:
Chrrox maxscript supports correct weighting data but applied to wrong bones.
Image

TRDaz
mega-veteran
mega-veteran
Posts: 193
Joined: Sat Sep 24, 2011 7:06 pm
Has thanked: 55 times
Been thanked: 19 times

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by TRDaz » Fri Sep 25, 2015 8:08 am

Well I never got perfect weights with the way I did it, but the blender script from oddwarlock imports weights assigned to the correct bones, just the bones aren't parented. For some reason the weights are messed up slightly though.

MarieRose1301
advanced
Posts: 55
Joined: Sat Oct 11, 2014 10:29 pm
Has thanked: 2 times
Been thanked: 1 time

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by MarieRose1301 » Mon Sep 28, 2015 2:38 pm

TRDaz wrote:Well I never got perfect weights with the way I did it, but the blender script from oddwarlock imports weights assigned to the correct bones, just the bones aren't parented. For some reason the weights are messed up slightly though.
The blender script's weights aren't the same to chrrox's scripts ones, his are somewhat more accurate

shrinkuke
ultra-n00b
Posts: 2
Joined: Wed Oct 15, 2014 5:20 pm

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by shrinkuke » Mon Oct 12, 2015 1:24 am

Excuse me, I've got a small bug: I'm trying to open, for example, Len "default" from Dreamy Theater Extend, and instead of loading the two materials of the boots (the boots and the "Electronic Voice" part) the program fuses both in one when I need the two texture separately. How can I fix that¿?

waelwindows92
ultra-n00b
Posts: 1
Joined: Tue Sep 15, 2015 3:38 pm

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by waelwindows92 » Sat Mar 05, 2016 1:34 pm

Hello chorrx, there's a problem with the script. Sometimes when I load some stage .bin it tries to import but it fails due to this line

Code: Select all

meditMaterials[aa] = Multimaterial()
I don't know why this is happening but not all stages happen to import this way. For example
stgd2pv042s02_obj imports fine while stgd2pv042s04_obj can't import because of this error.
I'm using 3DS max 2016

cobaltbluebengal
ultra-n00b
Posts: 2
Joined: Sun Jul 03, 2016 5:15 pm
Has thanked: 1 time

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by cobaltbluebengal » Sun Jul 03, 2016 9:20 pm

I've been reading all the posts on the thread and tried to follow as best I can.

I have the PS3 version of Virtua Fighter 5 and have used the posts information to get the FLAC and the BIN files. But when I try importing them into 3DS Max, it starts to import the files, but then brings a frustrating window of script errors.

I don't know if it's just me or what but I'm hoping that some of you tech guys out there can help :/



if (heapSize < 20000000) then
heapSize = 200000000 -- allow ~ 40 MB instead of just 7.5 MB. Prevents "Runtime Error: Out of scripter memory"

fname = getOpenFileName \
caption:"Open VF5 Model File" \
types:"VF5 Model File(*.bin)|*_obj.bin" \
historyCategory:"VF5ObjectPresets"
f = fopen fname "rb"
fn PrintOffset Var =
(
local Var = Var
print ("This is the offset 0x" + (bit.intAsHex Var) as string)
Var
)
fn PrintCount Var =
(
local Var = Var
print ("This is the Count 0x" + (bit.intAsHex Var) as string)
Var
)

fn Readword fstream = (
return readshort fstream #unsigned
)

fn ReadFixedString bstream fixedLen =
(
local str = ""
for i = 1 to fixedLen do
(
str += bit.intAsChar (ReadByte bstream #unsigned)
)
str
)

struct Mesh_Info_Struct
(
Mesh_Name,vertstart,vertend,vertcount,facecount
)

Idstring = readlong f
SectionCount = readlong f
--?
BoneCount = readlong f
SectionTableOff = readlong f
Unk05 = readlong f
Unk06 = readlong f
Unk07 = readlong f
Unk08 = readlong f
Unk09 = readlong f
Unk10 = readlong f
Unk11 = readlong f
Unk12 = readlong f
Unk13 = readlong f
Unk14 = readlong f
Unk15 = readlong f
Unk16 = readlong f
fseek f SectionTableOff#seek_set
boff_array = #()
for a = 1 to SectionCount Do (
boff = readlong f
append boff_array boff
)
for aa = 1 to SectionCount Do (
fseek f boff_array[aa]#seek_set
--Base Offset
BaseOff = (ftell f)
Unk101 = readlong f
Unk102 = readlong f
Unk103 = readlong f
Unk104 = readlong f
Unk105 = readlong f
Unk106 = readlong f
MeshCount = readlong f
MeshTableStart = (readlong f) + BaseOff
MaterialCount = readlong f
MaterialOffset = (readlong f) + BaseOff
fseek f MaterialOffset#seek_set
meditMaterials[aa] = Multimaterial ()
meditMaterials[aa].numsubs = MaterialCount
meditMaterials[aa].name = ((getFilenameFile fname) + aa as string)
for a = 1 to MaterialCount Do (
fseek f 8#seek_cur
Mattype = ReadFixedString f 8
fseek f 0x420#seek_cur
Mattname = ReadFixedString f 0x40
fseek f 0x40#seek_cur
meditMaterials[aa].names[a] = Mattype
meditMaterials[aa][a].name = Mattname
)
--Mesh File Table
fseek f MeshTableStart#seek_set

struct Offset_Info_Struct
(
MeshFaceSectionCount,MeshFaceHeaderOff,VertCount,VertStart,NormalStart,Sect0x10,UvStart,Sect10x10,Sect20x10,FaceStart,MeshName
)

Offset_Info_array = #()
for a = 1 to MeshCount Do (
fseek f 0x14#seek_cur
MeshFaceSectionCount = readlong f
MeshFaceHeaderOff = (readlong f) + BaseOff
C13_17 = readlong f
Num0x50 = readlong f
VertCount = readlong f
VertStart = (readlong f) + BaseOff
NormalStart = (readlong f) + BaseOff
Sect0x10 = (readlong f) + BaseOff
Null01 = readlong f
UvStart = (readlong f) + BaseOff
fseek f 0x14#seek_cur
Sect10x10 = (readlong f) + BaseOff
Sect20x10 = (readlong f) + BaseOff
FaceStart = (Sect20x10 + (0x10 * VertCount))
fseek f 0x40#seek_cur
MeshName = ReadFixedString f 0x40
append Offset_Info_array (Offset_Info_Struct MeshFaceSectionCount:MeshFaceSectionCount MeshFaceHeaderOff:MeshFaceHeaderOff VertCount:VertCount VertStart:VertStart NormalStart:NormalStart Sect0x10:Sect0x10 UvStart:UvStart Sect10x10:Sect10x10 Sect20x10:Sect20x10 FaceStart:FaceStart MeshName:MeshName)
)
struct Face_Info_Struct
(
FCount1,FOffset1,Num4,Ftype,MatNumber1,FCount2,FOffset2
)
for a = 1 to MeshCount Do (
Vert_array = #()
Normal_array = #()
UV_array = #()
Face_Info_Array = #()
fseek f Offset_Info_array[a].MeshFaceHeaderOff#seek_set
for b = 1 to Offset_Info_array[a].MeshFaceSectionCount Do (
fseek f 0x14#seek_cur
MatNumber1 = (readlong f) + 1
fseek f 0x8#seek_cur
FCount1 = readlong f
FOffset1 = (readlong f) + BaseOff
Num4 = readlong f
Ftype = readlong f
Num1 = readlong f
FCount2 = readlong f
FOffset2 = (readlong f) + BaseOff
fseek f 0x20#seek_cur
append Face_Info_Array (Face_Info_Struct FCount1:FCount1 FOffset1:FOffset1 Num4:Num4 Ftype:Ftype MatNumber1:MatNumber1 FCount2:FCount2 FOffset2:FOffset2)
)
fseek f Offset_Info_array[a].VertStart#seek_set
for b = 1 to Offset_Info_array[a].VertCount Do (
vx = readfloat f 
vy = readfloat f
vz = readfloat f
append Vert_array [vx,vy,vz]
)
fseek f Offset_Info_array[a].NormalStart#seek_set
for b = 1 to Offset_Info_array[a].VertCount Do (
nx = readfloat f 
ny = readfloat f
nz = readfloat f
append Normal_array [nx,ny,nz]
)
fseek f Offset_Info_array[a].UvStart#seek_set
for b = 1 to Offset_Info_array[a].VertCount Do (
tu = (readfloat f) * 1
tv = (readfloat f) * -1
append UV_array [tu,tv,0]
)
Face_array = #()
for b = 1 to Offset_Info_array[a].MeshFaceSectionCount Do (

fseek f Face_Info_Array.FOffset2#seek_set
if Face_Info_Array.Ftype == 5 do (
StartDirection = -1
f1 = readshort f#unsigned + 1
f2 = readshort f#unsigned + 1
FaceDirection = StartDirection
do (
f3 = readshort f#unsigned
if (f3==0xFFFF) then (
f1 = readshort f#unsigned + 1
f2 = readshort f#unsigned + 1
FaceDirection = StartDirection
) else (
f3 += 1
FaceDirection *= -1
if (f1!=f2)AND(f2!=f3)AND(f3!=f1) then (
if FaceDirection > 0 then append Face_array [f1,f2,f3]
else append Face_array [f1,f3,f2]
)
f1 = f2
f2 = f3
)
) while ((ftell f) != (Face_Info_Array.FOffset2 + (Face_Info_Array.FCount2 * 2)))
)
if Face_Info_Array.Ftype == 4 do (
Do (
f1 = (readshort f) + 1   --read face indices, games are start form 0, but Max start from 1
f2 = (readshort f) + 1   --so we add 1 to each index
f3 = (readshort f) + 1
append Face_array [f1,f2,f3] --save faces to Face_array
) while ((ftell f) != (Face_Info_Array.FOffset2 + (Face_Info_Array.FCount2 * 2)))
)
)
msh = mesh vertices:Vert_array faces:Face_array name:Offset_Info_array[a].MeshName
msh.numTVerts = UV_array.count
buildTVFaces msh
msh.material = meditMaterials[aa][(Face_Info_Array[1].MatNumber1)]
for j = 1 to UV_array.count do setTVert msh j UV_array[j]
for j = 1 to Face_array.count do setTVFace msh j Face_array[j]
for j = 1 to Normal_array.count do setNormal msh j Normal_array[j]
)
)

fclose f


I'm a little lost to say the least. The files I'm trying to use I believe are from Jacky Bryant. Not sure what bit though as it exported two hundred or so RAR files all containing BIN (One for the OBJ.BIN and one for TEX.BIN) I selected one at complete random: jakitm134_obj.bin and jakitm134_tex.bin i'm convinced I'm doing something wrong but can't identify where :/



Any advice or assist would be awesome :)

Darko
double-veteran
double-veteran
Posts: 701
Joined: Mon Jul 13, 2009 6:16 pm
Has thanked: 70 times
Been thanked: 118 times

Re: (PS3) Virtua FIghter 5 / Project Diva Dream Theater

Post by Darko » Mon Jul 04, 2016 2:55 am

cobaltbluebengal wrote:I've been reading all the posts on the thread and tried to follow as best I can.

I have the PS3 version of Virtua Fighter 5 and have used the posts information to get the FLAC and the BIN files. But when I try importing them into 3DS Max, it starts to import the files, but then brings a frustrating window of script errors.

I don't know if it's just me or what but I'm hoping that some of you tech guys out there can help :/



if (heapSize < 20000000) then
heapSize = 200000000 -- allow ~ 40 MB instead of just 7.5 MB. Prevents "Runtime Error: Out of scripter memory"

fname = getOpenFileName \
caption:"Open VF5 Model File" \
types:"VF5 Model File(*.bin)|*_obj.bin" \
historyCategory:"VF5ObjectPresets"
f = fopen fname "rb"
fn PrintOffset Var =
(
local Var = Var
print ("This is the offset 0x" + (bit.intAsHex Var) as string)
Var
)
fn PrintCount Var =
(
local Var = Var
print ("This is the Count 0x" + (bit.intAsHex Var) as string)
Var
)

fn Readword fstream = (
return readshort fstream #unsigned
)

fn ReadFixedString bstream fixedLen =
(
local str = ""
for i = 1 to fixedLen do
(
str += bit.intAsChar (ReadByte bstream #unsigned)
)
str
)

struct Mesh_Info_Struct
(
Mesh_Name,vertstart,vertend,vertcount,facecount
)

Idstring = readlong f
SectionCount = readlong f
--?
BoneCount = readlong f
SectionTableOff = readlong f
Unk05 = readlong f
Unk06 = readlong f
Unk07 = readlong f
Unk08 = readlong f
Unk09 = readlong f
Unk10 = readlong f
Unk11 = readlong f
Unk12 = readlong f
Unk13 = readlong f
Unk14 = readlong f
Unk15 = readlong f
Unk16 = readlong f
fseek f SectionTableOff#seek_set
boff_array = #()
for a = 1 to SectionCount Do (
boff = readlong f
append boff_array boff
)
for aa = 1 to SectionCount Do (
fseek f boff_array[aa]#seek_set
--Base Offset
BaseOff = (ftell f)
Unk101 = readlong f
Unk102 = readlong f
Unk103 = readlong f
Unk104 = readlong f
Unk105 = readlong f
Unk106 = readlong f
MeshCount = readlong f
MeshTableStart = (readlong f) + BaseOff
MaterialCount = readlong f
MaterialOffset = (readlong f) + BaseOff
fseek f MaterialOffset#seek_set
meditMaterials[aa] = Multimaterial ()
meditMaterials[aa].numsubs = MaterialCount
meditMaterials[aa].name = ((getFilenameFile fname) + aa as string)
for a = 1 to MaterialCount Do (
fseek f 8#seek_cur
Mattype = ReadFixedString f 8
fseek f 0x420#seek_cur
Mattname = ReadFixedString f 0x40
fseek f 0x40#seek_cur
meditMaterials[aa].names[a] = Mattype
meditMaterials[aa][a].name = Mattname
)
--Mesh File Table
fseek f MeshTableStart#seek_set

struct Offset_Info_Struct
(
MeshFaceSectionCount,MeshFaceHeaderOff,VertCount,VertStart,NormalStart,Sect0x10,UvStart,Sect10x10,Sect20x10,FaceStart,MeshName
)

Offset_Info_array = #()
for a = 1 to MeshCount Do (
fseek f 0x14#seek_cur
MeshFaceSectionCount = readlong f
MeshFaceHeaderOff = (readlong f) + BaseOff
C13_17 = readlong f
Num0x50 = readlong f
VertCount = readlong f
VertStart = (readlong f) + BaseOff
NormalStart = (readlong f) + BaseOff
Sect0x10 = (readlong f) + BaseOff
Null01 = readlong f
UvStart = (readlong f) + BaseOff
fseek f 0x14#seek_cur
Sect10x10 = (readlong f) + BaseOff
Sect20x10 = (readlong f) + BaseOff
FaceStart = (Sect20x10 + (0x10 * VertCount))
fseek f 0x40#seek_cur
MeshName = ReadFixedString f 0x40
append Offset_Info_array (Offset_Info_Struct MeshFaceSectionCount:MeshFaceSectionCount MeshFaceHeaderOff:MeshFaceHeaderOff VertCount:VertCount VertStart:VertStart NormalStart:NormalStart Sect0x10:Sect0x10 UvStart:UvStart Sect10x10:Sect10x10 Sect20x10:Sect20x10 FaceStart:FaceStart MeshName:MeshName)
)
struct Face_Info_Struct
(
FCount1,FOffset1,Num4,Ftype,MatNumber1,FCount2,FOffset2
)
for a = 1 to MeshCount Do (
Vert_array = #()
Normal_array = #()
UV_array = #()
Face_Info_Array = #()
fseek f Offset_Info_array[a].MeshFaceHeaderOff#seek_set
for b = 1 to Offset_Info_array[a].MeshFaceSectionCount Do (
fseek f 0x14#seek_cur
MatNumber1 = (readlong f) + 1
fseek f 0x8#seek_cur
FCount1 = readlong f
FOffset1 = (readlong f) + BaseOff
Num4 = readlong f
Ftype = readlong f
Num1 = readlong f
FCount2 = readlong f
FOffset2 = (readlong f) + BaseOff
fseek f 0x20#seek_cur
append Face_Info_Array (Face_Info_Struct FCount1:FCount1 FOffset1:FOffset1 Num4:Num4 Ftype:Ftype MatNumber1:MatNumber1 FCount2:FCount2 FOffset2:FOffset2)
)
fseek f Offset_Info_array[a].VertStart#seek_set
for b = 1 to Offset_Info_array[a].VertCount Do (
vx = readfloat f 
vy = readfloat f
vz = readfloat f
append Vert_array [vx,vy,vz]
)
fseek f Offset_Info_array[a].NormalStart#seek_set
for b = 1 to Offset_Info_array[a].VertCount Do (
nx = readfloat f 
ny = readfloat f
nz = readfloat f
append Normal_array [nx,ny,nz]
)
fseek f Offset_Info_array[a].UvStart#seek_set
for b = 1 to Offset_Info_array[a].VertCount Do (
tu = (readfloat f) * 1
tv = (readfloat f) * -1
append UV_array [tu,tv,0]
)
Face_array = #()
for b = 1 to Offset_Info_array[a].MeshFaceSectionCount Do (

fseek f Face_Info_Array.FOffset2#seek_set
if Face_Info_Array.Ftype == 5 do (
StartDirection = -1
f1 = readshort f#unsigned + 1
f2 = readshort f#unsigned + 1
FaceDirection = StartDirection
do (
f3 = readshort f#unsigned
if (f3==0xFFFF) then (
f1 = readshort f#unsigned + 1
f2 = readshort f#unsigned + 1
FaceDirection = StartDirection
) else (
f3 += 1
FaceDirection *= -1
if (f1!=f2)AND(f2!=f3)AND(f3!=f1) then (
if FaceDirection > 0 then append Face_array [f1,f2,f3]
else append Face_array [f1,f3,f2]
)
f1 = f2
f2 = f3
)
) while ((ftell f) != (Face_Info_Array.FOffset2 + (Face_Info_Array.FCount2 * 2)))
)
if Face_Info_Array.Ftype == 4 do (
Do (
f1 = (readshort f) + 1   --read face indices, games are start form 0, but Max start from 1
f2 = (readshort f) + 1   --so we add 1 to each index
f3 = (readshort f) + 1
append Face_array [f1,f2,f3] --save faces to Face_array
) while ((ftell f) != (Face_Info_Array.FOffset2 + (Face_Info_Array.FCount2 * 2)))
)
)
msh = mesh vertices:Vert_array faces:Face_array name:Offset_Info_array[a].MeshName
msh.numTVerts = UV_array.count
buildTVFaces msh
msh.material = meditMaterials[aa][(Face_Info_Array[1].MatNumber1)]
for j = 1 to UV_array.count do setTVert msh j UV_array[j]
for j = 1 to Face_array.count do setTVFace msh j Face_array[j]
for j = 1 to Normal_array.count do setNormal msh j Normal_array[j]
)
)

fclose f


I'm a little lost to say the least. The files I'm trying to use I believe are from Jacky Bryant. Not sure what bit though as it exported two hundred or so RAR files all containing BIN (One for the OBJ.BIN and one for TEX.BIN) I selected one at complete random: jakitm134_obj.bin and jakitm134_tex.bin i'm convinced I'm doing something wrong but can't identify where :/



Any advice or assist would be awesome :)


Can you upload some samples pls??, I wanna try a script I have.
Image

Post Reply