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
MethodsMethodsMethods
meshMeshمش منبع برای تسطیح.

باز می‌گرداند: 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
MethodsMethodsMethods
sceneSceneصحنه‌ای که موجودیت‌های مش آن مثلث‌بندی خواهند شد.

باز می‌گرداند: 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]]
MethodsMethodsMethods
control_pointslist[Vector4]آرایهٔ کامل موقعیت رئوس.
polygonlist[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]]
MethodsMethodsMethods
control_pointslist[Vector4]آرایهٔ موقعیت رئوس.
polygonslist[list[int]]فهرستی از تعاریف چندضلعی، که هر کدام فهرستی از شاخص‌های راس هستند.
generate_normalsboolMethods 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

موارد مرتبط

 فارسی