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] | קריאה | כל שכבות רכיבי הקודקוד המחוברות כעת לרשת זו (נורמליות, UVs, צבעים, וכו’). |
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 כאשר כל מצולע חולק למשולשים באמצעות fan triangulation. הרשת המקורית אינה משתנה. שימושי לפני יצוא לפורמטים הדורשים גאומטריה של משולשים בלבד (כגון 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 | איך UVs ממפים אל רכיבי הגאומטריה. |
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,
)