Mesh
بسته: aspose.threed.entities (aspose-3d-foss 26.1.0)
Mesh هندسه چندضلعی را بهصورت فهرستی از نقاط کنترل (موقعیتهای راس) و فهرستی از سطوح چندضلعی ذخیره میکند. هر سطح چندضلعی فهرستی از ایندکسهای صفر‑مبنا بهسوی آرایهٔ نقاط کنترل است. سطوح میتوانند مثلث، چهارضلعی یا چندضلعیهای با آرگومان بالاتر باشند. دادههای اضافی بهازای هر راس؛ نرمالها، مختصات UV، رنگهای راس؛ بهصورت VertexElement لایهها.
class Mesh(Geometry):Methods
A3DObject → SceneObject → Entity → Geometry → Mesh
Methods
یک مش مثلثی تکتکه را از ابتدا بسازید:
from aspose.threed import Scene
from aspose.threed.entities import Mesh
from aspose.threed.utilities import Vector4
# Create the mesh and add three vertex positions
# IMPORTANT: control_points returns a copy of the internal list.
# Append to _control_points directly — appending to control_points discards the vertex.
# This is a known library limitation; a public mutation API does not yet exist.
mesh = Mesh()
mesh._control_points.append(Vector4(0.0, 0.0, 0.0, 1.0)) # vertex 0
mesh._control_points.append(Vector4(1.0, 0.0, 0.0, 1.0)) # vertex 1
mesh._control_points.append(Vector4(0.5, 1.0, 0.0, 1.0)) # vertex 2
# Define one triangle face using vertex indices
mesh.create_polygon(0, 1, 2)
# Attach to a scene and save
scene = Scene()
scene.root_node.create_child_node("triangle", mesh)
scene.save("triangle.stl")یک مش چهارضلعی بسازید و قبل از خروجیگیری آن را مثلثبندی کنید:
from aspose.threed import Scene
from aspose.threed.entities import Mesh
from aspose.threed.utilities import Vector4
mesh = Mesh()
# Four corners of a unit square in the XZ plane
# 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))
# One quad face
mesh.create_polygon(0, 1, 2, 3)
print(f"Polygons before triangulate: {mesh.polygon_count}") # 1
triangulated = mesh.triangulate()
print(f"Polygons after triangulate: {triangulated.polygon_count}") # 2
scene = Scene()
scene.root_node.create_child_node("quad", triangulated)
scene.save("quad.glb")Methods
control_points, polygon_count, polygons, edges, و vertex_elements همهٔ ویژگیها; بدون پرانتز به آنها دسترسی پیدا کنید.
| Methods | Methods | Methods | Methods |
|---|---|---|---|
control_points | list[Vector4] | خواندن | آرایهٔ موقعیت راس. هر ورودی یک Vector4(x, y, z, w) که w است 1.0 برای دادههای موقعیت. یک کپی برمیگرداند — به لیست برگرداندهشده اضافه نکنید. استفاده کنید mesh._control_points.append(v) برای افزودن رئوس (محدودیت شناختهشده؛ API تغییر عمومی هنوز در دسترس نیست). |
polygon_count | int | خواندن | تعداد سطوح چندضلعی تعریفشده در این مش. |
polygons | list[list[int]] | خواندن | تمام تعاریف سطوح بهصورت فهرستی از فهرستهای ایندکس. هر فهرست داخلی ایندکسهای رئوس (در control_points) برای یک وجه. |
edges | list[int] | خواندن | دادههای خام شاخص لبه. عمدتاً برای استفاده داخلی و پرسوجوهای پیشرفته توپولوژی. |
vertex_elements | list[VertexElement] | خواندن | تمام لایههای عنصر راس که در حال حاضر به این مش متصل هستند (نرمالها، UVها، رنگها و غیره). |
visible | bool | خواندن/نوشتن | Methods False,، مش در نمایشگرهایی که به قابلیت نمایش احترام میگذارند مخفی میشود. |
cast_shadows | bool | خواندن/نوشتن | اینکه آیا این مش در رندررهایی که نقشههای سایه را پشتیبانی میکنند، سایه میاندازد. |
receive_shadows | bool | خواندن/نوشتن | این که آیا این مش سایهها را از سایر هندسههای تولیدکننده سایه دریافت میکند. |
Methods
create_polygon(*indices)
یک سطح چندضلعی جدید را با ارائهٔ ایندکسهای راس به ترتیب تعریف کنید. ایندکسها به موقعیتها در control_points. برای مثلثها، چهارضلعیها و n‑گونها سه یا بیشتر ایندکس را میپذیرد.
| Methods | Methods | Methods |
|---|---|---|
*indices | int | آرگومانهای ایندکس راس به ترتیب پیچش (معمولاً خلاف ساعتگرد هنگام مشاهده از بیرون). |
بازمیگرداند: None
mesh = Mesh()
# ... populate control_points ...
mesh.create_polygon(0, 1, 2) # triangle
mesh.create_polygon(0, 1, 2, 3) # quad
print(mesh.polygon_count) # 2triangulate()
یک جدید برگردانید Mesh که در آن هر چندضلعی با استفاده از مثلثبندی فن به مثلثها تقسیم شده است. مش اصلی تغییر نمیکند. قبل از خروجی به فرمتهایی که فقط هندسهٔ مثلثی را میطلبند (مانند STL یا برخی خطوط لولهٔ glTF) مفید است.
بازمیگرداند: Mesh; یک مش جدید که فقط شامل مثلثها است.
from aspose.threed.entities import Mesh
from aspose.threed.utilities import Vector4
mesh = Mesh()
# Use _control_points to mutate the backing list (control_points returns a copy)
for v in [(0,0,0), (1,0,0), (1,1,0), (0,1,0)]:
mesh._control_points.append(Vector4(*v, 1.0))
mesh.create_polygon(0, 1, 2, 3) # one quad
tri_mesh = mesh.triangulate()
print(tri_mesh.polygon_count) # 2to_mesh()
این را برگردانید Mesh به عنوان یک Mesh نمونه. برای Mesh در اشیاء این یک عملیات هویت است (بازمیگرداند self). تعریف شده بر روی Geometry کلاس پایه برای فراهم کردن یک رابط تبدیل یکنواخت هنگام کار با عمومی Geometry مراجع.
بازمیگرداند: Mesh
from aspose.threed.entities import Geometry
def ensure_mesh(geom: Geometry):
return geom.to_mesh()create_element(element_type, mapping_mode, reference_mode)
افزودن جدید VertexElement لایهای از نوع مشخصشده به مش اضافه کنید. از این برای پیوست نرمالها، تانژانتها، باینورمالها، رنگهای راس و گروههای صافسازی استفاده کنید.
| Methods | Methods | Methods |
|---|---|---|
element_type | VertexElementType | نوع دادهای که این لایه نگه میدارد (مثلاً،., VertexElementType.NORMAL). |
mapping_mode | MappingMode | نحوه نگاشت دادهها به هندسه: CONTROL_POINT, POLYGON_VERTEX, POLYGON,، و غیره. |
reference_mode | ReferenceMode | نحوه استفاده از ایندکسها: DIRECT یا INDEX_TO_DIRECT. |
بازمیگرداند: VertexElement
from aspose.threed.entities import Mesh, VertexElementType, MappingMode, ReferenceMode
from aspose.threed.utilities import Vector4
mesh = Mesh()
# Use _control_points to mutate the backing list (control_points returns a copy)
mesh._control_points.append(Vector4(0, 0, 0, 1))
mesh._control_points.append(Vector4(1, 0, 0, 1))
mesh._control_points.append(Vector4(0.5, 1, 0, 1))
mesh.create_polygon(0, 1, 2)
normal_element = mesh.create_element(
VertexElementType.NORMAL,
MappingMode.CONTROL_POINT,
ReferenceMode.DIRECT,
)create_element_uv(uv_mapping, mapping_mode, reference_mode)
یک لایه مختصات UV به مش اضافه کنید. این روش ترجیحی برای اتصال دادههای مختصات بافت است.
| Methods | Methods | Methods |
|---|---|---|
uv_mapping | TextureMapping | هدف کانال UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, و غیره. |
mapping_mode | MappingMode | چگونه UVها به عناصر هندسه نگاشت میشوند. |
reference_mode | ReferenceMode | حالت ایندکسگذاری: DIRECT یا INDEX_TO_DIRECT. |
بازمیگرداند: VertexElementUV
from aspose.threed.entities import Mesh, TextureMapping, MappingMode, ReferenceMode
mesh = Mesh()
# ... define control_points and polygons ...
uv_element = mesh.create_element_uv(
TextureMapping.DIFFUSE,
MappingMode.POLYGON_VERTEX,
ReferenceMode.INDEX_TO_DIRECT,
)