Skip to content

Commit f3cdecf

Browse files
update Open Source Docs from Roblox internal teams
1 parent 94e7704 commit f3cdecf

File tree

6 files changed

+71
-6
lines changed

6 files changed

+71
-6
lines changed

content/en-us/art/accessories/automatic-skinning-transfer.md

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,56 @@ When there isn't any skinning data on the accessory, or if you choose to overrid
2929

3030
While Automatic Skinning Transfer often works better than manual skinning, there are some best practices to reduce unexpected behavior with the accessory skinning. Like all modeling processes, constantly test your layered clothing and facial accessories on different avatar types to achieve the results you want.
3131

32+
### Special skinning transfer joints
33+
34+
Automatic skinning transfer may not work well for certain detailed accessory types, like eyelashes. To get a more controlled skinning transfer result, you have the option to skin accessory geometry to one of two specially named joints: `RBX_Leader` and `RBX_Follower`.
35+
36+
<Alert severity = 'info'>
37+
It's best to create these joints/bones directly beneath the Root joint in your hierarchy for simplicity and clarity. These joints/bones won't be detected as a part of your character model's R15 rig on import.
38+
</Alert>
39+
40+
Any vertices skinned to `RBX_Leader` will undergo the same transfer process that exists today. However, any vertices skinned to `RBX_Follower` will actually transfer based on their nearest leader vertex. This allows for better results in situations like an eyelash where the tip of an eyelash strand would normally transfer to somewhere on the brow area, rather than follow the base of the eyelash strand when moving.
41+
42+
For eyelashes, good candidates for RBX_Leader are the ones that are intended to sit right on the eyelid of the character. The remaining vertices can be skinned to RBX_Follower.
43+
44+
<GridContainer numColumns="2">
45+
<figure>
46+
<img alt="Screenshot of vertices assigned as leader." src="../../assets/avatar/dynamic-heads/creating-face-accessories/Vertices-Group-Leader.png" />
47+
<figcaption>Vertices of an eyelash assigned to a RBX_Leader bone vertex group.</figcaption>
48+
</figure>
49+
<figure>
50+
<img alt="Screenshot of vertices assigned as follower." src="../../assets/avatar/dynamic-heads/creating-face-accessories/Vertices-Group-Follower.png" />
51+
<figcaption>Vertices of an eyelash assigned to a RBX_Follower bone vertex group.</figcaption>
52+
</figure>
53+
</GridContainer>
54+
55+
In Blender, user the **Object Data Properties** > **Vertex Groups** to manage and view your vertex group assignments.
56+
57+
<img alt="Screenshot of properties panel with vertex group assignments" src="../../assets/avatar/dynamic-heads/creating-face-accessories/Vertices-Group-Assign.png" />
58+
59+
<Alert severity = 'info'>
60+
In Blender, vertex groups automatically created after you make a bone object. This allows you to quickly set vertices to a specific bone vertex group.
61+
</Alert>
62+
63+
<GridContainer numColumns="2">
64+
<figure>
65+
<video src="../../assets/avatar/dynamic-heads/creating-face-accessories/Vertices-Transfer-Off.mov" controls width="100%"></video>
66+
<figcaption>Eyelashes without transfer joints. Notice how the upper eyelashes near the bridge of the nose doesn't follow the eyelids as expected.</figcaption>
67+
</figure>
68+
<figure>
69+
<video src="../../assets/avatar/dynamic-heads/creating-face-accessories/Vertices-Transfer-On.mov" controls width="100%"></video>
70+
<figcaption>Eyelashes with transfer joints. All eyelashes follow the leading vertices closest to the eyes.</figcaption>
71+
</figure>
72+
</GridContainer>
73+
74+
No additional work is needed in Studio to support this method. If your accessory is set to `Class.WrapLayer.AutoSkin.EnabledOverride` and these joints exist with vertices assigned to them, then this skinning transfer variation will be in effect.
75+
76+
If you wish to upload an accessory using these joints as a UGC item, there are a few rules to be aware of:
77+
78+
- Vertices cannot be partially weighted to these joints. If you want to use them you must skin the vertex to the joint with a weight of `1.0`.
79+
- If these joints are present in the mesh, then the accessory must be set to `WrapLayerAutoSkin.EnabledOverride`.
80+
- Body part meshes containing these joints will be rejected by validation.
81+
3282
### Modify character cages
3383

3484
<Alert severity = 'error'>
@@ -66,16 +116,16 @@ By modifying different regions of the character's cage, you can ensure that your
66116
During the asset creation process, it's important to verify what skinning solution works best for your design by testing your individual assets on multiple models and animations. You can always skin your assets manually and choose to use the Automatic Skinning Transfer later.
67117
</Alert>
68118

69-
### Different accessory types
119+
### Different accessory categories
70120

71-
Automatic skinning transfer may not work well for certain accessory types, such as eyelash, hat, and glasses-type accessories. For example, eyelash-type accessories might have issues due to the typical complexity of the character's geometry around the eye region, and hat or glasses-type accessories might introduce deformation in areas that should typically be rigid. In general, those types of accessories should remain rigid, and you shouldn't associate any skinning data with them.
121+
Automatic skinning transfer may not work well for certain accessory categories, such as hat, and glasses-type accessories. For example, hat or glasses accessories might introduce deformation in areas that should typically be rigid. In general, those accessories should remain rigid, and you shouldn't associate any skinning data with them.
72122

73-
For a summary of suggested `Class.WrapLayer.AutoSkin` parameters for different accessory types, see the following table:
123+
For a summary of suggested `Class.WrapLayer.AutoSkin` parameters for different accessory categories, see the following table:
74124

75125
<table>
76126
<thead>
77127
<tr>
78-
<th>Accessory Type</th>
128+
<th>Accessory Category</th>
79129
<th>Suggested Parameter</th>
80130
</tr>
81131
</thead>
@@ -90,11 +140,11 @@ For a summary of suggested `Class.WrapLayer.AutoSkin` parameters for different a
90140
</tr>
91141
<tr>
92142
<td>Eyelash</td>
93-
<td>`Disabled`</td>
143+
<td>`EnabledOverride`</td>
94144
</tr>
95145
<tr>
96146
<td>Hair</td>
97-
<td>`EnabledOverride`</td>
147+
<td>`Disabled`</td>
98148
</tr>
99149
<tr>
100150
<td>Hat</td>
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:fc75d6fae0358d1dc89b586a7e0a8cfbd0d78ea6205799bb79da2911e74a1e13
3+
size 11998071
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:a73a24b4bc6ef54ac0a0174634a6bb6bb0be8f4d6e02f56f60c2ebe266e7fe12
3+
size 11528595

0 commit comments

Comments
 (0)