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

A3DObjectSceneObjectEntityGeometryMesh


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.

MethodsMethodsMethodsMethods
control_pointslist[Vector4]čítaniePole 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_countintčítaniePočet polygonálnych tvárí definovaných na tejto sieti.
polygonslist[list[int]]čítanieVšetky definície tvárí ako zoznam zoznamov indexov. Každý vnútorný zoznam obsahuje indexy vrcholov (do control_points) pre jednu tvár.
edgeslist[int]čítanieSurové dáta indexov hrán. Primárne pre interné použitie a pokročilé dotazy na topológiu.
vertex_elementslist[VertexElement]čítanieVšetky vrstvy prvkov vrcholov aktuálne pripojené k tejto sieti (normály, UV, farby, atď.).
visibleboolčítanie/zápisMethods False, sieť je skrytá v prehliadačoch, ktoré rešpektujú viditeľnosť.
cast_shadowsboolčítanie/zápisUrčuje, či táto sieť vrhá tiene v rendereroch, ktoré podporujú tieňové mapy.
receive_shadowsboolčítanie/zápisUrč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.

MethodsMethodsMethods
*indicesintArgumenty 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)          # 2

triangulate()

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)      # 2

to_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.

MethodsMethodsMethods
element_typeVertexElementTypeTyp dát, ktoré táto vrstva obsahuje (napr., VertexElementType.NORMAL).
mapping_modeMappingModeAko sa dáta mapujú na geometriu: CONTROL_POINT, POLYGON_VERTEX, POLYGON, atď.
reference_modeReferenceModeAko 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.

MethodsMethodsMethods
uv_mappingTextureMappingÚčel UV kanála: DIFFUSE, SPECULAR, NORMAL, AMBIENT, atď.
mapping_modeMappingModeAko UV mapy mapujú na geometrické prvky.
reference_modeReferenceModeRež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,
)

Pozri tiež

 Slovenčina