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| Methods | Methods | Methods |
|---|---|---|
mesh | Mesh | مش منبع برای تسطیح. |
باز میگرداند: 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) # 2triangulate(scene) — تمام مشها را در یک Scene
کل گراف صحنه را پیمایش کنید و هر Mesh موجودیت را در محل. پس از این فراخوانی، هیچ چندضلعی غیر‑مثلثی در صحنه باقی نمیماند.
@staticmethod
def triangulate(scene: Scene) -> None| Methods | Methods | Methods |
|---|---|---|
scene | Scene | صحنهای که موجودیتهای مش آن مثلثبندی خواهند شد. |
باز میگرداند: 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]]| Methods | Methods | Methods |
|---|---|---|
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) — مثلثبندی دستهای با تولید نرمال اختیاری
چندضلعیهای فهرستهای اندیس را به صورت دستهای مثلثبندی کنید. بهصورت اختیاری نرمالهای سطح را برای هر مثلث خروجی محاسبه کرده و به آنها اضافه کنید 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]]| Methods | Methods | Methods |
|---|---|---|
control_points | list[Vector4] | آرایهٔ موقعیت رئوس. |
polygons | list[list[int]] | فهرستی از تعاریف چندضلعی، که هر کدام فهرستی از شاخصهای راس هستند. |
generate_normals | bool | Methods 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