Skip to content

Feature: Implement Adaptive Bevel to Prevent Self-Intersection #7

@Rakadeja

Description

@Rakadeja

Summary

A major challenge with procedural 3D text is that high Bevel Depth values can cause "loose parts" of a character to clip into each other or be destroyed. A classic example is the dot on the letter 'i', which will be consumed by the bevel of the main stem.

This feature proposes a method to intelligently "pad" or move these loose parts away from each other to preserve the character's form at high bevel values.

Current Behavior

High bevel values result in undesirable self-intersection and loss of detail on complex characters.

Expected Behavior

The addon would have an "Adaptive Bevel" option. When enabled, it would analyze the character's geometry, identify disconnected parts, and scale/move them apart slightly before the final mesh conversion.

Implementation Plan (Research Required)

This is a complex feature that will require significant research. A possible approach could be:

  1. Post-Conversion Analysis: After converting the text to a mesh, use bmesh to analyze the geometry.
  2. Identify Loose Parts: Run an algorithm to identify disconnected mesh islands (bpy.ops.mesh.select_linked).
  3. Calculate Offsets: For each island, calculate its bounding box center.
  4. Apply Padding: Move each island away from the object's main origin by a small, calculated amount (perhaps proportional to the Bevel Depth).
  5. This operation would likely need to happen before the other post-processing steps. Due to its complexity, it may not be feasible to have a live preview for this feature.

Screenshot Just Because

Image

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions