feat(vrm_mesh_tools): Add standalone VRM mesh tools addon with separation and UV merging
- Add VRM Mesh Tools addon as independent Blender extension with complete functionality - Implement Body Mesh Separator operator to isolate non-skin materials (CLOTH, etc.) from Body mesh - Implement UV Edge Merger operator to convert triangles to quads based on UV coordinates - Add comprehensive UI panel in sidebar with material list and operation buttons - Include UV edge data JSON files for 10 VRM material types (Body, Face, Eyes, Hair, etc.) - Add detailed README with installation instructions, usage guide, and compatibility notes - Configure addon manifest for Blender 4.2+ with proper namespace isolation (vrm_mesh_tools) - Ensure full compatibility with official VRM addon through independent naming conventions - Add utility functions for mesh operations, material detection, and JSON data loading
This commit is contained in:
45
vrm_mesh_tools/__init__.py
Normal file
45
vrm_mesh_tools/__init__.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
# VRM Mesh Tools - Standalone mesh separation and UV edge merging tools
|
||||
|
||||
bl_info = {
|
||||
"name": "VRM Mesh Tools",
|
||||
"author": "VRM Mesh Tools Contributors",
|
||||
"version": (1, 0, 0),
|
||||
"blender": (4, 2, 0),
|
||||
"location": "View3D > Sidebar > VRM Tools",
|
||||
"description": "Standalone mesh separation and UV edge merging tools for VRM models",
|
||||
"warning": "",
|
||||
"support": "COMMUNITY",
|
||||
"category": "Mesh",
|
||||
}
|
||||
|
||||
from .ops import (
|
||||
VRM_TOOLS_OT_separate_non_skin_faces,
|
||||
VRM_TOOLS_OT_merge_uv_edges,
|
||||
)
|
||||
from .panel import (
|
||||
VRM_TOOLS_PT_mesh_separator,
|
||||
)
|
||||
|
||||
# Classes to register
|
||||
_classes: list[type] = [
|
||||
VRM_TOOLS_OT_separate_non_skin_faces,
|
||||
VRM_TOOLS_OT_merge_uv_edges,
|
||||
VRM_TOOLS_PT_mesh_separator,
|
||||
]
|
||||
|
||||
|
||||
def register() -> None:
|
||||
"""Register all classes for the addon."""
|
||||
import bpy
|
||||
|
||||
for cls in _classes:
|
||||
bpy.utils.register_class(cls)
|
||||
|
||||
|
||||
def unregister() -> None:
|
||||
"""Unregister all classes for the addon."""
|
||||
import bpy
|
||||
|
||||
for cls in reversed(_classes):
|
||||
bpy.utils.unregister_class(cls)
|
||||
Reference in New Issue
Block a user