Jump to content

Driveclub (PS4)


Recommended Posts

Does anyone know how to extract models from DriveClub (PS4)?
I've seen mods for other games (AssettoCorsa) made from DriveClub.  The quality of the cars is quite good with the correct topology.
The models are extracted, but I couldn't find any information about tools and converters.
I extracted 2 PKG archives with PKG PS4PKGViewer.v1.5-LMAN.
(screenshots below). There are .dat files in them.
I can't unpack them. I tried quickbms but it can't decompress, in the process some temp file is created and then it is deleted immediately....
Maybe someone has all the tools and can tell me how to do it or extract all the machines and post them as an archive here, please?

 

FilesDriveClubUnpackPKG.jpg

Link to comment
Share on other sites

1 hour ago, h3x3r said:
https://github.com/Nenkai/DriveClubFS

 

I tried this tool, but nothing happens when I run it. I also transferred dat to exe and it doesn't work...

Link to comment
Share on other sites

Posted (edited)

I run the tool but it gives error.

E:\DOWNLOAD\DriveClub\Unpacked>DriveClubFS unpackall -i E:\DOWNLOAD\DriveClub\Unpacked -o unpacked
DriveClubFS 0.1 - by Nenkai#9075
[:] Loading Evo File System from directory: E:\DOWNLOAD\DriveClub\Unpacked
Unhandled exception. System.IO.InvalidDataException: Data corrupted. 0x12345678 after index entries not found.

Now i am checking source. Maybe i can do something with it.

EDiT: @MichaelBFS what game version you have? I think it's targeted for latest. Just wild guess.

Well when i dissabled some of exceptions i get at least some file names. But as you can see some of them are linked to the files which acctualy doesn't exists.

Like > game250.dat or > game116.dat.

E:\DOWNLOAD\DriveClub\unpacker>DriveClubFS unpackall -i E:\DOWNLOAD\DriveClub\Unpacked -o E:\DOWNLOAD\DriveClub\Unpacked\unpacked
DriveClubFS 0.1 - by Nenkai#9075
[:] Loading Evo File System from directory: E:\DOWNLOAD\DriveClub\Unpacked
[!] Loading Evo File System from game.idx file
[:] Version: 4300
[:] Data Files registered: 63
[:] Version: 4300
[:] File System entries: 5343
[/] File System loaded.
[x] Cound not process 'data/nexus/statemachine/crowd/female_27_flare_03_still.rpk' - Data File 'game120.dat' missing or errored
[x] Cound not process 'newui/fonts/fonts_default.ctl' - Data File 'game005.dat' missing or errored
[x] Cound not process 'liveryeditor/assets/stickers/decal_subculture_09_3x1.tif_pixel_buffer.rpk' - Data File 'game088.dat' missing or errored
[x] Cound not process 'liveryeditor/assets/club_symbol/clubbadge_symbol_dominant_01.tif_pixel_buffer.rpk' - Data File 'game250.dat' missing or errored
[x] Cound not process 'data/cameras/vehicle/driver_head_cameras/jaguar_c-x75_concept.txt' - Data File 'game116.dat' missing or errored
[x] Cound not process 'liveryeditor/assets/designs/livery_master_55.tif_pixel_buffer.rpk' - Data File 'game051.dat' missing or errored
[x] Cound not process 'data/nexus/statemachine/crowd/female_26_flare_02_wave.rpk' - Data File 'game192.dat' missing or errored
[x] Cound not process 'data/nexus/skel/wiper/mclaren_mp4-12c.rpk' - Data File 'game152.dat' missing or errored
[x] Cound not process 'data/cameras/vehicle/replay_cameras/bmw_m3_gts/wheel_rear.txt' - Data File 'game066.dat' missing or errored
[x] Cound not process 'data/nexus/skel/wiper/ferrari_enzo.rpk' - Data File 'game178.dat' missing or errored
[x] Cound not process 'data/leveldata/chile_road_point_04_n.rpk' - Data File 'game044.dat' missing or errored
[x] Cound not process 'data/cameras/vehicle/replay_cameras/pagani_huayra/drift.txt' - Data File 'game051.dat' missing or errored
[x] Cound not process 'data/leveldata/chile_road_point_04_r.rpk' - Data File 'game072.dat' missing or errored
[x] Cound not process 'liveryeditor/assets/designs/livery_patterns_03.tif_pixel_buffer.rpk' - Data File 'game230.dat' missing or errored
[x] Cound not process 'data/nexus/skel/wiper/bmw_m3_gts.rpk' - Data File 'game040.dat' missing or errored
[x] Cound not process 'liveryeditor/assets/stickers/decal_motorsport_12_3x1.tif_pixel_buffer.rpk' - Data File 'game234.dat' missing or errored

Problem is with this magic. If it doesn't match it throws error. And if I change it to matching one it throws another error with index.

So i assuming it's not for initial version of the game 1.00. Still downloading 1.28 so time will tell.

error.jpg

EDiT: Yep, it's for 1.28 version of the game. Now it unpacks. 

image.png.e04d91a3602b0861fc97fc6d90f0b84c.png

Edited by h3x3r
Link to comment
Share on other sites

Wow!! Thanks, looks like I downloaded the wrong version.
Could you send me a link to the correct version?
I'll try downloading a different one.
I just had a couple more questions. If I manage to download the other version and unzip it, what do I do next to open the models and textures? What tools are needed?

Here is an example of an extracted car from Driveclub. Screenshot and in FBX format and textures in the archive link below.

example extracted car from Driveclub in FBX and textures:

https://www.mediafire.com/file/cv8wfb0yco1j2ih/Driveclub_ferrari_f40.zip/file

Driveclub_ferrari_f40Screen.jpg

Link to comment
Share on other sites

Posted (edited)

I'm trying to extract the Camaro ZL1 model.

I have both base and 1.28 version extracted with orbis-pub-chk but I don't know how to run the DriveClubFS tool. It doesn't have an .exe and the files there default to visual studio which I have no idea how to use. Am I supposed to compile an .exe myself in visual studio or...?

Edit: I'm stupid the .exe was attached separately. I will update my progress

Edit 2: Extracted the .dat files and now I need to another tool to extract the .rpk file.

Screenshot (19).png

Edited by Turbulence
Updating progress
Link to comment
Share on other sites

  • 4 weeks later...

Run DriveClubFS.sln in VsCode
Make sure you download the DriveClubFS.exe and put it in DriveClubFS\bin\net6.0\DriveClubFS.exe or it will give you an error when trying to run it.

Next the program seems to be looking for a specific directory saying "game.ndx does not exist in the folder"
I don't know how to go in the code and change it or if it should be changed but i recreated the directory by reformatting a flash drive to change the letter then making all the folders.

One thing to note, I combined the base game files with the update files without replacing duplicates. A handful of game files fail to extract without the base game files.

At this point the data is readable in .rpk form but I used Quickbms to extract it even further. I don't know if you should extract it more since I know very little about datamining, but either way you can begin to extract the actual model.

Microsoft Visual Studio Debug Console 6_11_2024 11_05_00 AM.png

C__Users_Turbulence_Desktop_DriveClubFS-master_DriveClubFS-master_DriveClubFS_bin_Debug_net6.0_DriveClubFS.exe 6_11_2024 11_43_41 AM.png

Model Researcher v2.8 - 000000a2.dfont 6_11_2024 11_36_48 AM.png

Link to comment
Share on other sites

17 hours ago, Turbulence said:

Run DriveClubFS.sln in VsCode
Make sure you download the DriveClubFS.exe and put it in DriveClubFS\bin\net6.0\DriveClubFS.exe or it will give you an error when trying to run it.

Next the program seems to be looking for a specific directory saying "game.ndx does not exist in the folder"
I don't know how to go in the code and change it or if it should be changed but i recreated the directory by reformatting a flash drive to change the letter then making all the folders.

One thing to note, I combined the base game files with the update files without replacing duplicates. A handful of game files fail to extract without the base game files.

At this point the data is readable in .rpk form but I used Quickbms to extract it even further. I don't know if you should extract it more since I know very little about datamining, but either way you can begin to extract the actual model.

Microsoft Visual Studio Debug Console 6_11_2024 11_05_00 AM.png

C__Users_Turbulence_Desktop_DriveClubFS-master_DriveClubFS-master_DriveClubFS_bin_Debug_net6.0_DriveClubFS.exe 6_11_2024 11_43_41 AM.png

Model Researcher v2.8 - 000000a2.dfont 6_11_2024 11_36_48 AM.png

could you elaborate more about the model researcher pro part of the extraction? because i dont seem to understand how to get at least the meshes from the model

Link to comment
Share on other sites

1 hour ago, MxjorZ said:

could you elaborate more about the model researcher pro part of the extraction? because i dont seem to understand how to get at least the meshes from the model

I hardly understand it myself. I'm trying to study data structures so I can extract it but for now the only thing I figured out was how to get floating points.

here's a guide for starters

https://mr.game-viewer.org/tutorial.php

Edited by Turbulence
adding a link
  • Like 1
Link to comment
Share on other sites

 

Well here is bms script for *.RPK. Thanks to Nenkai for his 010 editor template on which is bms based but with some edits. There are still duplicates. You can automatically rename them or just skip it.

Spoiler
#####################################
#    Drive Club *.rpk - Unpacker    #
#####################################
get BaseFileName basename

getdstring Dummy 0x36
get Version uint32
get MarkerMagicStart uint32
get ResourceCount uint32
get Unknown_0 uint32
get Unknown_1 uint32
get ResourcesNameLength uint32
get SourceFileNamesLength uint32
get Unknown_2_Count uint32
get Unknown_3_Count uint32
getdstring MainIdentifier 0x6
get MainIdentifierType uint16
savepos ResourcesNameBaseOffset
getdstring ResourcesNameData ResourcesNameLength
savepos SourceFileNamesBaseOffset
getdstring SourceFileNamesData SourceFileNamesLength
savepos TableOffset

for i = 0 < ResourceCount
	
	getdstring Identifier 0x6
	get IdentifierType uint16
	get DataSize uint32
	get DataOffset uint32
	get UnkResourceIdentifierCount uint16
	savepos Tmp
	goto DataOffset
	getdstring Dummy 0x8
	get FileId uint32
	goto Tmp
	
	for j = 0 < UnkResourceIdentifierCount
		getdstring Identifier 0x6
		get UnkIdentifierType uint16
	next j
	
	get ResourceNameCount uint16
	
	for k = 0 < ResourceNameCount
		get ResourceNameOffset uint32
		savepos ResourceNameOffsetTmp
		xmath ResourceNameOff "ResourceNameOffset + ResourcesNameBaseOffset"
		goto ResourceNameOff
		get ResourceName string
		goto ResourceNameOffsetTmp
	next k
	
	get SourceAssetPathCount uint16
	
	for l = 0 < SourceAssetPathCount
		get SourceAssetPathOffset uint32
		savepos SourceAssetPathOffsetTmp
		xmath SourceAssetPathOff "SourceAssetPathOffset + SourceFileNamesBaseOffset"
		goto SourceAssetPathOff
		get SourceAssetPath string
		goto SourceAssetPathOffsetTmp
	next l
	
	if IdentifierType == 0
		set Extension string "Unknown"
	elif IdentifierType == 1
		set Extension string "ResourceInfoBlock"
	elif IdentifierType == 2
		set Extension string "StreamFormat"		
	elif IdentifierType == 3
		set Extension string "VertexBuffer"	
	elif IdentifierType == 4
		set Extension string "IndexBuffer"
	elif IdentifierType == 5
		set Extension string "PixelBuffer"	
	elif IdentifierType == 6
		set Extension string "Shader"	
	elif IdentifierType == 7
		set Extension string "Material"	
	elif IdentifierType == 8
		set Extension string "Mesh"	
	elif IdentifierType == 9
		set Extension string "ResourceCollection"	
	elif IdentifierType == 10
		set Extension string "Havok"
	elif IdentifierType == 11
		set Extension string "Hierarchy"
	elif IdentifierType == 12
		set Extension string "RigidBodyBindings"
	elif IdentifierType == 13
		set Extension string "MotorstormWorld"
	elif IdentifierType == 14
		set Extension string "Meshes"
	elif IdentifierType == 15
		set Extension string "Scene"
	elif IdentifierType == 16
		set Extension string "MotorstormVehicle"
	elif IdentifierType == 17
		set Extension string "Font"
	elif IdentifierType == 18
		set Extension string "Cameras"
	elif IdentifierType == 19
		set Extension string "Camera"
	elif IdentifierType == 20
		set Extension string "MotorstormSceneobject"
	elif IdentifierType == 21
		set Extension string "MotorstormEnvironment"
	elif IdentifierType == 22
		set Extension string "MotorstormCharacter"
	elif IdentifierType == 23
		set Extension string "BasicBitmap"
	elif IdentifierType == 24
		set Extension string "MotorstormSolids"
	elif IdentifierType == 25
		set Extension string "MotorstormGroundRush"
	elif IdentifierType == 26
		set Extension string "MotorstormPatricleEffect"
	elif IdentifierType == 27
		set Extension string "Roadsystem"
	elif IdentifierType == 28
		set Extension string "GpuProgram"
	elif IdentifierType == 29
		set Extension string "GpuProgramBase"
	elif IdentifierType == 30
		set Extension string "AttributeSet"
	elif IdentifierType == 31
		set Extension string "AttributeSetBindings"
	elif IdentifierType == 32
		set Extension string "BasicFont"
	elif IdentifierType == 33
		set Extension string "OcTree"
	elif IdentifierType == 34
		set Extension string "GuiAnim"
	elif IdentifierType == 35
		set Extension string "Plant"
	elif IdentifierType == 36
		set Extension string "Animations"
	elif IdentifierType == 37
		set Extension string "MotorstormLights"
	elif IdentifierType == 38
		set Extension string "Bin"
	elif IdentifierType == 39
		set Extension string "Xml"
	elif IdentifierType == 40
		set Extension string "Patch"
	elif IdentifierType == 41
		set Extension string "NexusCharacter"
	elif IdentifierType == 42
		set Extension string "NexusAnimation"
	elif IdentifierType == 43
		set Extension string "LevelData"
	elif IdentifierType == 44
		set Extension string "LevelTriggerVolumeResource"
	elif IdentifierType == 45
		set Extension string "LevelDoResetVolumeResource"
	elif IdentifierType == 46
		set Extension string "LevelNoResetVolumeResource"
	elif IdentifierType == 47
		set Extension string "LevelSpawnPoint"
	elif IdentifierType == 48
		set Extension string "LevelRoadRegionVolumeResource"
	elif IdentifierType == 49
		set Extension string "LevelStartStartFinishVolumeResource"
	elif IdentifierType == 52
		set Extension string "LevelRoadData"
	elif IdentifierType == 53
		set Extension string "AudioVehicleAudio"
	elif IdentifierType == 54
		set Extension string "AudioVehicleSoundEffect"
	elif IdentifierType == 55
		set Extension string "AudioVehicleSample"
	elif IdentifierType == 56
		set Extension string "RoadNetwork"
	elif IdentifierType == 57
		set Extension string "LevelSplitVolumeResource"
	elif IdentifierType == 58
		set Extension string "Dem"
	elif IdentifierType == 59
		set Extension string "DemTitle"
	elif IdentifierType == 60
		set Extension string "VehicleCustomData"
	elif IdentifierType == 61
		set Extension string "LevelScriptedRoadLine"
	elif IdentifierType == 62
		set Extension string "ProceduralPlacement"
	elif IdentifierType == 63
		set Extension string "ActorData"
	elif IdentifierType == 64
		set Extension string "HaboobTexAtlasIndex"	
	elif IdentifierType == 65
		set Extension string "Crowds"
	elif IdentifierType == 66
		set Extension string "AudioSoundGroup"
	elif IdentifierType == 67
		set Extension string "SvgMesh"
	elif IdentifierType == 68
		set Extension string "LevelDriftZone"
	elif IdentifierType == 69
		set Extension string "AudioFsb"
	elif IdentifierType == 70
		set Extension string "AnimationLib"
	elif IdentifierType == 71
		set Extension string "TopMips"
	elif IdentifierType == 72
		set Extension string "LevelAiMaxSpeedVolumeResource"
	elif IdentifierType == 73
		set Extension string "ScriptedRoadRegionVolumeVolumeResource"
	elif IdentifierType == 74
		set Extension string "TriggerData"
	elif IdentifierType == 75
		set Extension string "DustData"
	elif IdentifierType == 76
		set Extension string "VehicleParticlesData"		
	else
		set Extension string "dat"
	endif

	if IdentifierType == 2
		string Name p "%s/%u.%s" BaseFileName FileId Extension
	elif IdentifierType == 3
		string Name p "%s/%u.%s" BaseFileName FileId Extension
	elif IdentifierType == 4
		string Name p "%s/%u.%s" BaseFileName FileId Extension
	elif IdentifierType == 5
		string Name p "%s/%s" BaseFileName SourceAssetPath
	elif IdentifierType == 38
		string Name p "%s/%u.%s" BaseFileName FileId Extension
	elif IdentifierType == 71
		string Name p "%s/%s" BaseFileName SourceAssetPath
	else	
		string Name p "%s/%s/%s.%s" BaseFileName SourceAssetPath ResourceName Extension
	endif
	log Name DataOffset DataSize
next i

 

DC_templates.7z

Edited by h3x3r
  • Like 3
Link to comment
Share on other sites

1 hour ago, h3x3r said:

 

Well here is bms script for *.RPK. Thanks to Nenkai for his 010 editor template on which is bms based but with some edits. There are still duplicates. You can automatically rename them or just skip it.

  Reveal hidden contents
#####################################
#    Drive Club *.rpk - Unpacker    #
#####################################
get BaseFileName basename

getdstring Dummy 0x36
get Version uint32
get MarkerMagicStart uint32
get ResourceCount uint32
get Unknown_0 uint32
get Unknown_1 uint32
get ResourcesNameLength uint32
get SourceFileNamesLength uint32
get Unknown_2_Count uint32
get Unknown_3_Count uint32
getdstring MainIdentifier 0x6
get MainIdentifierType uint16
savepos ResourcesNameBaseOffset
getdstring ResourcesNameData ResourcesNameLength
savepos SourceFileNamesBaseOffset
getdstring SourceFileNamesData SourceFileNamesLength
savepos TableOffset

for i = 0 < ResourceCount
	
	getdstring Identifier 0x6
	get IdentifierType uint16
	get DataSize uint32
	get DataOffset uint32
	get UnkResourceIdentifierCount uint16
	savepos Tmp
	goto DataOffset
	getdstring Dummy 0x8
	get FileId uint32
	goto Tmp
	
	for j = 0 < UnkResourceIdentifierCount
		getdstring Identifier 0x6
		get UnkIdentifierType uint16
	next j
	
	get ResourceNameCount uint16
	
	for k = 0 < ResourceNameCount
		get ResourceNameOffset uint32
		savepos ResourceNameOffsetTmp
		xmath ResourceNameOff "ResourceNameOffset + ResourcesNameBaseOffset"
		goto ResourceNameOff
		get ResourceName string
		goto ResourceNameOffsetTmp
	next k
	
	get SourceAssetPathCount uint16
	
	for l = 0 < SourceAssetPathCount
		get SourceAssetPathOffset uint32
		savepos SourceAssetPathOffsetTmp
		xmath SourceAssetPathOff "SourceAssetPathOffset + SourceFileNamesBaseOffset"
		goto SourceAssetPathOff
		get SourceAssetPath string
		goto SourceAssetPathOffsetTmp
	next l
	
	if IdentifierType == 0
		set Extension string "Unknown"
	elif IdentifierType == 1
		set Extension string "ResourceInfoBlock"
	elif IdentifierType == 2
		set Extension string "StreamFormat"		
	elif IdentifierType == 3
		set Extension string "VertexBuffer"	
	elif IdentifierType == 4
		set Extension string "IndexBuffer"
	elif IdentifierType == 5
		set Extension string "PixelBuffer"	
	elif IdentifierType == 6
		set Extension string "Shader"	
	elif IdentifierType == 7
		set Extension string "Material"	
	elif IdentifierType == 8
		set Extension string "Mesh"	
	elif IdentifierType == 9
		set Extension string "ResourceCollection"	
	elif IdentifierType == 10
		set Extension string "Havok"
	elif IdentifierType == 11
		set Extension string "Hierarchy"
	elif IdentifierType == 12
		set Extension string "RigidBodyBindings"
	elif IdentifierType == 13
		set Extension string "MotorstormWorld"
	elif IdentifierType == 14
		set Extension string "Meshes"
	elif IdentifierType == 15
		set Extension string "Scene"
	elif IdentifierType == 16
		set Extension string "MotorstormVehicle"
	elif IdentifierType == 17
		set Extension string "Font"
	elif IdentifierType == 18
		set Extension string "Cameras"
	elif IdentifierType == 19
		set Extension string "Camera"
	elif IdentifierType == 20
		set Extension string "MotorstormSceneobject"
	elif IdentifierType == 21
		set Extension string "MotorstormEnvironment"
	elif IdentifierType == 22
		set Extension string "MotorstormCharacter"
	elif IdentifierType == 23
		set Extension string "BasicBitmap"
	elif IdentifierType == 24
		set Extension string "MotorstormSolids"
	elif IdentifierType == 25
		set Extension string "MotorstormGroundRush"
	elif IdentifierType == 26
		set Extension string "MotorstormPatricleEffect"
	elif IdentifierType == 27
		set Extension string "Roadsystem"
	elif IdentifierType == 28
		set Extension string "GpuProgram"
	elif IdentifierType == 29
		set Extension string "GpuProgramBase"
	elif IdentifierType == 30
		set Extension string "AttributeSet"
	elif IdentifierType == 31
		set Extension string "AttributeSetBindings"
	elif IdentifierType == 32
		set Extension string "BasicFont"
	elif IdentifierType == 33
		set Extension string "OcTree"
	elif IdentifierType == 34
		set Extension string "GuiAnim"
	elif IdentifierType == 35
		set Extension string "Plant"
	elif IdentifierType == 36
		set Extension string "Animations"
	elif IdentifierType == 37
		set Extension string "MotorstormLights"
	elif IdentifierType == 38
		set Extension string "Bin"
	elif IdentifierType == 39
		set Extension string "Xml"
	elif IdentifierType == 40
		set Extension string "Patch"
	elif IdentifierType == 41
		set Extension string "NexusCharacter"
	elif IdentifierType == 42
		set Extension string "NexusAnimation"
	elif IdentifierType == 43
		set Extension string "LevelData"
	elif IdentifierType == 44
		set Extension string "LevelTriggerVolumeResource"
	elif IdentifierType == 45
		set Extension string "LevelDoResetVolumeResource"
	elif IdentifierType == 46
		set Extension string "LevelNoResetVolumeResource"
	elif IdentifierType == 47
		set Extension string "LevelSpawnPoint"
	elif IdentifierType == 48
		set Extension string "LevelRoadRegionVolumeResource"
	elif IdentifierType == 49
		set Extension string "LevelStartStartFinishVolumeResource"
	elif IdentifierType == 52
		set Extension string "LevelRoadData"
	elif IdentifierType == 53
		set Extension string "AudioVehicleAudio"
	elif IdentifierType == 54
		set Extension string "AudioVehicleSoundEffect"
	elif IdentifierType == 55
		set Extension string "AudioVehicleSample"
	elif IdentifierType == 56
		set Extension string "RoadNetwork"
	elif IdentifierType == 57
		set Extension string "LevelSplitVolumeResource"
	elif IdentifierType == 58
		set Extension string "Dem"
	elif IdentifierType == 59
		set Extension string "DemTitle"
	elif IdentifierType == 60
		set Extension string "VehicleCustomData"
	elif IdentifierType == 61
		set Extension string "LevelScriptedRoadLine"
	elif IdentifierType == 62
		set Extension string "ProceduralPlacement"
	elif IdentifierType == 63
		set Extension string "ActorData"
	elif IdentifierType == 64
		set Extension string "HaboobTexAtlasIndex"	
	elif IdentifierType == 65
		set Extension string "Crowds"
	elif IdentifierType == 66
		set Extension string "AudioSoundGroup"
	elif IdentifierType == 67
		set Extension string "SvgMesh"
	elif IdentifierType == 68
		set Extension string "LevelDriftZone"
	elif IdentifierType == 69
		set Extension string "AudioFsb"
	elif IdentifierType == 70
		set Extension string "AnimationLib"
	elif IdentifierType == 71
		set Extension string "TopMips"
	elif IdentifierType == 72
		set Extension string "LevelAiMaxSpeedVolumeResource"
	elif IdentifierType == 73
		set Extension string "ScriptedRoadRegionVolumeVolumeResource"
	elif IdentifierType == 74
		set Extension string "TriggerData"
	elif IdentifierType == 75
		set Extension string "DustData"
	elif IdentifierType == 76
		set Extension string "VehicleParticlesData"		
	else
		set Extension string "dat"
	endif

	if IdentifierType == 2
		string Name p "%s/%u.%s" BaseFileName FileId Extension
	elif IdentifierType == 3
		string Name p "%s/%u.%s" BaseFileName FileId Extension
	elif IdentifierType == 4
		string Name p "%s/%u.%s" BaseFileName FileId Extension
	elif IdentifierType == 5
		string Name p "%s/%s" BaseFileName SourceAssetPath
	elif IdentifierType == 38
		string Name p "%s/%u.%s" BaseFileName FileId Extension
	elif IdentifierType == 71
		string Name p "%s/%s" BaseFileName SourceAssetPath
	else	
		string Name p "%s/%s/%s.%s" BaseFileName SourceAssetPath ResourceName Extension
	endif
	log Name DataOffset DataSize
next i

 

DC_templates.7z 5.71 kB · 2 downloadsfile and template.rar

cool that's the same script I used. I've made a point cloud and I've found some of the face tables, but how do you figure out where the face start offset is? and how do you interpret a file like this? here's the template with my progress if you need it.

Link to comment
Share on other sites

1 hour ago, Turbulence said:

how do you figure out where the face start offset is?

Everything is in *.Mesh file. I partially reversed it. You can use my template on it.

I have a version which prints some info like this:

     Model Index: 1
Vertex Buffer Id: 3248779072
 Index Buffer Id: 2139299717
    Vertex Count: 7829
    Index Offset: 31b5e
     Index Count: 384

    Vertex Count: 7730
    Index Offset: 31e5e
     Index Count: 576

    Vertex Count: 7553
    Index Offset: 322de
     Index Count: 25107

 

Edited by h3x3r
Link to comment
Share on other sites

48 minutes ago, h3x3r said:

Everything is in *.Mesh file. I partially reversed it. You can use my template on it.

I have a version which prints some info like this:

     Model Index: 1
Vertex Buffer Id: 3248779072
 Index Buffer Id: 2139299717
    Vertex Count: 7829
    Index Offset: 31b5e
     Index Count: 384

    Vertex Count: 7730
    Index Offset: 31e5e
     Index Count: 576

    Vertex Count: 7553
    Index Offset: 322de
     Index Count: 25107

 

How do you use the template to print information? What are indexes and vertex buffers used for? Also just occurred to me that I gave you the template without the file

chevrolet_camaro_zl1.rar

Edited by Turbulence
Link to comment
Share on other sites

I don't use Model Researcher. Only H2O "hex to object" just to confirm stride info. Which is variable and i don't know where to get that stride type/order.

There is only stride size in vertex buffer. 

BTW vertex buffers are vertices + normals + uv and maybe more.

Index buffers are face indices.

Link to comment
Share on other sites

That was a rhetorical question only. (I'll talk about it when I found them, if any.)

Are these the mesh names? There's 110 of them:

dash_decals#dash_decals
glass_toughened_damage_outside#glass_toughened_damage_outside_lod1
radiator_grille#radiator_grille
glass_windscreen_outside_rain#glass_windscreen_outside_rain_lod2
leather_rain#leather_rain

...

body_livery_damage_carbon#body_livery_damage_carbon_lod3
leather#leather
wheel_paint_damage#wheel_paint_damage
body_user_damage_carbon#body_user_damage_carbon_lod1
plastic_damage#plastic_damage_lod1

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

(A mix of lods, so they have to be grouped somehow.)

I assume you can collect the vertex blocks in a simpple manner. after the 010000 the count and the stride (32 and 12):

rpk vertex blocks

(The harder thing will be to combine them with the face indices.)

edit: hmm, these 32 vertices don't form a mesh. Bad example...

v-block at 0x147f4, vCnt=5400 is the first one

Edited by shak-otay
Link to comment
Share on other sites

3 hours ago, shak-otay said:

That was a rhetorical question only. (I'll talk about it when I found them, if any.)

Are these the mesh names? There's 110 of them:

dash_decals#dash_decals
glass_toughened_damage_outside#glass_toughened_damage_outside_lod1
radiator_grille#radiator_grille
glass_windscreen_outside_rain#glass_windscreen_outside_rain_lod2
leather_rain#leather_rain

...

body_livery_damage_carbon#body_livery_damage_carbon_lod3
leather#leather
wheel_paint_damage#wheel_paint_damage
body_user_damage_carbon#body_user_damage_carbon_lod1
plastic_damage#plastic_damage_lod1

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

(A mix of lods, so they have to be grouped somehow.)

I assume you can collect the vertex blocks in a simpple manner. after the 010000 the count and the stride (32 and 12):

rpk vertex blocks

(The harder thing will be to combine them with the face indices.)

edit: hmm, these 32 vertices don't form a mesh. Bad example...

v-block at 0x147f4, vCnt=5400 is the first one

Those are actually material names according to the template. If you run nenkai's template in 010 editor, it'll show you all of the names. Yea that's the same trick I've been using to get vertex blocks, setting the offset somewhere after 00 00 01 00

Edited by Turbulence
Link to comment
Share on other sites

There seems to be 2 different types of vertex data files - one has just the basic vertices, and the other has vertices, UVs, etc with some vetex scaling.  The different vertex parts and material info are referenced from the "Mesh" file type, some meshes use multiple vertex and face files.

Just an example from some manual testing of "|BODY_COL|BODY|BODY_LOD1|BODY_LOD1Shape"

image.png.58f74ce0a2dba7f00483c18941e134eb.png

Link to comment
Share on other sites

edit for the types:

# 0xb304d, 37437 [12]
# 0x120b78, 37437 [44]

# 0x468741, 628 [12]
# 0x46a500, 628 [44]

# 0x47110c, 24514 [12]
# 0x4b8e73, 24514 [44]

# 0x66b2db, 3623 [12]
# 0x675cf4, 3623 [36]

# 0x695a8c, 17136 [12]
# 0x6c7e11, 17136 [36]

and yeah, it's generally a little bit tricky:

chevi_camaro

Using the given vertex count sometimes results in extra faces:

camaro seats

Edited by shak-otay
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...