PolygonModifier — Aspose.3D Python API Reference
بسته: aspose.threed.entities (aspose-3d-foss 26.1.0)
PolygonModifier یک کلاس ابزار ایستا است که عملیات تستسلیشن چندضلعی را بر روی Mesh و Scene اشیاء. تمام متدها متدهای کلاس هستند؛; PolygonModifier بهصورت مستقیم هرگز نمونهسازی نمیشود.
from aspose.threed.entities import PolygonModifierعملیات اصلی، مثلثبندی است: تبدیل چهارضلعیها و n‑گونها به مثلثها با استفاده از روش برش گوشه. این کار پیش از خروجی گرفتن به فرمتهایی که فقط هندسهٔ مثلثی را میپذیرند (STL، برخی خطوط لولهٔ glTF) لازم است.
triangulate(arg) — مثلثبندی یک Mesh
یک مقدار جدید برگردان Mesh که در آن هر چندضلعی به مثلث تبدیل شده است. مش اصلی تغییر نمیکند. لایههای عناصر راس (نرمالها، UVها، رنگها) به مش جدید کپی میشوند.
@staticmethod
def triangulate(mesh: Mesh) -> Meshmesh | Mesh | مش منبع برای مثلثبندی. |
باز میگرداند: Mesh — یک مش جدید که فقط شامل چندضلعیهای مثلثی است.
from aspose.threed.entities import Mesh, PolygonModifier
from aspose.threed.utilities import Vector4
mesh = Mesh()
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) # 2triangulate(scene) — تمام مشها را در یک Scene
کل گراف صحنه را پیمایش کنید و هر Mesh موجودیت را در محل. پس از این فراخوانی، هیچ چندضلعی غیر‑مثلثی در صحنه باقی نمیماند.
@staticmethod
def triangulate(scene: Scene) -> Nonescene | Scene | صحنهای که موجودیتهای mesh آن مثلثبندی خواهند شد. |
باز میگرداند: 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]]control_points | list[Vector4] | آرایه کامل موقعیت رئوس. |
polygon | list[int] | اندیسها به control_points تعریف چندضلعی برای تقسیم. |
باز میگردد: 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) — دستهای مثلثبندی با تولید نرمال اختیاری
Batch-triangulate یک فهرست از فهرستهای شاخص چندضلعی. بهصورت اختیاری نرمالهای سطح را برای هر مثلث خروجی محاسبه کرده و به 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]]control_points | list[Vector4] | آرایه موقعیت رئوس. |
polygons | list[list[int]] | یک فهرست از تعاریف چندضلعی، که هر کدام فهرستی از شاخصهای رئوس هستند. |
generate_normals | bool | True,، نرمال سطح را برای هر مثلث خروجی محاسبه کنید. |
normals_out | `list[Vector3] | None` |
باز میگرداند: 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