Currently, there is a huge, fundamental design issue with layered clothing’s clipping technology that I would like to get changed. This thread will be broken down into a handful of sections, highlighting & discussing the various aspects of this technology & why its behavior should be changed a bit.
The problem
As of 6/14/21
, layered clothing has a clipping system that attempts to hide body geometry that is covered by clothing, since the body geometry can’t be seen. This is great for performance reasons, however there is a major issue with the current implementation of body geometry clipping. Right now, the clipping system will arbitrarily clip important body geometry. If a package has things such as tails, wings, horns, etc, the clipping system clips it off instead of allowing this geometry to poke through the clothing.
You can see examples of this here:
-
Wings disappear
-
Tail disappears
Other examples of this:
- If the crimson claw head were to try wearing a layered clothing hat, the horns would be clipped off
- If a wind-up robot were to wear layered clothing, the wind-up metal doohickey would be clipped off
- etc
I recently received confirmation from an engineer working on this tech (cc @shshwdr) that this was intentional behavior.
Why this is a problematic design
This approach to clipping is problematic for various reasons. When layered clothing was announced 2 years ago, it was touted as being compatible with all avatars, not some. Arbitrarily clipping off important body geometry is essentially modifying the player’s avatar to fit inside the clothing, instead of the clothing adapting to the player’s body. This makes clothing not as compatible as advertised. Part of Roblox’s vision with avatars is to allow them to have whatever kind of avatar they want, and it “just works”. Layered clothing, for the most part, does work with the majority of bodies I’ve tested it on. It even looks good on my avatar (which is literally a dragon). However, arbitrary clipping ruins the appearance of a lot of avatars, since important body geometry gets cut off, making the player look like they are wearing a 2.0 package. The crimson claw package is a great example of this. It also breaks a lot of immersion in games, since things like putting on a set of armor, putting on a hat, etc will fundamentally modify your avatar’s body in a way that isn’t natural looking.
Furthermore, this is also problematic as a developer. If an artist creates a character or custom avatar body for a game, and they want that character / avatar to wear clothing, they will likely end up fighting the clipping system if the character / avatar is not human. This is because the clipping system will arbitrarily cut off ‘extra’ pieces of the body that the artist may want to poke through the clothing. If an artist makes a character that looks like a Palico from Monster Hunter : World for example, and they want the ears to clip through the steampunk hat, they would not be able to do this. The system would end up clipping off the ears, fundamentally ruining the character’s look and going against the artist’s original intent.
Imagine if an artist wanted the ears on this character to poke through the hat. They wouldn’t be able to!
One solution often given to this problem is to simply make these extra body parts accessories. This does not work for multiple reasons :
- XY Problem. Instead of simply adding a contextual clipping feature (more details on this below), extra body parts would have to be converted into accessories, which doesn’t solve the actual problem.
- Body parts should NOT be accessories, body parts are body parts and should be a part of the body’s geometry.
- If there was a game that wanted to remove a player’s accessories, but keep their actual body to put its own custom clothing on top of it (to preserve the player’s avatar but with its own clothing), converting extra body parts into accessories would fundamentally ruin the player’s avatar in this case, making this sort of game impossible.
- Extra development overhead : In the case of Roblox, Roblox would have to go through many, many packages and contextually split each package off into accessories. Not only does this waste artist / engineering resources, but it’s also unlikely to happen - I haven’t been able to get the Crimson Claw’s head converted into an actual head part from a hat accessory for over a year and a half, I doubt things such as tails and wings would be converted into accessories. As a developer, this is a ton of extra work - not only does the artist have to make characters now, but they also have to figure out what gets clipped off through trial and error, then converting them into accessories! This could even make the life of the game’s programmers more difficult if they’re making certain assumptions about accessories (see above).
- This doesn’t give developers a lot of control over the exact way clothing interacts with a body they or Roblox made. If an artist made a steampunk creature with a bunch of gear cogs, now they have to worry about “oh right this gear cog needs to be an accessory even though my intent was to have it as a part of the actual body”, conflicting with development of the game and failing to meet various use-cases.
So, what is the solution to this then? How do we allow extra body parts to “poke through” clothing to fit any use-case developers & players might have?
The solution : Contextual clipping
I propose a change to the clipping system - contextual clipping. With contextual clipping, a package’s meshes will have metadata (done with vertex groups perhaps) that tells the clipping system “hey, don’t clip these parts of me when there is clothing applied”. This allows things like tails, horns, big ears, cogs, etc to poke through clothing, exactly as the artist originally intended. In the case of my avatar using the Crimson Claw package, the tail would poke through. In the character example above, the ears would be able to poke through.
A contextual clipping system allows layered clothing to fit most, if not all use-cases, for both developers and players. It makes layered clothing look natural on all avatars, because it keeps the original body intact.
A contextual clipping system should be implemented before the launch of layered clothing, to avoid the plethora of issues above. It would be a huge hassle from a developer perspective without it, and it would be quite disappointing as a player since wearing clothing essentially ruins my avatar’s look due to arbitrary clipping.
Layered clothing is almost there, it works really well for the most part, and I’d like to give a big tip of the hat to the engineers working on it! However, this seemingly minor detail is actually a huge detail and should be addressed.