PolygonModifier

PolygonModifier

بسته: aspose.threed.entities (aspose-3d-foss 26.1.0)

PolygonModifier یک کلاس ابزار ایستا است که عملیات تسطیح چندضلعی را بر روی Mesh و Scene اشیاء. تمام متدها متدهای کلاس هستند؛; PolygonModifier هرگز به‌صورت مستقیم نمونه‌سازی نمی‌شود.

from aspose.threed.entities import PolygonModifier

عملیات اصلی مثلث‌سازی است: تبدیل چهارضلعی‌ها و n‑گون‌ها به مثلث‌ها با استفاده از روش برش گوشه. این کار پیش از خروجی گرفتن به فرمت‌هایی که فقط هندسهٔ مثلثی را می‌پذیرند (STL، برخی خطوط لولهٔ glTF) لازم است.


Methods

triangulate(arg) — تسطیح یک Mesh

یک جدید برگردانید Mesh که در آن هر چندضلعی به مثلث‌ها تبدیل شده است. مش اصلی تغییر نمی‌کند. لایه‌های عناصر راس (نرمال‌ها، UVها، رنگ‌ها) به مش جدید کپی می‌شوند.

@staticmethod
def triangulate(mesh: Mesh) -> Mesh
SignatureDescription
triangulate(arg1, arg2, arg3, arg4)Union[None, 'Mesh', List[List[int]]]Triangulates polygon data and returns None, a Mesh, or a list of triangle index lists
process_node(node)Processes the given node to apply polygon modifications

باز می‌گرداند: Mesh — یک مش جدید که فقط شامل چندضلعی‌های مثلثی است.

from aspose.threed.entities import Mesh, PolygonModifier
from aspose.threed.utilities import Vector4

mesh = Mesh()
# Use _control_points to mutate the backing list (control_points returns a copy)
for x, z in [(0, 0), (1, 0), (1, 1), (0, 1)]:
    mesh._control_points.append(Vector4(float(x), 0.0, float(z), 1.0))
mesh.create_polygon(0, 1, 2, 3)   # one quad

tri_mesh = PolygonModifier.triangulate(mesh)
print(tri_mesh.polygon_count)     # 2

triangulate(scene) — تمام مش‌ها را در یک Scene

کل گراف صحنه را پیمایش کنید و هر Mesh موجودیت را در محل. پس از این فراخوانی، هیچ چندضلعی غیر‑مثلثی در صحنه باقی نمی‌ماند.

@staticmethod
def triangulate(scene: Scene) -> None

باز می‌گرداند: None

from aspose.threed import Scene
from aspose.threed.entities import PolygonModifier

scene = Scene.from_file("model_with_quads.obj")
PolygonModifier.triangulate(scene)
scene.save("model_triangulated.stl")

triangulate(control_points, polygon) — یک چندضلعی را مثلث‌بندی کنید

بارگذاری سطح پایین: با دریافت لیستی از نقاط کنترل و لیستی از ایندکس‌های راس که یک چندضلعی را تشکیل می‌دهند، لیستی از سه‌تایی‌های ایندکس مثلثی که توسط مثلث‌سازی فن تولید می‌شوند، برمی‌گرداند.

@staticmethod
def triangulate(
    control_points: list[Vector4],
    polygon: list[int],
) -> list[list[int]]

بازمی‌گرداند: list[list[int]] — فهرستی از [i, j, k] سه‌تایی‌ها، که هر کدام یک مثلث خروجی را نشان می‌دهند.

from aspose.threed.entities import PolygonModifier
from aspose.threed.utilities import Vector4

pts = [
    Vector4(0.0, 0.0, 0.0, 1.0),
    Vector4(1.0, 0.0, 0.0, 1.0),
    Vector4(1.0, 1.0, 0.0, 1.0),
    Vector4(0.0, 1.0, 0.0, 1.0),
]
quad_indices = [0, 1, 2, 3]
triangles = PolygonModifier.triangulate(pts, quad_indices)
print(triangles)   # e.g. [[0, 1, 2], [0, 2, 3]]

triangulate(control_points, polygons, generate_normals, normals_out) — مثلث‌بندی دسته‌ای با تولید نرمال اختیاری

چندضلعی‌های فهرست‌های اندیس را به صورت دسته‌ای مثلث‌بندی کنید. به‌صورت اختیاری نرمال‌های سطح را برای هر مثلث خروجی محاسبه کرده و به آن‌ها اضافه کنید normals_out.

@staticmethod
def triangulate(
    control_points: list[Vector4],
    polygons: list[list[int]],
    generate_normals: bool = False,
    normals_out: list[Vector3] | None = None,
) -> list[list[int]]

باز می‌گردد: list[list[int]] — تمام سه‌تایی‌های مثلث خروجی به ترتیب.

from aspose.threed.entities import PolygonModifier
from aspose.threed.utilities import Vector4, Vector3

pts = [
    Vector4(0, 0, 0, 1), Vector4(1, 0, 0, 1),
    Vector4(1, 1, 0, 1), Vector4(0, 1, 0, 1),
]
polys = [[0, 1, 2, 3]]
normals: list[Vector3] = []
tris = PolygonModifier.triangulate(pts, polys, True, normals)
print(len(tris))     # 2
print(len(normals))  # 2

موارد مرتبط

 فارسی