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
A3DObject → SceneObject → Entity → Geometry → Mesh
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.
| Methods | Methods | Methods | Methods |
|---|---|---|---|
control_points | list[Vector4] | lasīt | Virsotnes 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_count | int | lasīt | Poligonu seju skaits, kas definēts šajā režģī. |
polygons | list[list[int]] | lasīt | Visas seju definīcijas kā saraksts ar indeksu sarakstiem. Katrs iekšējais saraksts satur virsotnes indeksus (uz control_points) vienam seviņam. |
edges | list[int] | lasīt | Neapstrādāti malas indeksa dati. Galvenokārt iekšējai lietošanai un uzlabotiem topoloģijas vaicājumiem. |
vertex_elements | list[VertexElement] | lasīt | Visu virsotnes elementu slāņu saraksts, kas pašlaik pievienoti šim režģim (normāles, UV, krāsas utt.). |
visible | bool | lasīt/rakstīt | Methods False, režģis tiek paslēpts skatītājos, kas ievēro redzamību. |
cast_shadows | bool | lasīt/rakstīt | Vai šis režģis rada ēnas renderētājos, kas atbalsta ēnu kartes. |
receive_shadows | bool | lasīt/rakstīt | Vai š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.
| Methods | Methods | Methods |
|---|---|---|
*indices | int | Vertex 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) # 2triangulate()
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) # 2to_mesh()
Atgriezt šo Mesh kā Mesh 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.
| Methods | Methods | Methods |
|---|---|---|
element_type | VertexElementType | Datu veids, ko šis slānis satur (piemēram,., VertexElementType.NORMAL). |
mapping_mode | MappingMode | Kā dati tiek kartēti uz ģeometrijas: CONTROL_POINT, POLYGON_VERTEX, POLYGON, utt. |
reference_mode | ReferenceMode | Kā 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.
| Methods | Methods | Methods |
|---|---|---|
uv_mapping | TextureMapping | UV kanāla mērķis: DIFFUSE, SPECULAR, NORMAL, AMBIENT, utt. |
mapping_mode | MappingMode | Kā UV kartes tiek kartētas uz ģeometrijas elementiem. |
reference_mode | ReferenceMode | Indeksēš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,
)