Here's a guide on how to convert characters from Cyberpunk 2077. It's kind a difficult, but you'll get them with textures and materials. You should know Blender at least on some level.

1. Download wolvenkit https://github.com/WolvenKit/WolvenKit
2. Download/install blender importer https://github.com/WolvenKit/Cyberpunk-Blender-add-on
3. Run wolvenkit and create new mod:

4. In Asset Browser, find character .ent file by name (e.g.: john):

5. Double click this character to add into your project (mod) and double click it from your project hierarchy:


6. You'll see this:

7. Go to Tools > Script Manager and run Export_Ent script. You can close Script Manage now, the process of extracting will not terminate until it's finish:

8. You'll see the process in the Log window. Wait till its end:

9. Look for character_name.ent.json file in the mod directory:
Example: ..\[Your_Project_Name]\source\raw\base\quest\primary_characters\johnny.ent.json
10. Import that file into the blender with default settings and preferable appearance:


Appearance info: https://wiki.redmodding.org/wolvenkit/modding-community/exporting-to-blender#importing-a-specific-appearance

10. Here's what you will see after all the textures, materials and models will be loaded:
Character will be loaded into blender
No proper skeleton just yet, tho every model has individual skeleton and skin weights
Textures are packed into .blend file
Materials are set up

11. Save this as blend file
12. Unpack textures into the character folder (it will create \texture\ folder) with File > External Data > Unpack Resources > Write files to current directory
Or if the textures are not packed, you can first pack them with File > External Data > Pack Resources, Save your blend file and then unpack them with File > External Data > Unpack Resources > Write files to current directory. After this you will have all the used textures in the texture directory next to your blend file.
13. Load proper corresponding armature (for johnny.ent it should be man_base):
In blender viewport, press N key
In the panel open CP2077 Modding tab
In that tab unfold Animation Tools panel
Choose corresponding Rig and Load Selected Rig
Armature will be loaded (hidden for now)
You may close this panel in viewport, pressing N key

You'll see this after the load is finish:

14. Connect all the objects to the loaded armature:
In blender viewport, press N key
In the panel open CP2077 Modding tab
In that tab unfold Mesh Tools panel
Scroll till Modifiers
In the Target list, choose the armature name you have loaded previously (e.g.: man_base)
Press A in the viewport to select all the unhidden objects (but not other armatures)
Click to Change Armature Target in the panel
All objects are now driven by this armature
15. Rename objects and add them to the temp collection:
Press A in the viewport to select all the unhidden objects (except for other armatures) + proper armature (man_base or man_base_full in this case)
While all the objects are selected, run script rename_and_collect_objects.py (attached):

All the selected objects will be properly renamed and placed into Temp Collection:

16. Select only objects and then your armature in viewport with Shift key pressed, then press Ctrl+P and choose Armature Deform:

At this point:
Proper armature is loaded
All the meshes are connected to one armature
⚠ armature may not have some bones, like hair bones (we'll handle that later)
Textures are unpacked to the proper folder
Materials are set up

17. Now we need to connect what we got with the missing bones from all other collections:
Hide Temp Collection, all its objects and armature will be hidden
Unhide all objects, including armatures, with Alt+H. You will see something like this:

Select all armatures + objects if they are there, and press Ctrl+J to link them all into one
Select the armature you just got and then the proper one in the viewport with Shift key pressed, then press Ctrl+J to connect them:

You will see that missing bones along with bone copies will become a part of our proper armature:

18. Select proper armature and run remove_bones_with_001.py script (attached) to remove bone copies:

Only unique bones will be kept:

19. Put the bones which are left unparented to some parent (for which it makes sense) in EDIT MODE:
Select bones then select potential parent bone in viewport with Shift key pressed and hit Ctrl+P > Keep Offset

You should be having this after you connect all the bones. Just Armature and Root:

20. Remove all the redundant collections:

Now everything is set to one skeleton:
Done.
PixelPorts
2024-09-29 15:57:45 +0000 UTC