blender-interface-mesh-quality-checks

Sub-skill of blender-interface: Mesh Quality Checks (+2).

5 stars

Best use case

blender-interface-mesh-quality-checks is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Sub-skill of blender-interface: Mesh Quality Checks (+2).

Teams using blender-interface-mesh-quality-checks should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/mesh-quality-checks/SKILL.md --create-dirs "https://raw.githubusercontent.com/vamseeachanta/workspace-hub/main/.agents/skills/_archive/engineering/cad/blender/mesh-quality-checks/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/mesh-quality-checks/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How blender-interface-mesh-quality-checks Compares

Feature / Agentblender-interface-mesh-quality-checksStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Sub-skill of blender-interface: Mesh Quality Checks (+2).

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Mesh Quality Checks (+2)

## Mesh Quality Checks


```python
def validate_imported_mesh(obj):
    """Validate mesh quality after import."""
    import bmesh
    checks = {"passed": True, "issues": []}

    mesh = obj.data
    bm = bmesh.new()
    bm.from_mesh(mesh)

    # Check for non-manifold edges
    non_manifold = [e for e in bm.edges if not e.is_manifold]
    if non_manifold:
        checks["issues"].append(f"{len(non_manifold)} non-manifold edges")

    # Check for loose vertices
    loose = [v for v in bm.verts if not v.link_edges]
    if loose:
        checks["issues"].append(f"{len(loose)} loose vertices")

    # Check for degenerate faces (zero area)
    degen = [f for f in bm.faces if f.calc_area() < 1e-8]
    if degen:
        checks["issues"].append(f"{len(degen)} degenerate faces")

    # Check normals consistency
    bm.normal_update()

    bm.free()

    checks["vertex_count"] = len(mesh.vertices)
    checks["face_count"] = len(mesh.polygons)
    checks["passed"] = len(checks["issues"]) == 0
    return checks
```


## Render Validation


```python
import os

def validate_render_output(output_path, expected_frames=1):
    """Validate render output exists and is reasonable."""
    checks = {"passed": True, "issues": []}

    if not os.path.exists(output_path):
        checks["issues"].append(f"Output not found: {output_path}")
        checks["passed"] = False
        return checks

    size_bytes = os.path.getsize(output_path)
    if size_bytes < 1000:
        checks["issues"].append(f"Output suspiciously small: {size_bytes} bytes (likely blank)")
        checks["passed"] = False

    # Check image dimensions (requires PIL)
    try:
        from PIL import Image
        img = Image.open(output_path)
        checks["resolution"] = img.size
        checks["mode"] = img.mode

        # Check if image is all-black (failed render)
        extrema = img.convert("L").getextrema()
        if extrema == (0, 0):
            checks["issues"].append("Render is all-black — check lighting and materials")
            checks["passed"] = False
    except ImportError:
        checks["issues"].append("PIL not available — skipping image content check")

    return checks
```


## Scale and Units Check


```python
def validate_engineering_scale(obj, expected_max_dim_m=500):
    """Check that imported geometry is at engineering scale (meters)."""
    dims = obj.dimensions
    max_dim = max(dims)

    if max_dim < 0.001:
        return {"issue": f"Max dimension {max_dim:.6f}m — likely in mm, scale by 1000"}
    if max_dim > expected_max_dim_m * 10:
        return {"issue": f"Max dimension {max_dim:.1f}m — likely wrong units"}
    return {"ok": True, "dimensions_m": tuple(dims)}
```

Related Skills

solidworks-to-blender-pipeline

5
from vamseeachanta/workspace-hub

Use when converting SolidWorks .sldprt/.sldasm geometry to Blender for rendering, animation, or visualization, including questions about STEP export settings, FreeCAD as a bridge, or which mesh format (STL/OBJ/GLTF) to choose.

blender-worktree-test-hardening

5
from vamseeachanta/workspace-hub

Recover and harden digitalmodel Blender automation work in isolated worktrees when uv/editable dependency paths break and local machines lack a Blender executable.

worktree-pre-push-bypass-for-tier1-checks

5
from vamseeachanta/workspace-hub

Handle workspace-hub integration-branch pushes from isolated git worktrees when the pre-push hook incorrectly assumes sibling tier-1 repos exist under the worktree path.

orcawave-mesh-generation

5
from vamseeachanta/workspace-hub

Panel mesh generation for OrcaWave diffraction analysis. Use when converting CAD/STL to panel mesh, validating mesh quality, running convergence studies, or generating GDF files for hydrodynamic computations.

blender-interface

5
from vamseeachanta/workspace-hub

AI interface skill for Blender 3D — headless CLI execution, Python bpy API, mesh import/export, rendering, and integration with engineering analysis workflows.

cad-mesh-generation

5
from vamseeachanta/workspace-hub

Generate parametric CAD geometry and finite element meshes using FreeCAD and GMSH

skill-creator-content-quality

5
from vamseeachanta/workspace-hub

Sub-skill of skill-creator: Content Quality (+3).

hydrodynamic-pipeline-gmsh-panel-mesh-for-hydrodynamics

5
from vamseeachanta/workspace-hub

Sub-skill of hydrodynamic-pipeline: Gmsh Panel Mesh for Hydrodynamics (+3).

hydrodynamic-pipeline-checkpoint-1-mesh-quality

5
from vamseeachanta/workspace-hub

Sub-skill of hydrodynamic-pipeline: Checkpoint 1: Mesh Quality (+2).

gmsh-openfoam-orcaflex-gate-1-mesh-quality

5
from vamseeachanta/workspace-hub

Sub-skill of gmsh-openfoam-orcaflex: Gate 1 — Mesh Quality (+1).

gmsh-openfoam-orcaflex-converter-1-gmsh-msh-openfoam-polymesh

5
from vamseeachanta/workspace-hub

Sub-skill of gmsh-openfoam-orcaflex: Converter 1: Gmsh .msh → OpenFOAM polyMesh (+1).

cfd-pipeline-openfoam-case-setup-from-mesh

5
from vamseeachanta/workspace-hub

Sub-skill of cfd-pipeline: OpenFOAM Case Setup from Mesh (+2).