본문으로 건너뛰기
CHOI HONGSU
6 min read

Vertex Normal Workflow

Vertex Normal Workflow

Period
2025.12
Engine
Unity 6 (6000.0.60f1) / URP 17
Platforms
AOS · iOS
Team
TA
My contribution
Vertex Normal Workflow Guide

An optimization workflow that creates the intended highlights by directly correcting the mesh's vertex normals, without additional normal maps.

Before / After

Overall comparison

Vertex Normal work Before/After ( verts 9,841 / verts 6,743 )

After
Before
BEFOREAFTER

Problem

136 normal maps used in the lobby (texture-finding tool)

136 normal maps were being used across lobby resources, mostly for highlight correction rather than surface detail.

  • This increased texture memory usage and added extra texture dependency for surface correction.

1779874939599-1

Architecture

  • Previously, chamfer-generated smooth normals were used, but some areas appeared bent in unintended ways.
    To compensate for this, additional normal maps were used, which resulted in a structure with higher texture dependency.

This is a memory optimization guide for creating the intended normal direction by directly adjusting vertex normals without using normal maps.

Implementation

  1. 01

    Reviewing the existing modeling

    Normal map off / Normal map on

    123

    Reviewing the existing mesh

    Existing mesh normals

    Smooth normals generated via chamfering are in use, but areas that bend against the intent are being interpolated with normal maps.

  2. 02

    Production guide

    1. If you previously created smoothing via chamfer, generate only the end edge line that controls the smoothing.

    2. Click Modify → Weighted Normals

    3. With Weighted Normals, smoothing is generated on edges, but the flat surface is slightly bent.

    4. Check Snap To Largest Face — finds the larger surrounding face and flattens to it.

    ### How it works

    • Open Edit Normals and you can visually confirm that each vertex has its own normal direction.
      • Functionally, the normals between vertices are interpolated automatically.

    Applying this,
    you place vertices only where the surface should bend, and the remaining directions are filled in by interpolation.

  3. 03

    Example with an existing mesh

    Before correction

    1. Even in Weighted Normals state, it doesn't look right.

    2. Remove the back face (no chamfer)

    3. Even after removing the back face and applying Weighted Normal, the desired curvature is not produced.

    4. Checking with Edit Normal shows that the area which should be split has only one vertex normal direction.

    1. Edge Split

    2. Applying Weighted Normal afterwards now lets the split vertices each have their own direction.

    3. If a part that should be flat is slightly skewed by the split

    4. Edit Normal → Face → Selected to unify the direction

    5. Remove the unnecessary middle edges

  4. 04

    Caveats

    1. Cylinders and spheres already have well-defined normal directions by default, so applying Weighted Normals or Largest Face can cause problems.

    2. Weighted / Largest Face

    3. But if you want to refine the lower chamfer area more nicely, you need to edit it with Edit Normal.

      The slightly upward-tilted normal direction must be aligned horizontally with the normal direction below.

    4. The top area is also adjusted with Edit Normal.

    5. To make the top surface vertical, select the face and click Selected — it snaps vertical.

Before / After

Comparison

 

After
Before
BEFOREAFTER

Before / After

 

 

BEFOREAFTER

Before / After

 

 

After
Before
BEFOREAFTER

Implementation

  1. 01

    Conclusion

    Replaced the normal-map-dependent correction approach with a vertex normal / custom normal workflow,
    reducing texture memory pressure while keeping the intended highlights.

Tags

Vertex NormalNormal Map