2023-08-16 00:20:26 +10:00
# SPDX-FileCopyrightText: 2020-2023 Blender Authors
2023-06-15 13:09:04 +10:00
#
2022-02-11 09:07:11 +11:00
# SPDX-License-Identifier: GPL-2.0-or-later
2020-01-13 07:11:45 -05:00
import bpy
import os
import sys
2023-07-25 21:43:53 +10:00
from random import seed
2020-01-13 07:11:45 -05:00
seed ( 0 )
sys . path . append ( os . path . dirname ( os . path . realpath ( __file__ ) ) )
2021-07-27 21:00:28 +05:30
from modules . mesh_test import SpecMeshTest , OperatorSpecEditMode , RunTest
2020-01-13 07:11:45 -05:00
# Central vertical loop of Suzanne
MONKEY_LOOP_VERT = { 68 , 69 , 71 , 73 , 74 , 75 , 76 , 77 , 90 , 129 , 136 , 175 , 188 , 189 , 198 , 207 ,
216 , 223 , 230 , 301 , 302 , 303 , 304 , 305 , 306 , 307 , 308 }
MONKEY_LOOP_EDGE = { 131 , 278 , 299 , 305 , 307 , 334 , 337 , 359 , 384 , 396 , 399 , 412 , 415 , 560 ,
567 , 572 , 577 , 615 , 622 , 627 , 632 , 643 , 648 , 655 , 660 , 707 }
def main ( ) :
tests = [
# bisect
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeBisect " , " testCubeBisect " , " expectedCubeBisect " ,
[ OperatorSpecEditMode ( " bisect " ,
{ " plane_co " : ( 0 , 0 , 0 ) , " plane_no " : ( 0 , 1 , 1 ) , " clear_inner " : True ,
" use_fill " : True } , ' FACE ' , { 0 , 1 , 2 , 3 , 4 , 5 } , ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# blend from shape
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeBlendFromShape " , " testCubeBlendFromShape " , " expectedCubeBlendFromShape " ,
[ OperatorSpecEditMode ( " blend_from_shape " , { " shape " : " Key 1 " } , ' FACE ' , { 0 , 1 , 2 , 3 , 4 , 5 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# bridge edge loops
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeBridgeEdgeLoop " , " testCubeBrigeEdgeLoop " , " expectedCubeBridgeEdgeLoop " ,
[ OperatorSpecEditMode ( " bridge_edge_loops " , { } , " FACE " , { 0 , 1 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# decimate
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" MonkeyDecimate " , " testMonkeyDecimate " , " expectedMonkeyDecimate " ,
[ OperatorSpecEditMode ( " decimate " ,
{ " ratio " : 0.1 } , " FACE " , { i for i in range ( 500 ) } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# delete
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeDeleteVertices " , " testCubeDeleteVertices " , " expectedCubeDeleteVertices " ,
[ OperatorSpecEditMode ( " delete " , { } , " VERT " , { 3 } ) ] ,
) ,
SpecMeshTest (
" CubeDeleteFaces " , " testCubeDeleteFaces " , " expectedCubeDeleteFaces " ,
[ OperatorSpecEditMode ( " delete " , { } , " FACE " , { 0 } ) ] ,
) ,
SpecMeshTest (
" CubeDeleteEdges " , " testCubeDeleteEdges " , " expectedCubeDeleteEdges " ,
[ OperatorSpecEditMode ( " delete " , { } , " EDGE " , { 0 , 1 , 2 , 3 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# delete edge loop
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" MonkeyDeleteEdgeLoopVertices " , " testMokneyDeleteEdgeLoopVertices " ,
" expectedMonkeyDeleteEdgeLoopVertices " ,
[ OperatorSpecEditMode ( " delete_edgeloop " , { } , " VERT " , MONKEY_LOOP_VERT ) ] ,
) ,
2020-12-17 20:44:55 +05:30
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" MonkeyDeleteEdgeLoopEdges " , " testMokneyDeleteEdgeLoopEdges " ,
" expectedMonkeyDeleteEdgeLoopEdges " ,
[ OperatorSpecEditMode ( " delete_edgeloop " , { } , " EDGE " , MONKEY_LOOP_EDGE ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# delete loose
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeDeleteLooseVertices " , " testCubeDeleteLooseVertices " ,
" expectedCubeDeleteLooseVertices " ,
[ OperatorSpecEditMode ( " delete_loose " , { " use_verts " : True , " use_edges " : False , " use_faces " : False } ,
" VERT " ,
{ i for i in range ( 12 ) } ) ] ,
) ,
SpecMeshTest (
" CubeDeleteLooseEdges " , " testCubeDeleteLooseEdges " ,
" expectedCubeDeleteLooseEdges " ,
[ OperatorSpecEditMode ( " delete_loose " , { " use_verts " : False , " use_edges " : True , " use_faces " : False } ,
" EDGE " ,
{ i for i in range ( 14 ) } ) ] ,
) ,
SpecMeshTest (
" CubeDeleteLooseFaces " , " testCubeDeleteLooseFaces " ,
" expectedCubeDeleteLooseFaces " ,
[ OperatorSpecEditMode ( " delete_loose " , { " use_verts " : False , " use_edges " : False , " use_faces " : True } ,
" FACE " ,
{ i for i in range ( 7 ) } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# dissolve degenerate
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeDissolveDegenerate " , " testCubeDissolveDegenerate " ,
" expectedCubeDissolveDegenerate " ,
[ OperatorSpecEditMode ( " dissolve_degenerate " , { } , " VERT " , { i for i in range ( 8 ) } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# dissolve edges
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CylinderDissolveEdges " , " testCylinderDissolveEdges " , " expectedCylinderDissolveEdges " ,
[ OperatorSpecEditMode ( " dissolve_edges " , { } , " EDGE " , { 0 , 5 , 6 , 9 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# dissolve faces
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeDissolveFaces " , " testCubeDissolveFaces " , " expectedCubeDissolveFaces " ,
[ OperatorSpecEditMode ( " dissolve_faces " , { } , " VERT " , { 5 , 34 , 47 , 49 , 83 , 91 , 95 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
2022-08-02 16:43:42 +02:00
# dissolve limited
SpecMeshTest (
" SphereDissolveLimited " , " testSphereDissolveLimited " , " expectedSphereDissolveLimited " ,
[ OperatorSpecEditMode ( " dissolve_limited " , { " angle_limit " : 0.610865 } , " FACE " , { 20 , 23 , 26 , 29 , 32 } ) ] ,
) ,
# dissolve mode
SpecMeshTest (
" PlaneDissolveMode " , " testPlaneDissolveMode " , " expectedPlaneDissolveMode " ,
[ OperatorSpecEditMode ( " dissolve_mode " , { " use_verts " : True } , " FACE " , { 0 , 1 , 2 , 10 , 12 , 13 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# dissolve verts
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeDissolveVerts " , " testCubeDissolveVerts " , " expectedCubeDissolveVerts " ,
[ OperatorSpecEditMode ( " dissolve_verts " , { } , " VERT " , { 16 , 20 , 22 , 23 , 25 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# duplicate
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" ConeDuplicateVertices " , " testConeDuplicateVertices " ,
" expectedConeDuplicateVertices " ,
[ OperatorSpecEditMode ( " duplicate " , { } , " VERT " , { i for i in range ( 33 ) } - { 23 } ) ] ,
) ,
2020-12-17 20:44:55 +05:30
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" ConeDuplicateOneVertex " , " testConeDuplicateOneVertex " , " expectedConeDuplicateOneVertex " ,
[ OperatorSpecEditMode ( " duplicate " , { } , " VERT " , { 23 } ) ] ,
) ,
SpecMeshTest (
" ConeDuplicateFaces " , " testConeDuplicateFaces " , " expectedConeDuplicateFaces " ,
[ OperatorSpecEditMode ( " duplicate " , { } , " FACE " , { 6 , 9 } ) ] ,
) ,
SpecMeshTest (
" ConeDuplicateEdges " , " testConeDuplicateEdges " , " expectedConeDuplicateEdges " ,
[ OperatorSpecEditMode ( " duplicate " , { } , " EDGE " , { i for i in range ( 64 ) } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# edge collapse
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CylinderEdgeCollapse " , " testCylinderEdgeCollapse " , " expectedCylinderEdgeCollapse " ,
[ OperatorSpecEditMode ( " edge_collapse " , { } , " EDGE " , { 1 , 9 , 4 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# edge face add
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeEdgeFaceAddFace " , " testCubeEdgeFaceAddFace " , " expectedCubeEdgeFaceAddFace " ,
[ OperatorSpecEditMode ( " edge_face_add " , { } , " VERT " , { 1 , 3 , 4 , 5 , 7 } ) ] ,
) ,
SpecMeshTest (
" CubeEdgeFaceAddEdge " , " testCubeEdgeFaceAddEdge " , " expectedCubeEdgeFaceAddEdge " ,
[ OperatorSpecEditMode ( " edge_face_add " , { } , " VERT " , { 4 , 5 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# edge rotate
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeEdgeRotate " , " testCubeEdgeRotate " , " expectedCubeEdgeRotate " ,
[ OperatorSpecEditMode ( " edge_rotate " , { } , " EDGE " , { 1 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# edge split
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeEdgeSplit " , " testCubeEdgeSplit " , " expectedCubeEdgeSplit " ,
[ OperatorSpecEditMode ( " edge_split " , { } , " EDGE " , { 2 , 5 , 8 , 11 , 14 , 17 , 20 , 23 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
2021-02-12 01:22:28 +05:30
# edge ring select - Cannot be tested. Need user input.
2021-07-27 21:00:28 +05:30
# SpecMeshTest("CubeEdgeRingSelect", "testCubeEdgeRingSelect", "expectedCubeEdgeRingSelect",
2021-02-12 01:22:28 +05:30
# [OperatorSpecEditMode("edgering_select", {}, "EDGE", {5, 20, 25, 26})]),
2021-07-27 21:00:28 +05:30
# SpecMeshTest("EmptyMeshEdgeRingSelect", "testGridEdgeRingSelect", "expectedGridEdgeRingSelect",
2021-02-12 01:22:28 +05:30
# [OperatorSpecEditMode("edgering_select", {}, "VERT", {65, 66, 67})]),
2021-07-27 21:00:28 +05:30
# SpecMeshTest("EmptyMeshEdgeRingSelect", "testEmptyMeshdgeRingSelect", "expectedEmptyMeshEdgeRingSelect",
2021-02-12 01:22:28 +05:30
# [OperatorSpecEditMode("edgering_select", {}, "VERT", {})]),
2021-01-30 22:42:21 +01:00
# edges select sharp
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeEdgesSelectSharp " , " testCubeEdgeSelectSharp " , " expectedCubeEdgeSelectSharp " ,
[ OperatorSpecEditMode ( " edges_select_sharp " , { } , " EDGE " , { 20 } ) ] ,
) ,
SpecMeshTest (
" SphereEdgesSelectSharp " , " testSphereEdgesSelectSharp " , " expectedSphereEdgeSelectSharp " ,
[ OperatorSpecEditMode ( " edges_select_sharp " , { " sharpness " : 0.25 } , " EDGE " , { 288 } ) ] ,
) ,
SpecMeshTest (
" HoledSphereEdgesSelectSharp " , " testHoledSphereEdgesSelectSharp " , " expectedHoledSphereEdgeSelectSharp " ,
[ OperatorSpecEditMode ( " edges_select_sharp " , { " sharpness " : 0.18 } , " VERT " , { } ) ] ,
) ,
SpecMeshTest (
" EmptyMeshEdgesSelectSharp " , " testEmptyMeshEdgeSelectSharp " , " expectedEmptyMeshEdgeSelectSharp " ,
[ OperatorSpecEditMode ( " edges_select_sharp " , { } , " VERT " , { } ) ] ,
) ,
2021-01-30 22:42:21 +01:00
2020-01-13 07:11:45 -05:00
# face make planar
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" MonkeyFaceMakePlanar " , " testMonkeyFaceMakePlanar " ,
" expectedMonkeyFaceMakePlanar " ,
[ OperatorSpecEditMode ( " face_make_planar " , { } , " FACE " , { i for i in range ( 500 ) } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# face split by edges
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" PlaneFaceSplitByEdges " , " testPlaneFaceSplitByEdges " ,
" expectedPlaneFaceSplitByEdges " ,
[ OperatorSpecEditMode ( " face_split_by_edges " , { } , " VERT " , { i for i in range ( 6 ) } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
2021-02-12 01:22:28 +05:30
# faces select linked flat
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeFacesSelectLinkedFlat " , " testCubeFaceSelectLinkedFlat " , " expectedCubeFaceSelectLinkedFlat " ,
[ OperatorSpecEditMode ( " faces_select_linked_flat " , { } , " FACE " , { 7 } ) ] ,
) ,
SpecMeshTest (
" PlaneFacesSelectLinkedFlat " , " testPlaneFaceSelectLinkedFlat " , " expectedPlaneFaceSelectLinkedFlat " ,
[ OperatorSpecEditMode ( " faces_select_linked_flat " , { } , " VERT " , { 1 } ) ] ,
) ,
SpecMeshTest (
" EmptyMeshFacesSelectLinkedFlat " , " testEmptyMeshFaceSelectLinkedFlat " ,
" expectedEmptyMeshFaceSelectLinkedFlat " ,
[ OperatorSpecEditMode ( " faces_select_linked_flat " , { } , " VERT " , { } ) ] ,
) ,
2021-02-12 01:22:28 +05:30
2020-01-13 07:11:45 -05:00
# fill
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" IcosphereFill " , " testIcosphereFill " , " expectedIcosphereFill " ,
[ OperatorSpecEditMode ( " fill " , { } , " EDGE " , { 20 , 21 , 22 , 23 , 24 , 45 , 46 , 47 , 48 , 49 } ) ] ,
) ,
SpecMeshTest (
" IcosphereFillUseBeautyFalse " ,
" testIcosphereFillUseBeautyFalse " , " expectedIcosphereFillUseBeautyFalse " ,
[ OperatorSpecEditMode ( " fill " , { " use_beauty " : False } , " EDGE " ,
{ 20 , 21 , 22 , 23 , 24 , 45 , 46 , 47 , 48 , 49 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# fill grid
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" PlaneFillGrid " , " testPlaneFillGrid " ,
" expectedPlaneFillGrid " ,
[ OperatorSpecEditMode ( " fill_grid " , { } , " EDGE " , { 1 , 2 , 3 , 4 , 5 , 7 , 9 , 10 , 11 , 12 , 13 , 15 } ) ] ,
) ,
SpecMeshTest (
" PlaneFillGridSimpleBlending " ,
" testPlaneFillGridSimpleBlending " ,
" expectedPlaneFillGridSimpleBlending " ,
[ OperatorSpecEditMode ( " fill_grid " , { " use_interp_simple " : True } , " EDGE " ,
{ 1 , 2 , 3 , 4 , 5 , 7 , 9 , 10 , 11 , 12 , 13 , 15 } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
# fill holes
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" SphereFillHoles " , " testSphereFillHoles " , " expectedSphereFillHoles " ,
[ OperatorSpecEditMode ( " fill_holes " , { " sides " : 9 } , " VERT " , { i for i in range ( 481 ) } ) ] ,
) ,
2020-01-13 07:11:45 -05:00
2021-04-29 19:59:11 +05:30
# face shade smooth (not a real test)
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeShadeSmooth " , " testCubeShadeSmooth " , " expectedCubeShadeSmooth " ,
[ OperatorSpecEditMode ( " faces_shade_smooth " , { } , " VERT " , { i for i in range ( 8 ) } ) ] ,
) ,
2021-04-29 19:59:11 +05:30
# faces shade flat (not a real test)
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeShadeFlat " , " testCubeShadeFlat " , " expectedCubeShadeFlat " ,
[ OperatorSpecEditMode ( " faces_shade_flat " , { } , " FACE " , { i for i in range ( 6 ) } ) ] ,
) ,
2021-04-29 19:59:11 +05:30
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
# hide
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" HideFace " , " testCubeHideFace " , " expectedCubeHideFace " ,
[ OperatorSpecEditMode ( " hide " , { } , " FACE " , { 3 } ) ] ,
) ,
SpecMeshTest (
" HideEdge " , " testCubeHideEdge " , " expectedCubeHideEdge " ,
[ OperatorSpecEditMode ( " hide " , { } , " EDGE " , { 1 } ) ] ,
) ,
SpecMeshTest (
" HideVertex " , " testCubeHideVertex " , " expectedCubeHideVertex " ,
[ OperatorSpecEditMode ( " hide " , { } , " VERT " , { 0 } ) ] ,
) ,
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
2020-01-13 07:11:45 -05:00
# inset faces
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeInset " ,
" testCubeInset " , " expectedCubeInset " , [ OperatorSpecEditMode ( " inset " , { " thickness " : 0.2 } , " VERT " ,
{ 5 , 16 , 17 , 19 , 20 , 22 , 23 , 34 , 47 , 49 , 50 ,
52 ,
59 , 61 , 62 , 65 , 83 , 91 , 95 } ) ] ,
) ,
SpecMeshTest (
" CubeInsetEvenOffsetFalse " ,
" testCubeInsetEvenOffsetFalse " , " expectedCubeInsetEvenOffsetFalse " ,
[ OperatorSpecEditMode ( " inset " , { " thickness " : 0.2 , " use_even_offset " : False } , " VERT " ,
{ 5 , 16 , 17 , 19 , 20 , 22 , 23 , 34 , 47 , 49 , 50 , 52 , 59 , 61 , 62 , 65 , 83 , 91 , 95 } ) ] ,
) ,
SpecMeshTest (
" CubeInsetDepth " ,
" testCubeInsetDepth " ,
" expectedCubeInsetDepth " , [ OperatorSpecEditMode ( " inset " , { " thickness " : 0.2 , " depth " : 0.2 } , " VERT " ,
{ 5 , 16 , 17 , 19 , 20 , 22 , 23 , 34 , 47 , 49 , 50 , 52 , 59 , 61 ,
62 ,
65 , 83 , 91 , 95 } ) ] ,
) ,
SpecMeshTest (
" GridInsetRelativeOffset " , " testGridInsetRelativeOffset " ,
" expectedGridInsetRelativeOffset " ,
[ OperatorSpecEditMode ( " inset " , { " thickness " : 0.4 ,
" use_relative_offset " : True } , " FACE " ,
{ 35 , 36 , 37 , 45 , 46 , 47 , 55 , 56 , 57 } ) ] ,
) ,
2021-01-30 22:42:21 +01:00
# loop multi select
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" MokeyLoopMultiSelect " , " testMonkeyLoopMultiSelect " , " expectedMonkeyLoopMultiSelect " ,
[ OperatorSpecEditMode ( " loop_multi_select " , { } , " VERT " , { 355 , 359 , 73 , 301 , 302 } ) ] ,
) ,
SpecMeshTest (
" HoledGridLoopMultiSelect " , " testGridLoopMultiSelect " , " expectedGridLoopMultiSelect " ,
[ OperatorSpecEditMode ( " loop_multi_select " , { } , " VERT " , { 257 , 169 , 202 , 207 , 274 , 278 , 63 } ) ] ,
) ,
SpecMeshTest (
" EmptyMeshLoopMultiSelect " , " testEmptyMeshLoopMultiSelect " , " expectedEmptyMeshLoopMultiSelect " ,
[ OperatorSpecEditMode ( " loop_multi_select " , { } , " VERT " , { } ) ] ,
) ,
2021-01-30 22:42:21 +01:00
2021-04-29 19:59:11 +05:30
# mark seam
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeMarkSeam " , " testCubeMarkSeam " , " expectedCubeMarkSeam " ,
[ OperatorSpecEditMode ( " mark_seam " , { } , " EDGE " , { 1 } ) ] ,
) ,
2021-04-29 19:59:11 +05:30
2022-08-02 16:43:42 +02:00
# merge normals
SpecMeshTest (
" CubeMergeNormals " , " testCubeMergeNormals " , " expectedCubeMergeNormals " ,
[ OperatorSpecEditMode ( " merge_normals " , { } , " FACE " , { 3 , 5 } ) ] ,
) ,
2024-06-21 19:06:00 +02:00
# Quads convert to tris
SpecMeshTest (
" CubeQuadsConvertToTris " , " testCubeQuadsConvertToTris " , " expectedCubeQuadsConvertToTris " ,
[ OperatorSpecEditMode ( " quads_convert_to_tris " , { " quad_method " : " BEAUTY " , " ngon_method " : " BEAUTY " } ,
' FACE ' , { 0 , 1 , 2 , 3 , 4 , 5 } ) ] ,
) ,
2021-01-30 22:42:21 +01:00
# select all
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CircleSelectAll " , " testCircleSelectAll " , " expectedCircleSelectAll " ,
[ OperatorSpecEditMode ( " select_all " , { } , " VERT " , { 1 } ) ] ,
) ,
SpecMeshTest (
" IsolatedVertsSelectAll " , " testIsolatedVertsSelectAll " , " expectedIsolatedVertsSelectAll " ,
[ OperatorSpecEditMode ( " select_all " , { } , " VERT " , { } ) ] ,
) ,
SpecMeshTest (
" EmptyMeshSelectAll " , " testEmptyMeshSelectAll " , " expectedEmptyMeshSelectAll " ,
[ OperatorSpecEditMode ( " select_all " , { } , " VERT " , { } ) ] ,
) ,
2021-01-30 22:42:21 +01:00
# select axis - Cannot be tested. Needs active vert selection
2021-07-27 21:00:28 +05:30
# SpecMeshTest("MonkeySelectAxisX", "testMonkeySelectAxisX", "expectedMonkeySelectAxisX",
2021-01-30 22:42:21 +01:00
# [OperatorSpecEditMode("select_axis", {"axis": "X"}, "VERT", {13})]),
2021-07-27 21:00:28 +05:30
# SpecMeshTest("MonkeySelectAxisY", "testMonkeySelectAxisY", "expectedMonkeySelectAxisY",
2021-01-30 22:42:21 +01:00
# [OperatorSpecEditMode("select_axis", {"axis": "Y", "sign": "NEG"}, "FACE", {317})]),
2021-07-27 21:00:28 +05:30
# SpecMeshTest("MonkeySelectAxisXYZ", "testMonkeySelectAxisXYZ", "expectedMonkeySelectAxisXYZ",
2021-01-30 22:42:21 +01:00
# [OperatorSpecEditMode("select_axis", {"axis": "X", "sign": "NEG"}, "FACE", {317}),
# OperatorSpecEditMode("select_axis", {"axis": "Y", "sign": "POS"}, "FACE", {}),
# OperatorSpecEditMode("select_axis", {"axis": "Z", "sign": "NEG"}, "FACE", {})]),
# select faces by sides
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeSelectFacesBySide " , " testCubeSelectFacesBySide " , " expectedCubeSelectFacesBySide " ,
[ OperatorSpecEditMode ( " select_face_by_sides " , { " number " : 4 } , " FACE " , { } ) ] ,
) ,
SpecMeshTest (
" CubeSelectFacesBySideGreater " , " testCubeSelectFacesBySideGreater " , " expectedCubeSelectFacesBySideGreater " ,
[ OperatorSpecEditMode ( " select_face_by_sides " , { " number " : 4 ,
" type " : " GREATER " , " extend " : True } , " FACE " , { } ) ] ,
) ,
SpecMeshTest (
" CubeSelectFacesBySideLess " , " testCubeSelectFacesBySideLess " , " expectedCubeSelectFacesBySideLess " ,
[ OperatorSpecEditMode ( " select_face_by_sides " , { " number " : 4 ,
" type " : " GREATER " , " extend " : True } , " FACE " , { } ) ] ,
) ,
2021-01-30 22:42:21 +01:00
# select interior faces
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeSelectInteriorFaces " , " testCubeSelectInteriorFaces " , " expectedCubeSelectInteriorFaces " ,
[ OperatorSpecEditMode ( " select_face_by_sides " , { " number " : 4 } , " FACE " , { } ) ] ,
) ,
SpecMeshTest (
" HoledCubeSelectInteriorFaces " , " testHoledCubeSelectInteriorFaces " , " expectedHoledCubeSelectInteriorFaces " ,
[ OperatorSpecEditMode ( " select_face_by_sides " , { " number " : 4 } , " FACE " , { } ) ] ,
) ,
SpecMeshTest (
" EmptyMeshSelectInteriorFaces " , " testEmptyMeshSelectInteriorFaces " , " expectedEmptyMeshSelectInteriorFaces " ,
[ OperatorSpecEditMode ( " select_face_by_sides " , { " number " : 4 } , " FACE " , { } ) ] ,
) ,
2021-01-30 22:42:21 +01:00
# select less
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" MonkeySelectLess " , " testMonkeySelectLess " , " expectedMonkeySelectLess " ,
[ OperatorSpecEditMode ( " select_less " , { } , " VERT " , {
2 , 8 , 24 , 34 , 44 , 46 , 48 , 50 , 52 , 54 , 56 , 58 , 60 , 62 , 64 , 68 ,
69 , 70 , 71 , 74 , 75 , 78 , 80 , 81 , 82 , 83 , 90 , 91 , 93 , 95 , 97 , 99 ,
101 , 109 , 111 , 115 , 117 , 119 , 121 , 123 , 125 , 127 , 129 , 130 , 131 ,
132 , 133 , 134 , 135 , 136 , 138 , 141 , 143 , 145 , 147 , 149 , 151 , 153 ,
155 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 , 174 ,
175 , 176 , 177 , 178 , 181 , 182 , 184 , 185 , 186 , 187 , 188 , 189 , 190 ,
192 , 193 , 194 , 195 , 196 , 197 , 198 , 199 , 200 , 201 , 202 , 203 , 204 ,
206 , 207 , 208 , 210 , 216 , 217 , 218 , 219 , 220 , 221 , 222 , 229 , 230 ,
231 , 233 , 235 , 237 , 239 , 241 , 243 , 245 , 247 , 249 , 251 , 253 , 255 ,
257 , 259 , 263 , 267 , 269 , 271 , 275 , 277 , 289 , 291 , 293 , 295 , 309 ,
310 , 311 , 312 , 316 , 317 , 318 , 319 , 320 , 323 , 325 , 327 , 329 , 331 ,
341 , 347 , 349 , 350 , 351 , 354 , 356 , 359 , 361 , 363 , 365 , 367 , 369 ,
375 , 379 , 381 , 382 , 385 , 386 , 387 , 388 , 389 , 390 , 391 , 392 , 393 ,
394 , 395 , 396 , 397 , 398 , 399 , 400 , 401 , 402 , 403 , 404 , 405 , 406 ,
407 , 408 , 409 , 410 , 411 , 412 , 413 , 414 , 415 , 416 , 417 , 418 , 419 ,
420 , 421 , 423 , 425 , 426 , 427 , 428 , 429 , 430 , 431 , 432 , 433 , 434 ,
435 , 436 , 437 , 438 , 439 , 440 , 441 , 442 , 443 , 444 , 445 , 446 , 447 ,
448 , 449 , 450 , 451 , 452 , 454 , 455 , 456 , 457 , 458 , 459 , 460 , 461 ,
462 , 463 , 464 , 471 , 473 , 474 , 475 , 476 , 477 , 478 , 479 , 480 , 481 ,
482 , 483 , 484 , 485 , 486 , 487 , 488 , 489 , 490 , 491 , 492 , 493 , 495 ,
496 , 497 , 498 , 499 , 502 , 505 ,
} ) ] ,
) ,
SpecMeshTest (
" HoledCubeSelectLess " , " testHoledCubeSelectLess " , " expectedHoledCubeSelectLess " ,
[ OperatorSpecEditMode ( " select_face_by_sides " , { } , " FACE " , { } ) ] ,
) ,
SpecMeshTest (
" EmptyMeshSelectLess " , " testEmptyMeshSelectLess " , " expectedEmptyMeshSelectLess " ,
[ OperatorSpecEditMode ( " select_face_by_sides " , { } , " VERT " , { } ) ] ,
) ,
2021-01-30 22:42:21 +01:00
# select linked
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" PlanesSelectLinked " , " testPlanesSelectLinked " , " expectedPlanesSelectedLinked " ,
[ OperatorSpecEditMode ( " select_linked " , { } , " VERT " , { 7 } ) ] ,
) ,
SpecMeshTest (
" CubesSelectLinked " , " testCubesSelectLinked " , " expectedCubesSelectLinked " ,
[ OperatorSpecEditMode ( " select_linked " , { } , " VERT " , { 11 } ) ] ,
) ,
SpecMeshTest (
" EmptyMeshSelectLinked " , " testEmptyMeshSelectLinked " , " expectedEmptyMeshSelectLinked " ,
[ OperatorSpecEditMode ( " select_linked " , { } , " VERT " , { } ) ] ,
) ,
2021-01-30 22:42:21 +01:00
2021-04-29 19:59:11 +05:30
# select nth (checkered deselect)
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CircleSelect2nd " , " testCircleSelect2nd " , " expectedCircleSelect2nd " ,
[ OperatorSpecEditMode ( " select_nth " , { } , " VERT " , { i for i in range ( 32 ) } ) ] ,
) ,
2021-04-29 19:59:11 +05:30
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
# Subdivide edgering - Not currently functional, operator returns inconsistently
2022-04-19 15:25:55 +10:00
# SpecMeshTest("SubdivideEdgeringSurface", "testCylinderSubdivideEdgering", "expectedCylinderSubdivideEdgeringSurface",
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
# [OperatorSpecEditMode("subdivide_edgering", {"number_cuts": 5, "interpolation": 'SURFACE', "profile_shape_factor": 0.1}, "EDGE", {0, (i for i in range(96) if (i % 3))})]),
2022-04-19 15:25:55 +10:00
# SpecMeshTest("SubdivideEdgeringPath", "testCylinderSubdivideEdgering", "expectedCylinderSubdivideEdgeringPath",
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
# [OperatorSpecEditMode("subdivide_edgering", {"number_cuts": 5, "interpolation": 'PATH', "profile_shape_factor": 0.1}, "EDGE", {0, (i for i in range(96) if (i % 3))})]),
2022-04-19 15:25:55 +10:00
# SpecMeshTest("SubdivideEdgeringLinear", "testCylinderSubdivideEdgering", "expectedCylinderSubdivideEdgeringLinear",
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
# [OperatorSpecEditMode("subdivide_edgering", {"number_cuts": 5, "interpolation": 'LINEAR', "profile_shape_factor": 0.1}, "EDGE", {0, (i for i in range(96) if (i % 3))})]),
# Symmetry Snap
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" SymmetrySnap " , " testPlaneSymmetrySnap " , " expectedPlaneSymmetrySnap " ,
[ OperatorSpecEditMode ( " symmetry_snap " , { " direction " : ' POSITIVE_X ' , " threshold " : 1 , " factor " : 0.75 ,
" use_center " : False } , " VERT " , { i for i in range ( 5 ) } ) ] ,
) ,
SpecMeshTest (
" SymmetrySnapCenter " , " testPlaneSymmetrySnap " , " expectedPlaneSymmetrySnapCenter " ,
[ OperatorSpecEditMode ( " symmetry_snap " , { " direction " : ' NEGATIVE_X ' , " threshold " : 1 , " factor " : 0.75 ,
" use_center " : True } , " VERT " , { i for i in range ( 5 ) } ) ] ,
) ,
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
2022-11-16 18:28:01 +01:00
# Triangulate Faces
SpecMeshTest (
" Triangulate Faces " , " testCubeTriangulate " , " expectedCubeTriangulate " ,
[ OperatorSpecEditMode ( " quads_convert_to_tris " , { } , " FACE " , { i for i in range ( 6 ) } ) ] ,
) ,
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
# Tris to Quads
2022-04-19 15:25:55 +10:00
SpecMeshTest (
Modeling: add support for merging triangles with reference to topology
A new parameter, topology influence, is added that causes the
join_triangles operator to prioritize edge joins that create quads with
sensible geometry relative to existing quads, instead of selecting the
'flattest' and 'squarest' next pair and then leaving leftover triangles
with no partners to merge with.
This produces its best results with the face and shape thresholds set to
180 degrees (no hard limits as a restriction against merging) and
topology influence somewhere between 100-130%, depending on the mesh.
Too low and many parallelograms and triangles are left, too high and the
algorithm tries too hard and starts making errors.
Note that both quads already present in the selection, as well as the
quads that are generated during the operator, will influence the
topology around them. This allows the modeler to manually merge a few
quads in key areas of the mesh, as a hint to the algorithm, indicating
what result they way they want to see, and the algorithm will then take
those quads into account and try to build around them according to the
modeler's guidance.
A new checkbox to leave only the remaining triangles selected has also
been added. This helps users visualize what remains to be fixed.
Ref !128610
2024-10-10 14:32:03 +11:00
" TrisToQuads 10 deg no topo " , " testPlanesTrisToQuad " , " expectedPlanesTrisToQuad.10.notopo " ,
[ OperatorSpecEditMode (
" tris_convert_to_quads " ,
{ " face_threshold " : 0.174533 , " shape_threshold " : 0.174533 ,
" topology_influence " : 0 , " deselect_joined " : False ,
" uvs " : True , " vcols " : True , " seam " : True , " sharp " : True , " materials " : True } ,
" VERT " , { i for i in range ( 42 ) } ) ] ,
2022-04-19 15:25:55 +10:00
) ,
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
2024-10-16 11:19:16 -05:00
SpecMeshTest (
" TrisToQuads 10 deg negligible topo " , " testPlanesTrisToQuad " , " expectedPlanesTrisToQuad.10.notopo " ,
[ OperatorSpecEditMode (
" tris_convert_to_quads " ,
{ " face_threshold " : 0.174533 , " shape_threshold " : 0.174533 ,
" topology_influence " : 0.01 , " deselect_joined " : False ,
" uvs " : True , " vcols " : True , " seam " : True , " sharp " : True , " materials " : True } ,
" VERT " , { i for i in range ( 42 ) } ) ] ,
) ,
Modeling: add support for merging triangles with reference to topology
A new parameter, topology influence, is added that causes the
join_triangles operator to prioritize edge joins that create quads with
sensible geometry relative to existing quads, instead of selecting the
'flattest' and 'squarest' next pair and then leaving leftover triangles
with no partners to merge with.
This produces its best results with the face and shape thresholds set to
180 degrees (no hard limits as a restriction against merging) and
topology influence somewhere between 100-130%, depending on the mesh.
Too low and many parallelograms and triangles are left, too high and the
algorithm tries too hard and starts making errors.
Note that both quads already present in the selection, as well as the
quads that are generated during the operator, will influence the
topology around them. This allows the modeler to manually merge a few
quads in key areas of the mesh, as a hint to the algorithm, indicating
what result they way they want to see, and the algorithm will then take
those quads into account and try to build around them according to the
modeler's guidance.
A new checkbox to leave only the remaining triangles selected has also
been added. This helps users visualize what remains to be fixed.
Ref !128610
2024-10-10 14:32:03 +11:00
SpecMeshTest (
" TrisToQuads 180 deg no topo " , " testPlanesTrisToQuad " , " expectedPlanesTrisToQuad.180.notopo " ,
[ OperatorSpecEditMode (
" tris_convert_to_quads " ,
{ " face_threshold " : 3.14159 , " shape_threshold " : 3.14159 ,
" topology_influence " : 0 , " deselect_joined " : False ,
" uvs " : True , " vcols " : True , " seam " : True , " sharp " : True , " materials " : True } ,
" VERT " , { i for i in range ( 42 ) } ) ] ,
) ,
SpecMeshTest (
" TrisToQuads 180 deg topo " , " testPlanesTrisToQuad " , " expectedPlanesTrisToQuad.180.topo " ,
[ OperatorSpecEditMode (
" tris_convert_to_quads " ,
{ " face_threshold " : 3.14159 , " shape_threshold " : 3.14159 ,
" topology_influence " : 1 , " deselect_joined " : False ,
" uvs " : True , " vcols " : True , " seam " : True , " sharp " : True , " materials " : True } ,
" VERT " , { i for i in range ( 42 ) } ) ] ,
) ,
2021-04-29 19:59:11 +05:30
# unsubdivide
# normal case
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeFaceUnsubdivide " , " testCubeUnsubdivide " , " expectedCubeUnsubdivide " ,
[ OperatorSpecEditMode ( " unsubdivide " , { } , " FACE " , { i for i in range ( 6 ) } ) ] ,
) ,
2021-05-14 17:35:08 +10:00
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
# UV Manipulation
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" UVRotate " , " testCubeUV " , " expectedCubeUVRotate " ,
[ OperatorSpecEditMode ( " uvs_rotate " , { } , " FACE " , { 2 } ) ] ,
) ,
SpecMeshTest (
" UVRotateCCW " , " testCubeUV " , " expectedCubeUVRotateCCW " ,
[ OperatorSpecEditMode ( " uvs_rotate " , { " use_ccw " : True } , " FACE " , { 2 } ) ] ,
) ,
SpecMeshTest (
" UVReverse " , " testCubeUV " , " expectedCubeUVReverse " ,
[ OperatorSpecEditMode ( " uvs_reverse " , { } , " FACE " , { 2 } ) ] ,
) ,
SpecMeshTest (
" UVAdd " , " testCubeUV " , " expectedCubeUVAdd " ,
[ OperatorSpecEditMode ( " uv_texture_add " , { } , " FACE " , { } ) ] ,
) ,
SpecMeshTest (
" UVRemove " , " testCubeUV " , " expectedCubeUVRemove " ,
[ OperatorSpecEditMode ( " uv_texture_remove " , { } , " FACE " , { } ) ] ,
) ,
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
# Vert Connect Concave
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" VertexConnectConcave " , " testPlaneVertConnectConcave " , " expectedPlaneVertConnectConcave " ,
[ OperatorSpecEditMode ( " vert_connect_concave " , { } , " FACE " , { 0 } ) ] ,
) ,
SpecMeshTest (
" VertexConnectConcaveConvexPentagon " , " testPentagonVertConnectConcave " , " expectedPentagonVertConnectConcave " ,
[ OperatorSpecEditMode ( " vert_connect_concave " , { } , " FACE " , { 0 } ) ] ,
) ,
SpecMeshTest (
" VertexConnectConcaveQuad " , " testPlaneVertConnectConcaveQuad " , " expectedPlaneVertConnectConcaveQuad " ,
[ OperatorSpecEditMode ( " vert_connect_concave " , { } , " FACE " , { 0 } ) ] ,
) ,
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
# Vert Connect Nonplanar
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" VertexConnectNonplanar " , " testPlaneVertConnectNonplanar " , " expectedPlaneVertConnectNonplanar " ,
[ OperatorSpecEditMode ( " vert_connect_nonplanar " , {
" angle_limit " : 0.17453292 } , " VERT " , { i for i in range ( 9 ) } ) ] ,
) ,
SpecMeshTest (
" VertexConnectNonplanarNgon " , " testPlaneVertConnectNonplanarNgon " , " expectedPlaneVertConnectNonplanarNgon " ,
[ OperatorSpecEditMode ( " vert_connect_nonplanar " , { " angle_limit " : 0.218166 } , " VERT " , { i for i in range ( 6 ) } ) ] ,
) ,
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
2023-02-12 14:37:16 +11:00
# #87259 - test cases
2022-04-19 15:25:55 +10:00
SpecMeshTest (
" CubeEdgeUnsubdivide " , " testCubeEdgeUnsubdivide " , " expectedCubeEdgeUnsubdivide " ,
[ OperatorSpecEditMode ( " unsubdivide " , { } , " EDGE " , { i for i in range ( 6 ) } ) ] ,
) ,
SpecMeshTest (
" UVSphereUnsubdivide " , " testUVSphereUnsubdivide " , " expectedUVSphereUnsubdivide " ,
[ OperatorSpecEditMode ( " unsubdivide " , { ' iterations ' : 9 } , " FACE " , { i for i in range ( 512 ) } ) ] ,
) ,
2021-05-14 17:35:08 +10:00
2021-04-29 19:59:11 +05:30
# vert connect path
# Tip: It works only if there is an already existing face or more than 2 vertices.
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
SpecMeshTest (
" PlaneVertConnectPath " , " testPlaneVertConnectPath " , " expectedPlaneVertConnectPath " ,
[ OperatorSpecEditMode (
" vert_connect_path " , { } , " VERT " , ( 0 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 ) ,
select_history = True ,
) ] ,
) ,
# Laplacian Smooth
SpecMeshTest (
" LaplacianSmoothDefault " , " testSphereLaplacianSmoothDefault " , " expectedSphereLaplacianSmoothDefault " ,
2022-04-19 15:25:55 +10:00
[ OperatorSpecEditMode ( " vertices_smooth_laplacian " , {
" preserve_volume " : False } , " VERT " , { i for i in range ( 482 ) } ) ] ,
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
) ,
SpecMeshTest (
" LaplacianSmoothHighValues " , " testSphereLaplacianSmoothHigh " , " expectedSphereLaplacianSmoothHigh " ,
2022-04-19 15:25:55 +10:00
[ OperatorSpecEditMode ( " vertices_smooth_laplacian " ,
{ " preserve_volume " : False ,
" repeat " : 100 ,
" lambda_factor " : 10.0 } ,
" VERT " ,
{ i for i in range ( 482 ) } ) ] ,
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
) ,
SpecMeshTest (
" LaplacianSmoothBorder " , " testCubeLaplacianSmoothBorder " , " expectedCubeLaplacianSmoothBorder " ,
2022-04-19 15:25:55 +10:00
[ OperatorSpecEditMode ( " vertices_smooth_laplacian " , {
" preserve_volume " : False , " lambda_border " : 1.0 } , " VERT " , { i for i in range ( 25 ) } ) ] ,
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
) ,
SpecMeshTest (
" LaplacianSmoothHighBorder " , " testCubeLaplacianSmoothHighBorder " , " expectedCubeLaplacianSmoothHighBorder " ,
2022-04-19 15:25:55 +10:00
[ OperatorSpecEditMode ( " vertices_smooth_laplacian " , {
" preserve_volume " : False , " lambda_border " : 100.0 } , " VERT " , { i for i in range ( 25 ) } ) ] ,
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
) ,
SpecMeshTest (
" LaplacianSmoothPreserveVolume " , " testSphereLaplacianSmoothPreserveVol " , " expectedSphereLaplacianSmoothPreserveVol " ,
2022-04-19 15:25:55 +10:00
[ OperatorSpecEditMode ( " vertices_smooth_laplacian " , {
" preserve_volume " : True } , " VERT " , { i for i in range ( 482 ) } ) ] ,
Tests: add edit-mesh operator tests
Added operator tests for hide, symmetry_snap, tris_convert_to_quads,
uvs_rotate, uvs_rotate, uv_texture_add, uv_texture_remove,
vert_connect_concave, vert_connect_nonplanar, vertex_color_add,
vertex_color_remove, vertices_smooth_laplacian, wireframe,
sculpt_vertex_color_add and sculpt_vertex_color_remove.
Ref D11798
Reviewed By: campbellbarton
2021-11-30 17:35:57 +11:00
) ,
# wireframe
SpecMeshTest (
" WireFrameDefault " , " testCubeWireframeDefault " , " expectedCubeWireframeDefault " ,
[ OperatorSpecEditMode ( " wireframe " , { } , " FACE " , { i for i in range ( 6 ) } ) ] ,
) ,
SpecMeshTest (
" WireFrameAlt " , " testCubeWireframeAlt " , " expectedCubeWireframeAlt " ,
[ OperatorSpecEditMode (
" wireframe " , {
" use_boundary " : False , " use_even_offset " : False ,
" use_relative_offset " : True , " use_replace " : False , " thickness " : 0.3 , " offset " : 0.3 ,
" use_crease " : True , " crease_weight " : 0.01 ,
} , " FACE " , { i for i in range ( 6 ) } ) ] ,
) ,
2021-04-29 19:59:11 +05:30
2020-01-13 07:11:45 -05:00
]
2020-12-17 20:44:55 +05:30
operators_test = RunTest ( tests )
2020-01-13 07:11:45 -05:00
command = list ( sys . argv )
for i , cmd in enumerate ( command ) :
if cmd == " --run-all-tests " :
2020-12-17 20:44:55 +05:30
operators_test . do_compare = True
2020-01-13 07:11:45 -05:00
operators_test . run_all_tests ( )
break
elif cmd == " --run-test " :
2020-12-17 20:44:55 +05:30
operators_test . do_compare = False
name = command [ i + 1 ]
operators_test . run_test ( name )
2020-01-13 07:11:45 -05:00
break
if __name__ == " __main__ " :
2020-04-27 17:43:47 +02:00
main ( )