Mesh
Balík: aspose.threed.entities (aspose-3d-foss 26.1.0)
Mesh ukladá geometriu polygonov ako zoznam riadiacich bodov (pozície vrcholov) a zoznam polygonových plôch. Každá polygonová plocha je zoznamom nulovo‑základných indexov do poľa riadiacich bodov. Plochy môžu byť trojuholníky, štvoruholníky alebo polygonov vyššej arity. Ďalšie údaje na vrchol; normály, UV súradnice, farby vrcholov; sú pripojené ako VertexElement vrstvy.
class Mesh(Geometry):Methods
A3DObject → SceneObject → Entity → Geometry → Mesh
Methods
Vytvorte sieť s jedným trojuholníkom od začiatku:
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")Vytvorte štvoruholníkovú sieť a pred exportom ju triangulujte:
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, a vertex_elements sú všetky vlastnosti; pristupujte k nim bez zátvoriek.
| Methods | Methods | Methods | Methods |
|---|---|---|---|
control_points | list[Vector4] | čítanie | Pole pozícií vrcholov. Každý záznam je Vector4(x, y, z, w) kde w je 1.0 pre údaje o pozícii. Vráti kópiu — nepridávajte do vráteného zoznamu. Použite mesh._control_points.append(v) na pridanie vrcholov (známa obmedzenosť; verejné API pre mutáciu zatiaľ nie je k dispozícii). |
polygon_count | int | čítanie | Počet polygonálnych tvárí definovaných na tejto sieti. |
polygons | list[list[int]] | čítanie | Všetky definície tvárí ako zoznam zoznamov indexov. Každý vnútorný zoznam obsahuje indexy vrcholov (do control_points) pre jednu tvár. |
edges | list[int] | čítanie | Surové dáta indexov hrán. Primárne pre interné použitie a pokročilé dotazy na topológiu. |
vertex_elements | list[VertexElement] | čítanie | Všetky vrstvy prvkov vrcholov aktuálne pripojené k tejto sieti (normály, UV, farby, atď.). |
visible | bool | čítanie/zápis | Methods False, sieť je skrytá v prehliadačoch, ktoré rešpektujú viditeľnosť. |
cast_shadows | bool | čítanie/zápis | Určuje, či táto sieť vrhá tiene v rendereroch, ktoré podporujú tieňové mapy. |
receive_shadows | bool | čítanie/zápis | Určuje, či táto sieť prijíma tiene od inej geometrie vrhajúcej tiene. |
Methods
create_polygon(*indices)
Definujte novú polygonálnu tvár poskytnutím indexov vrcholov v poradí. Indexy odkazujú na pozície v control_points. Prijíma tri alebo viac indexov pre trojuholníky, štvoruholníky a n-góny.
| Methods | Methods | Methods |
|---|---|---|
*indices | int | Argumenty indexov vrcholov v poradí otáčania (zvyčajne proti smeru hodinových ručičiek pri pohľade zvonku). |
Vracia: 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()
Vrátiť nový Mesh kde každý polygon bol rozdelený na trojuholníky pomocou fan triangulation. Pôvodná sieť nie je upravená. Užitočné pred exportom do formátov, ktoré vyžadujú iba trojuholníkovú geometriu (ako STL alebo niektoré glTF pipelines).
Vráti: Mesh; nová sieť obsahujúca iba trojuholníky.
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()
Vráťte to Mesh ako Mesh inštanciu. Pre Mesh objektov je to identická operácia (vracia self). Definované v Geometry základnej triede, aby poskytlo jednotné rozhranie konverzie pri práci s generickými Geometry referenciami.
Vracia: Mesh
from aspose.threed.entities import Geometry
def ensure_mesh(geom: Geometry):
return geom.to_mesh()create_element(element_type, mapping_mode, reference_mode)
Pridajte novú VertexElement vrstvu špecifikovaného typu do siete. Použite to na pripojenie normals, tangents, binormals, vertex colours a smoothing groups.
| Methods | Methods | Methods |
|---|---|---|
element_type | VertexElementType | Typ dát, ktoré táto vrstva obsahuje (napr., VertexElementType.NORMAL). |
mapping_mode | MappingMode | Ako sa dáta mapujú na geometriu: CONTROL_POINT, POLYGON_VERTEX, POLYGON, atď. |
reference_mode | ReferenceMode | Ako sa používajú indexy: DIRECT alebo INDEX_TO_DIRECT. |
Vráti: 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)
Pridajte vrstvu UV súradníc do siete. Toto je preferovaný spôsob, ako pripojiť dáta textúrových súradníc.
| Methods | Methods | Methods |
|---|---|---|
uv_mapping | TextureMapping | Účel UV kanála: DIFFUSE, SPECULAR, NORMAL, AMBIENT, atď. |
mapping_mode | MappingMode | Ako UV mapy mapujú na geometrické prvky. |
reference_mode | ReferenceMode | Režim indexovania: DIRECT alebo INDEX_TO_DIRECT. |
Vracia: 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,
)