Mesh

Pakotne: aspose.threed.entities (aspose-3d-foss 26.1.0)

Mesh glabā daudzstūru ģeometriju kā kontrolpunktu (virsotnes pozīciju) sarakstu un daudzstūru seju sarakstu. Katrs daudzstūra sejas ir saraksts ar nulles bāzes indeksiem uz kontrolpunktu masīvu. Sejas var būt trīsstūri, kvadrāti vai augstākas aritmetikas daudzstūri. Papildu dati uz katras virsotnes; normāles, UV koordinātas, virsotnes krāsas; tiek pievienoti kā VertexElement slāņi.

class Mesh(Geometry):

Methods

A3DObjectSceneObjectEntityGeometryMesh


Methods

Izveidojiet vienu trīsstūra režģi no nulles:

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")

Izveidojiet kvadrāta režģi un trīsstūrveidojiet to pirms eksportēšanas:

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, un vertex_elements ir visi īpašības; piekļūstiet tiem bez iekavām.

MethodsMethodsMethodsMethods
control_pointslist[Vector4]lasītVirsotnes pozīciju masīvs. Katrs ieraksts ir Vector4(x, y, z, w) kur w ir 1.0 pozīciju datiem. Atgriež kopiju — nepievienojiet atgrieztajam sarakstam. Izmantojiet mesh._control_points.append(v) lai pievienotu virsotnes (zināma ierobežojuma; publiskā mutācijas API vēl nav pieejama).
polygon_countintlasītPoligonu seju skaits, kas definēts šajā režģī.
polygonslist[list[int]]lasītVisas seju definīcijas kā saraksts ar indeksu sarakstiem. Katrs iekšējais saraksts satur virsotnes indeksus (uz control_points) vienam seviņam.
edgeslist[int]lasītNeapstrādāti malas indeksa dati. Galvenokārt iekšējai lietošanai un uzlabotiem topoloģijas vaicājumiem.
vertex_elementslist[VertexElement]lasītVisu virsotnes elementu slāņu saraksts, kas pašlaik pievienoti šim režģim (normāles, UV, krāsas utt.).
visibleboollasīt/rakstītMethods False, režģis tiek paslēpts skatītājos, kas ievēro redzamību.
cast_shadowsboollasīt/rakstītVai šis režģis rada ēnas renderētājos, kas atbalsta ēnu kartes.
receive_shadowsboollasīt/rakstītVai šis mesh saņem ēnas no citas ēnas metošanas ģeometrijas.

Methods

create_polygon(*indices)

Definējiet jaunu polygon face, norādot virsotņu indeksus secībā. Indeksi atsaucas uz pozīcijām control_points. Pieņem trīs vai vairāk indeksus trīsstūriem, kvadrātiem un n-gons.

MethodsMethodsMethods
*indicesintVertex index argumenti vējveida secībā (parasti pret pulksteņa rādītāja virzienu, skatoties no ārpuses).

Atgriež: 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()

Atgriezt jaunu Mesh kur katrs daudzstūris ir sadalīts trīsstūros, izmantojot vērpsta triangulāciju. Sākotnējais mesh netiek modificēts. Noderīgi pirms eksportēšanas uz formātiem, kas pieprasa tikai trīsstūru ģeometriju (piemēram, STL vai dažus glTF cauruļvadu).

Atgriež: Mesh; jauns tīkls, kas satur tikai trīsstūrus.

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()

Atgriezt šo MeshMesh instanci. Lai Mesh objektiem tas ir identitātes operācija (atgriež self). Definēts uz Geometry bāzes klasi, lai nodrošinātu vienotu konvertēšanas interfeisu, strādājot ar vispārīgiem Geometry atsaucēm.

Atgriež: Mesh

from aspose.threed.entities import Geometry

def ensure_mesh(geom: Geometry):
    return geom.to_mesh()

create_element(element_type, mapping_mode, reference_mode)

Pievienot jaunu VertexElement slāni norādītā tipa tīklam. Izmantojiet to, lai pievienotu normālus, tangentes, binormālus, virsotņu krāsas un gludināšanas grupas.

MethodsMethodsMethods
element_typeVertexElementTypeDatu veids, ko šis slānis satur (piemēram,., VertexElementType.NORMAL).
mapping_modeMappingModeKā dati tiek kartēti uz ģeometrijas: CONTROL_POINT, POLYGON_VERTEX, POLYGON, utt.
reference_modeReferenceModeKā indeksi tiek izmantoti: DIRECT vai INDEX_TO_DIRECT.

Atgriež: 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)

Pievieno UV koordinātu slāni tīklam. Šī ir ieteicamā metode, lai pievienotu tekstūras koordinātu datus.

MethodsMethodsMethods
uv_mappingTextureMappingUV kanāla mērķis: DIFFUSE, SPECULAR, NORMAL, AMBIENT, utt.
mapping_modeMappingModeKā UV kartes tiek kartētas uz ģeometrijas elementiem.
reference_modeReferenceModeIndeksēšanas režīms: DIRECT vai INDEX_TO_DIRECT.

Atgriež: 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,
)

Skatīt arī

 Latviešu