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

A3DObjectSceneObjectEntityGeometryMesh


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.

MethodsMethodsMethodsMethods
control_pointslist[Vector4]lueSolmupisteiden 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_countintlueMääritettyjen monikulmioiden kasvojen määrä tässä verkossa.
polygonslist[list[int]]lueKaikki kasvojen määritelmät listana indeksilistoja. Jokainen sisempi lista sisältää kärkipisteiden indeksit (into control_points) yhdelle tahkolle.
edgeslist[int]lukuRaaka reunapisteindeksidata. Pääasiassa sisäiseen käyttöön ja kehittyneisiin topologiahaun kyselyihin.
vertex_elementslist[VertexElement]lukuKaikki tähän verkkoon tällä hetkellä liitetyt kärkipiste-elementtikerrokset (normaalit, UV:t, värit jne.).
visibleboolluku/kirjoitusMethods False, verkko on piilotettu katseluohjelmissa, jotka kunnioittavat näkyvyyttä.
cast_shadowsboolluku/kirjoitusMäärittää, piirtääkö tämä verkko varjoja renderöijissä, jotka tukevat varjokarttoja.
receive_shadowsboolluku/kirjoitusMää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.

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

triangulate()

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

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

MethodsMethodsMethods
element_typeVertexElementTypeTämän kerroksen sisältämän datan tyyppi (esim., VertexElementType.NORMAL).
mapping_modeMappingModeMiten data kartoitetaan geometriaan: CONTROL_POINT, POLYGON_VERTEX, POLYGON, jne.
reference_modeReferenceModeMiten 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.

MethodsMethodsMethods
uv_mappingTextureMappingUV-kanavan tarkoitus: DIFFUSE, SPECULAR, NORMAL, AMBIENT, jne.
mapping_modeMappingModeKuinka UV:t kartoittavat geometriaelementtejä.
reference_modeReferenceModeIndeksointitila: 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,
)

Katso myös

 Suomi