Making Addon Models

This section of the guide assumes that you have some familiarity with 3D modeling, texturing, and rigging. This is a tutorial for how to set up models to work with Hyperdeep specifically, and not a tutorial on how to make 3D models in general.

We use Blender in this guide, but the same steps can be applied to any 3D software.

Introduction

Addon models for Hyperdeep are made up of three elements:

  1. The model (fbx)
  2. Textures (png)
  3. Config (json)

This section will run through how to correctly set up each of these elements.

The Model

Hyperdeep supports importing skeletal meshes in FBX format. These models must have the same skeleton as HD-chan. For this purpose we provide a "mannequin" file:

[ Mannequin file download ]

As well as a skeleton, the mannequin also contains a vertex weighted model of HD-chan to help you with sizing and weight painting. The easiest way to get started with weight painting (at least for relatively form-fitting clothing) is to transfer the weights from the mannequin mesh to your addon mesh.

Hyperdeep supports a maximum of 10 material slots per addon.

When exporting your model, include both the skeleton and your addon mesh. Don't bother packing in textures as the game needs to load them separately anyway.

Textures

HD will search the addons directory for png files matching a certain naming scheme, as follows:

[addon name]_[material slot]_[map].png

The [addon name] should be the same as your model and config files. The [material slot] determines which material slot the texture will be applied to. An addon can contain a maximum of ten material slots, numbered from 0 to 9. If you don’t include a number the game will just assume it’s slot 0. Do not pad with zeros.

The [map] value determines what type of texture it is, and supports the following values (values in parentheses are equivalent, meaning you can name the file any of these and it’ll still detect them):

  • diffuse (diff, albedo)
  • normal (norm)
  • metallic (metal)
  • roughness (rough)
  • emissive (emit)

The shader for addons is a stylized, vaguely PBR material with a lot of post-processing. Don’t expect the results to look exactly like they do in another rendering engine.

The alpha channel of the diffuse texture will be used for the opacity of the addon.

Mask

In addition to the textures applied to the addon itself, an additional mask texture can also be specified. This optional texture determines which (if any) parts of HD-chan's body should be hidden (made invisible) while the addon is enabled. This is useful for creating addons that should hide or replace a part of HD-chan's body, even if the addon geometry doesn't actually cover the part in question, e.g., a helmet covering HD-chan's ears.

Masks use the full UV map, with black representing hidden areas, and white representing unmodified areas. When multiple addons with masks are used, their masks are multiplied.

Mask textures are specified using the following naming scheme:

[addon name]_mask.png

Thumbnail

The game will search for a file called [addon_name].png and use it as a thumbnail in-game.

Config

The config JSON file determines a few things about how the addon will appear in game. Here’s an example:

2b_shoes.json
{
    "category": "shoes",
    "viewoffset": "1",
    "hair": false,
    "bra": false,
    "shoes": true,
    "shoe_platform": "0",
    "shoe_angle": "40",
    "hide_hair_main": false,
    "hide_hair_bangs": false,
    "hide_hair_temples": false
}

Let’s run through the different elements:

  • Filename: This has to be the same as the model filename and the [addon name] part of the texture filenames. This determines what your addon is called in-game.
  • category: Where in the designer your addon will appear. If you specify a category that doesn’t yet exist in the game by default, the game will create a new one for you. Any addon with the “hair” flag set to true will appear in the hair-main section irrespective of this value. These are the default options:
    • panties
    • bra
    • top
    • bottom
    • dress
    • socks
    • stockings
    • bodysuit
    • outerwear
    • kemomimi
    • headgear
    • necklace
    • horns
    • earringsl
    • earringsr
    • glasses
    • shoes
    • nipplel
    • nippler
    • facialpiercings
    • bellybutton
  • viewoffset: When the game renders your addon, it will push the geometry towards the camera a little bit according to this value. This helps to alleviate clipping. If you notice HD-chan’s skin poking through clothing, increase this value (or use a mask). Negative values are supported but seldom useful. I would always recommend having a value of at least 1 except in specific circumstances. This can be tweaked in-game too.
  • hair: Whether the addon is hair. Hair addons replace HD-chan’s existing hair when they’re added. You can’t currently combine hair addons and default hair pieces, or use multiple hair addons together, so any hair addons should be imported together as a single object.
  • bra: Whether the addon acts as a bra. Bras change the physics of HD-chan’s breasts and flatten her nipples.
  • shoes: Whether the addon is a pair of shoes. Shoes change the behaviour of HD-chan’s feet.
  • shoe_angle: The angle that HD-chan’s feet rest at in these shoes. Flat shoes are 0, the built-in heels are 40, so picking a value in this range would be best.
  • shoe_platform: Thickness of shoe sole and hence displacement from the ground. The heel/toe adjustments are not fully implemented yet so don’t worry too much about these. More for future-proofing than anything.
  • hide_hair_[main, bangs, temples]: Whether the addon, when active, should make the individual elements of HD-chan's hair invisible.