Mesh

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

Mesh poligon geometrisini kontrol noktalarının (köşe konumları) bir listesi ve poligon yüzlerinin bir listesi olarak depolar. Her poligon yüzü, kontrol noktaları dizisine sıfırdan başlayan indekslerin bir listesidir. Yüzler üçgen, dörtgen veya daha yüksek dereceli poligonlar olabilir. Ek per‑köşe verileri; normaller, UV koordinatları, köşe renkleri; şu şekilde eklenir VertexElement katmanlar.

class Mesh(Geometry):

Methods

A3DObjectSceneObjectEntityGeometryMesh


Methods

Sıfırdan tek bir üçgen mesh oluşturun:

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

Bir dörtgen mesh oluşturun ve dışa aktarmadan önce üçgenleştirin:

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, ve vertex_elements hepsi özellikler; parantez kullanmadan erişin.

MethodsMethodsMethodsMethods
control_pointslist[Vector4]okurKöşe konum dizisi. Her giriş bir Vector4(x, y, z, w) burada w şudur 1.0 konum verileri için. Bir kopya döndürür — döndürülen listeye ekleme yapmayın. Şunu kullanın mesh._control_points.append(v) köşeleri eklemek için (bilinen sınırlama; genel değişim API’si henüz mevcut değil).
polygon_countintokumaBu ağda tanımlanan çokgen yüzey sayısı.
polygonslist[list[int]]okumaTüm yüz tanımlamaları bir indeks listeleri listesi olarak. Her iç liste, tepe nokta indekslerini (içine control_points) bir yüz için.
edgeslist[int]okumaHam kenar indeks verileri. Öncelikle dahili kullanım ve gelişmiş topoloji sorguları için.
vertex_elementslist[VertexElement]okumaBu ağa bağlı olarak şu anda eklenmiş tüm köşe öğesi katmanları (normaller, UV’ler, renkler, vb.).
visibleboolokuma/yazmaMethods False, ağ, görünürlüğü dikkate alan görüntüleyicilerde gizlenir.
cast_shadowsboolokuma/yazmaBu ağın gölge haritalarını destekleyen renderlayıcılarda gölge atıp atmadığı.
receive_shadowsboolokuma/yazmaBu ağın diğer gölge atan geometrilerden gölge alıp almadığı.

Methods

create_polygon(*indices)

Köşe indekslerini sırayla sağlayarak yeni bir çokgen yüz tanımlayın. İndeksler, konumları referans alır control_points. Üç veya daha fazla indeks kabul eder; üçgenler, dörtgenler ve n‑gonlar için.

MethodsMethodsMethods
*indicesintKöşe indeks argümanları sarma sırasına göre (genellikle dışarıdan bakıldığında saat yönünün tersine).

Döndürür: 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()

Yeni bir Mesh her çokgenin fan üçgenleştirme kullanılarak üçgenlere bölündüğü yerde. Orijinal mesh değiştirilmez. Yalnızca üçgen geometrisi gerektiren formatlara (örneğin STL veya bazı glTF işlem hatları) dışa aktarmadan önce faydalıdır.

Döndürür: Mesh; yalnızca üçgenler içeren yeni bir ağ.

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

Bunu döndür Mesh olarak Mesh örnek. İçin Mesh nesneler için bu bir kimlik işlemi (döndürür self). Tanımlı olan Geometry temel sınıf, genel ile çalışırken tutarlı bir dönüşüm arayüzü sağlamak için Geometry referanslar.

Döndürür: Mesh

from aspose.threed.entities import Geometry

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

create_element(element_type, mapping_mode, reference_mode)

Yeni bir ekleyin VertexElement belirtilen türde bir katmanı ağa ekleyin. Normaller, teğetler, binormaller, köşe renkleri ve yumuşatma gruplarını eklemek için bunu kullanın.

MethodsMethodsMethods
element_typeVertexElementTypeBu katmanın tuttuğu veri türü (örneğin,., VertexElementType.NORMAL).
mapping_modeMappingModeVerinin geometriye nasıl eşlendiği: CONTROL_POINT, POLYGON_VERTEX, POLYGON, vb.
reference_modeReferenceModeDizinlerin nasıl kullanıldığı: DIRECT veya INDEX_TO_DIRECT.

Döndürür: 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)

Mesh’e bir UV koordinat katmanı ekleyin. Bu, doku koordinat verilerini eklemek için tercih edilen yöntemdir.

MethodsMethodsMethods
uv_mappingTextureMappingUV kanalının amacı: DIFFUSE, SPECULAR, NORMAL, AMBIENT, vb.
mapping_modeMappingModeUV’lerin geometri öğelerine nasıl eşlendiği.
reference_modeReferenceModeİndeksleme modu: DIRECT veya INDEX_TO_DIRECT.

Döndürür: 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,
)

Ayrıca Bakınız

 Türkçe