Files
PozzettiAndrea-ComfyUI-Geom…/tests/test_scripts/test_uv.py
T
2025-11-14 21:50:06 +01:00

125 lines
3.4 KiB
Python

"""Tests for UV unwrapping nodes."""
import pytest
from nodes.uv import (
XAtlasUVUnwrapNode,
LibiglLSCMNode,
LibiglHarmonicNode,
LibiglARAPNode,
BlenderUVUnwrapNode,
BlenderCubeProjectionNode,
BlenderCylinderProjectionNode,
BlenderSphereProjectionNode,
)
@pytest.mark.optional
def test_xatlas_unwrap(sphere_mesh, save_mesh_helper, render_helper):
"""Test xAtlas UV unwrapping."""
pytest.importorskip("xatlas")
node = XAtlasUVUnwrapNode()
unwrapped = node.uv_unwrap(mesh=sphere_mesh)[0]
assert unwrapped is not None
assert hasattr(unwrapped.visual, 'uv') or 'uv' in unwrapped.metadata
save_mesh_helper(unwrapped, "sphere_xatlas_uv", "obj")
render_helper(unwrapped, "sphere_xatlas_uv")
@pytest.mark.optional
def test_libigl_lscm(sphere_mesh, save_mesh_helper, render_helper):
"""Test libigl LSCM UV unwrapping."""
pytest.importorskip("igl")
node = LibiglLSCMNode()
unwrapped = node.uv_unwrap(mesh=sphere_mesh)[0]
assert unwrapped is not None
save_mesh_helper(unwrapped, "sphere_lscm_uv", "obj")
render_helper(unwrapped, "sphere_lscm_uv")
@pytest.mark.optional
def test_libigl_harmonic(open_mesh, save_mesh_helper, render_helper):
"""Test libigl harmonic UV unwrapping."""
pytest.importorskip("igl")
node = LibiglHarmonicNode()
unwrapped = node.uv_unwrap(mesh=open_mesh)[0]
assert unwrapped is not None
save_mesh_helper(unwrapped, "open_harmonic_uv", "obj")
render_helper(unwrapped, "open_harmonic_uv")
@pytest.mark.optional
def test_libigl_arap(open_mesh, save_mesh_helper, render_helper):
"""Test libigl ARAP UV unwrapping."""
pytest.importorskip("igl")
node = LibiglARAPNode()
unwrapped = node.uv_unwrap(trimesh=open_mesh, iterations=10)[0]
assert unwrapped is not None
save_mesh_helper(unwrapped, "open_arap_uv", "obj")
render_helper(unwrapped, "open_arap_uv")
@pytest.mark.blender
@pytest.mark.slow
def test_blender_uv_unwrap(sphere_mesh, save_mesh_helper, render_helper):
"""Test Blender Smart UV Project."""
node = BlenderUVUnwrapNode()
unwrapped = node.uv_unwrap(
trimesh=sphere_mesh,
angle_limit=66.0,
island_margin=0.02
)[0]
assert unwrapped is not None
save_mesh_helper(unwrapped, "sphere_blender_smart_uv", "obj")
render_helper(unwrapped, "sphere_blender_smart_uv")
@pytest.mark.blender
@pytest.mark.slow
def test_blender_cube_projection(cube_mesh, save_mesh_helper):
"""Test Blender cube projection UV."""
node = BlenderCubeProjectionNode()
unwrapped = node.uv_unwrap(trimesh=cube_mesh, cube_size=1.0)[0]
assert unwrapped is not None
save_mesh_helper(unwrapped, "cube_projection_uv", "obj")
@pytest.mark.blender
@pytest.mark.slow
def test_blender_cylinder_projection(sphere_mesh, save_mesh_helper):
"""Test Blender cylinder projection UV."""
node = BlenderCylinderProjectionNode()
unwrapped = node.uv_unwrap(trimesh=sphere_mesh, radius=1.0)[0]
assert unwrapped is not None
save_mesh_helper(unwrapped, "sphere_cylinder_uv", "obj")
@pytest.mark.blender
@pytest.mark.slow
def test_blender_sphere_projection(sphere_mesh, save_mesh_helper, render_helper):
"""Test Blender sphere projection UV."""
node = BlenderSphereProjectionNode()
unwrapped = node.uv_unwrap(mesh=sphere_mesh)[0]
assert unwrapped is not None
save_mesh_helper(unwrapped, "sphere_sphere_uv", "obj")
render_helper(unwrapped, "sphere_sphere_uv")