Overview

Introduction

Installation

Getting Started

Core Features

Influence Modes

Deformation

Refinement & Smoothing

Material Layer System

Modular Character Support

API Reference

Blueprint API

Editor Guide

Asset Editor Overview

Debug Visualization

Resources & Support

Troubleshooting & FAQ

Changelog

FleshRing - Refinement & Smoothing Complete Guide

Purpose: This guide covers everything about FleshRing’s Refinement & Smoothing system. After reading this page, you’ll understand how each smoothing pass works, when to use which settings, and how to solve common deformation artifacts with confidence.


What is Refinement?

Before Refinement

Before Refinement

After Refinement

After Refinement

Refinement is FleshRing’s post-processing pipeline that runs after Tightness and Bulge deformation. It transforms raw deformation results into clean, natural-looking flesh compression.

Without Refinement, deformation often produces:

The Refinement pipeline solves all of these through a multi-stage GPU Compute Shader process.

Why Refinement Matters

Key Insight: Tightness and Bulge define what deforms. Refinement defines how well it looks.


Refinement Pipeline Overview

Refinement executes in a fixed order. Each stage feeds into the next:

Tightness + Bulge (Input)
       │
       ▼
┌─────────────────────────┐
│  1. Smoothing Volume     │  ← Determine WHICH vertices get smoothed
│     Calculation          │
└──────────┬──────────────┘
           ▼
┌─────────────────────────┐
│  2. Deformation Spread   │  ← Gradually propagate deformation outward
│     (Optional)           │
└──────────┬──────────────┘
           ▼
┌─────────────────────────┐
│  3. Radial Smoothing     │  ← Uniformize radii at same height
└──────────┬──────────────┘
           ▼
┌─────────────────────────┐
│  4. Surface Smoothing    │  ← Laplacian mesh smoothing
│     (Standard / Taubin)  │
└──────────┬──────────────┘
           ▼
┌─────────────────────────┐
│  5. Edge Length           │  ← PBD constraints preserve volume
│     Preservation (PBD)   │
└──────────┬──────────────┘
           ▼
   Normal & Tangent Recompute (Output)

Stage Summary

Stage Purpose Default Key Parameter
Smoothing Volume Define smoothing region ON Smoothing Volume Mode
Deformation Spread Blend deformation into surroundings OFF Spread Iterations
Radial Smoothing Cylindrical uniformization ON Radial Blend Strength
Surface Smoothing Topology-aware mesh smoothing ON Smoothing Iterations
Edge Length Preservation PBD volume maintenance ON Constraint Iterations

Note: Each stage can be individually enabled/disabled. The master toggle Enable Refinement controls the entire pipeline.


Master Toggle

Enable Refinement

Property Type Default
bEnableRefinement bool true

When to disable:

Tip: If your mesh looks wrong, toggle this OFF first. If the artifact disappears, the issue is in refinement settings. If it persists, the issue is in Tightness/Bulge.


Stage 1: Smoothing Volume

What It Does

Before any smoothing runs, FleshRing must decide which vertices receive smoothing. The Smoothing Volume defines this region.

Vertices inside the smoothing volume receive smoothing (with falloff). Vertices outside are untouched — preserving the original mesh shape.

Smoothing Volume Mode

Property Type Default
SmoothingVolumeMode Enum Depth-Based (Topology)

Two modes are available:

Mode How It Works Best For
Depth-Based (Topology) Counts edge hops from deformed vertices Organic shapes, complex topology
Bounds Expand (Z) Expands axis-aligned bounding box Simple cases, flat regions

Depth-Based (Topology) Mode

The default and recommended mode. It determines the smoothing region by counting topology hops (edge connections) from deformed vertices outward.

How it works:

  1. All vertices affected by Tightness/Bulge are marked as “seed” vertices (hop 0)
  2. Neighbors connected by mesh edges become hop 1
  3. Their neighbors become hop 2
  4. Continue until Max Smoothing Depth is reached
Seed (hop 0) → hop 1 → hop 2 → ... → Max Smoothing Depth
  Full effect    ↓        ↓                   ↓
               Gradual falloff           No smoothing

Why this is better:

Parameters

UI Label Property Type Default Range Description
Max Smoothing Depth MaxSmoothingHops int 10 1~20 Maximum topology hops from deformed vertices
Depth Falloff HopFalloffType Enum Hermite Linear/Quadratic/Hermite Smoothing intensity decay curve

Max Smoothing Depth:

Value Effect Use Case
1-3 Minimal smoothing region Thin bands, subtle effects
5-10 Moderate smoothing region Most use cases (default 10)
15-20 Wide smoothing region Large compression areas, extreme bulge

Tuning Tip: If you see visible boundary artifacts where smoothing “stops”, increase Max Smoothing Depth by 5 and check again.

Depth Falloff:

Controls how smoothing intensity decreases with distance from deformed vertices.

Falloff Type Curve Shape Transition Quality
Linear Straight line Sharp boundary, visible edge
Quadratic Gentle curve Moderate smoothness
Hermite (default) S-curve Smoothest transition, recommended

Recommendation: Always use Hermite unless you specifically want a sharper boundary.


Bounds Expand (Z) Mode

A simpler alternative that expands the Ring’s axis-aligned bounding box to define the smoothing region.

How it works:

  1. Take the Ring’s bounding box (already computed for SDF/influence)
  2. Expand it vertically (along Ring axis) by the specified amounts
  3. All vertices inside the expanded box receive smoothing

Parameters

| --- | --- | --- | --- | --- | --- |

Advantages:

Disadvantages:

When to use: Only if Depth-Based mode causes unexpected results on non-manifold or highly complex meshes. For most cases, Depth-Based (Topology) is superior.


Mode Selection Quick Guide

| --- | --- | --- |


Stage 2: Deformation Spread

What It Does

Deformation Spread gradually propagates the displacement from deformed vertices (Tightness + Bulge) into surrounding mesh areas. Instead of a hard boundary between “deformed” and “undeformed” vertices, it creates a smooth gradient.

Think of it like dropping ink on wet paper — the deformation “bleeds” outward naturally.

Availability: Only available in Depth-Based (Topology) smoothing volume mode.

How It Works

  1. Seed vertices = all vertices affected by Tightness (+ optionally Bulge)
  2. Each iteration, neighboring vertices receive a fraction of the seed’s displacement
  3. The fraction is controlled by Spread Strength
  4. Process repeats for Spread Iterations steps
  5. Result: displacement gradually attenuates with topology distance
Iteration 0:  Seed ██████  |  Neighbor ░░░░░░  |  Far ░░░░░░
Iteration 5:  Seed ██████  |  Neighbor ████░░  |  Far ░░░░░░
Iteration 10: Seed ██████  |  Neighbor █████░  |  Far ███░░░