CCXL: Body Tattoos

Summary

This page will tell you how to use ArchiveXL to add body tattoos to the character creator

Wait, this is not what I want!

Requirements

  • You have downloaded the example project from Nexus, and merged it with your project's source folder

Step 1: Extracting the essentials

In this tutorial, we will create an overlay mesh from a base game body mesh, which you can get from the Asset Browser.

If you want to create an overlay from a modded body, use the #mod-browser instead.

This is the path to acquire the gender you want to work on for vanilla V.

For the tutorial, I will take male V's right arm:

base\characters\common\player_base_bodies\player_man_average\arms_hq\a0_000_pma_base_hq_r.mesh

Rename the .mesh file

ArchiveXL will do the heavy lifting, but if we leave the body mesh where it is right now, you will break the player body. For that reason, you need to rename the mesh file (you can use Wolvenkit's rename menu - hotkey: f2).

For this tutorial, we'll put it in the following path (where the template files expect it):

your_modder_name\ccxl\your_tattoo\models\your_tattoo_pma.mesh

Edit the .mesh in Blender

This tutorial will not go into details about this process, but you need to

  • Slightly inflate the mesh so that it doesn't clip with the body (you can use a shrinkwrap modifier for this)

  • Import back into your project (check the link in the first bullet point)

Step 2: Setting up the .mesh

In this section, we will configure your .mesh file to load the texture(s) via the included .mi.

Explanation

The textures are inside the textures folder. They are loaded by the .mi file.

If you want to tweak the parameters, make sure to edit this file (we will look at it in more detail later).

You can learn more about meshes and materials on the 3d objects: .mesh files page, and about .mi files under Re-using materials: .mi.

This is not necessary for the purpose of this tutorial.

Let's do it!

  1. Open your .mesh file in Wolvenkit

  2. Create or edit a materialEntry:

    1. Set the name to your_tattoo

    2. Set isLocalInstance to true (check the box)

  3. Create or edit a local material instance: If your mesh does not have preloadLocalMaterialInstances, use localInstances.materials instead.

    1. Set baseMaterial to your_modder_name\ccxl\your_tattoo\textures\your_tattoo.mi (the relative path to the .mi file)

  4. Create or edit an appearance: the chunkMaterials need to point at your_tattoo.

Step 3: Setting up the .app

As this is a template project, the .app is already configured. Since you moved the .mesh to your_modder_name\ccxl\your_tattoo\models\your_tattoo_pma.mesh, you don't need to change anything here:

Step 4: Renaming the files

Now, use dynamic renaming feature and rename your files.

Moving your .mesh file

Since our imported mesh is named as your_tattoo_pma, the dynamic renaming feature will allow you to rename it to whatever you want. If you ignored our advice, have fun correcting all those entries one by one:

Moving the other files

You can use the dynamic renaming feature (check the box) to safely move all the files in your project.

The inkcharcustomization file?

Change the localizedName entry to something globally unique – call it something like UI-customization_yourmoddername_my-first-tattoo.

If you end up using the same translation key as somebody else, the game might show either entry, and you probably don't want that.

Step 5: The Translation Entry [The .json]

This works the same as in CCXL: Hairs -> Step 5: The translation entry

This entry defines what the game will display instead of UI-customization_yourmoddername_my-first-tattoo (as defined in our .inkcharcustomization file).

FemaleVariant is used as default, so you can leave the male variant empty.

Step 6: The .xl file

Open the .archive.xl on your project's directory. Here, double-check the paths and make sure that they point at the relative paths of your files.

customizations:
  male: your_modder_name\ccxl\your_tattoo\your_tattoo_pma.inkcharcustomization
  female: your_modder_name\ccxl\your_tattoo\your_tattoo_pwa.inkcharcustomization
localization:
  onscreens:
    en-us: your_modder_name\ccxl\your_tattoo\localization\your_tattoo.json

Note: If you want to do for only one gender, just delete either male or female from the .xl and make sure to pick the mesh path to load the one you want if you want either of the genders. Adapting a tattoo is usually pretty easy! Why not make your mod for both genders?

Last updated

Was this helpful?