Mesh
Paketti: aspose.threed.entities (aspose-3d-foss 26.1.0)
Mesh tallentaa monikulmion geometrian listana ohjauspisteitä (solmupisteitä) ja listana monikulmion tahkoja. Jokainen monikulmion tahko on lista nollapohjaisia indeksejä ohjauspisteiden taulukkoon. Tahkot voivat olla kolmioita, nelikulmioita tai korkeamman asteen monikulmioita. Lisätty per‑solmu‑data; normaalit, UV‑koordinaatit, solmujen värit; liitetään VertexElement kerroksina.
class Mesh(Geometry):Methods
A3DObject → SceneObject → Entity → Geometry → Mesh
Methods
Rakenna yksi kolmioverkko alusta alkaen:
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")Rakenna nelikulmioverkko ja kolmioita se ennen vientiä:
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, ja vertex_elements ovat kaikki ominaisuuksia; käytä niitä ilman sulkuja.
| Methods | Methods | Methods | Methods |
|---|---|---|---|
control_points | list[Vector4] | lue | Solmupisteiden taulukko. Jokainen alkio on Vector4(x, y, z, w) jossa w on 1.0 positiotietoja varten. Palauttaa kopion — älä lisää palautettuun listaan. Käytä mesh._control_points.append(v) lisätäksesi solmuja (tunnettu rajoitus; julkinen muokkaus‑API ei ole vielä saatavilla). |
polygon_count | int | lue | Määritettyjen monikulmioiden kasvojen määrä tässä verkossa. |
polygons | list[list[int]] | lue | Kaikki kasvojen määritelmät listana indeksilistoja. Jokainen sisempi lista sisältää kärkipisteiden indeksit (into control_points) yhdelle tahkolle. |
edges | list[int] | luku | Raaka reunapisteindeksidata. Pääasiassa sisäiseen käyttöön ja kehittyneisiin topologiahaun kyselyihin. |
vertex_elements | list[VertexElement] | luku | Kaikki tähän verkkoon tällä hetkellä liitetyt kärkipiste-elementtikerrokset (normaalit, UV:t, värit jne.). |
visible | bool | luku/kirjoitus | Methods False, verkko on piilotettu katseluohjelmissa, jotka kunnioittavat näkyvyyttä. |
cast_shadows | bool | luku/kirjoitus | Määrittää, piirtääkö tämä verkko varjoja renderöijissä, jotka tukevat varjokarttoja. |
receive_shadows | bool | luku/kirjoitus | Määrittää, vastaanottaako tämä verkko varjoja muulta varjoja heittävältä geometrialta. |
Methods
create_polygon(*indices)
Määritä uusi monikulmio-tahko antamalla kärkinumerot järjestyksessä. Numerot viittaavat paikkoihin tiedostossa control_points. Hyväksyy kolme tai useampia indeksejä kolmioille, nelikulmioille ja n-goneille.
| Methods | Methods | Methods |
|---|---|---|
*indices | int | Kärkinumeron argumentit kierrejärjestyksessä (yleensä vastapäivään katsottuna ulkopuolelta). |
Palauttaa: 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()
Palauta uusi Mesh jossa jokainen monikulmio on jaettu kolmioiksi käyttäen sauva‑triangulaatiota. Alkuperäistä verkkoa ei muuteta. Hyödyllinen ennen vientiä formaatteihin, jotka vaativat pelkästään kolmio‑geometrian (kuten STL tai jotkin glTF‑putket).
Palauttaa: Mesh; uusi verkko, joka sisältää vain kolmioita.
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()
Palauta tämä Mesh kuten Mesh instanssi. Kohteille Mesh objekteille tämä on identiteettitoiminto (palauttaa self) Geometry perusluokkaa tarjoamaan yhtenäisen muunnosrajapinnan työskenneltäessä geneeristen Geometry viitteiden.
Palauttaa: Mesh
from aspose.threed.entities import Geometry
def ensure_mesh(geom: Geometry):
return geom.to_mesh()create_element(element_type, mapping_mode, reference_mode)
Lisää uusi VertexElement kerroksen määritetystä tyypistä verkkoon. Käytä tätä liittämään normaalit, tangentit, binormaalit, vertex-värit ja tasoitusryhmät.
| Methods | Methods | Methods |
|---|---|---|
element_type | VertexElementType | Tämän kerroksen sisältämän datan tyyppi (esim., VertexElementType.NORMAL). |
mapping_mode | MappingMode | Miten data kartoitetaan geometriaan: CONTROL_POINT, POLYGON_VERTEX, POLYGON, jne. |
reference_mode | ReferenceMode | Miten indeksit käytetään: DIRECT tai INDEX_TO_DIRECT. |
Palauttaa: 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)
Lisää UV-koordinaatikerros verkkoon. Tämä on suositeltu tapa liittää tekstuurikoordinaattitiedot.
| Methods | Methods | Methods |
|---|---|---|
uv_mapping | TextureMapping | UV-kanavan tarkoitus: DIFFUSE, SPECULAR, NORMAL, AMBIENT, jne. |
mapping_mode | MappingMode | Kuinka UV:t kartoittavat geometriaelementtejä. |
reference_mode | ReferenceMode | Indeksointitila: DIRECT tai INDEX_TO_DIRECT. |
Palauttaa: 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,
)