Mesh — Aspose.3D FOSS for Java

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

Mesh çokgen geometrisini kontrol noktalarının (köşe konumları) bir listesi ve çokgen yüzeylerin bir listesi olarak depolar. Her çokgen yüzeyi, kontrol noktaları dizisine sıfırdan başlayan indekslerin bir listesidir. Yüzeyler üçgen, dörtgen veya daha yüksek dereceli çokgenler olabilir. Ek per‑köşe verileri — normaller, UV koordinatları, köşe renkleri — katmanlar olarak eklenir. VertexElement katmanlar.

public class Mesh extends Geometry

Methods

A3DObject -> SceneObject -> Entity -> Geometry -> Mesh


Methods

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

import com.aspose.threed.Scene;
import com.aspose.threed.*;


// Create the mesh and add three vertex positions
Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0.0, 0.0, 0.0, 1.0));   // vertex 0
mesh.getControlPoints().add(new Vector4(1.0, 0.0, 0.0, 1.0));   // vertex 1
mesh.getControlPoints().add(new Vector4(0.5, 1.0, 0.0, 1.0));   // vertex 2

// Define one triangle face using vertex indices
mesh.createPolygon(0, 1, 2);

// Attach to a scene and save
Scene scene = new Scene();
scene.getRootNode().createChildNode("triangle", mesh);
scene.save("triangle.stl");

Dörtgen bir mesh oluşturun (not: triangulate() bir stub’tur — aşağıdaki uyarıya bakın):

import com.aspose.threed.Scene;
import com.aspose.threed.*;


Mesh mesh = new Mesh();
// Four corners of a unit square in the XZ plane
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 0, 1, 1.0));
mesh.getControlPoints().add(new Vector4(0, 0, 1, 1.0));

// One quad face
mesh.createPolygon(0, 1, 2, 3);
System.out.println("Polygons before triangulate: " + mesh.getPolygonCount());  // 1

// WARNING: triangulate() is a stub — it returns a clone, NOT a triangulated mesh.
// The polygon count will remain 1 (not 2).
Mesh triangulated = mesh.triangulate();
System.out.println("Polygons after triangulate: " + triangulated.getPolygonCount());  // still 1

Scene scene = new Scene();
scene.getRootNode().createChildNode("quad", triangulated);
// When saving to STL, pass triangle-only meshes to avoid vertex loss or malformed output.
scene.save("quad.glb");

Methods

MethodsMethodsMethodsMethodsMethods
controlPointsList<Vector4>getControlPoints()Köşe konum dizisi. Her giriş bir Vector4(x, y, z, w) burada w şudur 1.0 konum verisi için. Köşeleri şu şekilde çağırarak ekleyin add() dönen listede.
polygonCountintgetPolygonCount()Bu ağ üzerinde tanımlı çokgen yüzey sayısı.
polygonsList<int[]>getPolygons()Tüm yüz tanımları, indeks dizileri listesi olarak. Her iç dizi, köşe indekslerini ( controlPoints) bir yüz için.
edgesList<Integer>getEdges()Ham kenar indeks verisi. Öncelikle dahili kullanım ve gelişmiş topoloji sorguları için.
vertexElementsList<VertexElement>getVertexElements()Şu anda bu ağa eklenmiş tüm köşe öğesi katmanları (normaller, UV’ler, renkler vb.).
visiblebooleangetVisible()setVisible(boolean)Methods false, ağ, görünürlüğü dikkate alan görüntüleyicilerde gizlenir.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Bu ağın, gölge haritalarını destekleyen renderlayıcılarda gölge oluşturup oluşturmadığı.
receiveShadowsbooleangetReceiveShadows()setReceiveShadows(boolean)Bu mesh’in, diğer gölge oluşturan geometriden gölgeler alıp almadığı.

Methods

createPolygon(int... indices)

Köşe indislerini sırayla sağlayarak yeni bir polygon yüzeyi tanımlayın. İndisler, konumları referans alır. getControlPoints(). Üç veya daha fazla indis kabul eder; üçgenler, dörtgenler ve n-gonlar için.

MethodsMethodsMethods
indicesint...Köşe indis argümanları winding order içinde (genellikle dışarıdan bakıldığında saat yönünün tersine).

Döndürür: void

Mesh mesh = new Mesh();
// ... populate control points ...
mesh.createPolygon(0, 1, 2);       // triangle
mesh.createPolygon(0, 1, 2, 3);    // quad
System.out.println(mesh.getPolygonCount());   // 2

triangulate()

Stub: Orijinal ağın bir kopyasını döndürür. Tüm çokgenleri fan üçgenleştirme kullanarak üçgenlere bölmeyi amaçlar, ancak gerçek üçgenleştirme mantığı henüz uygulanmadı. Orijinal ağ değiştirilmez.

Döndürür: Mesh – orijinal ağın bir kopyası (stub davranışı).

import com.aspose.threed.*;

Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 1, 0, 1.0));
mesh.getControlPoints().add(new Vector4(0, 1, 0, 1.0));
mesh.createPolygon(0, 1, 2, 3);   // one quad

Mesh triMesh = mesh.triangulate();
// Note: currently returns a clone, not a triangulated mesh
System.out.println(triMesh.getPolygonCount());

toMesh()

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

Döndürür: Mesh

import com.aspose.threed.*;

Mesh ensureMesh(Geometry geom) {
    return geom.toMesh();
}

createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)

Yeni bir VertexElement belirtilen tipte bir katmanı ağa ekleyin. Bunu normaller, teğetler, binormaller, vertex renkleri ve yumuşatma gruplarını eklemek için kullanın.

MethodsMethodsMethods
elementTypeVertexElementTypeBu katmanın tuttuğu veri türü (ör., VertexElementType.NORMAL).
mappingModeMappingModeVerinin geometriye nasıl eşlendiği: CONTROL_POINT, POLYGON_VERTEX, POLYGON, vb.
referenceModeReferenceModeDizinler nasıl kullanılır: DIRECT veya INDEX_TO_DIRECT.

Döndürür: VertexElement

import com.aspose.threed.*;





Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(0.5, 1, 0, 1));
mesh.createPolygon(0, 1, 2);

VertexElement normalElement = mesh.createElement(
    VertexElementType.NORMAL,
    MappingMode.CONTROL_POINT,
    ReferenceMode.DIRECT
);

createElementUV(TextureMapping uvMapping, MappingMode mappingMode, ReferenceMode referenceMode)

Mesh’e bir UV koordinat katmanı ekleyin. Bu, doku koordinat verilerini eklemenin tercih edilen yöntemidir.

MethodsMethodsMethods
uvMappingTextureMappingUV kanalının amacı: DIFFUSE, SPECULAR, NORMAL, AMBIENT, vb.
mappingModeMappingModeUV’lerin geometri öğelerine nasıl eşlendiği.
referenceModeReferenceModeDizinleme modu: DIRECT veya INDEX_TO_DIRECT.

Döndürür: VertexElementUV

import com.aspose.threed.*;




Mesh mesh = new Mesh();
// ... define control points and polygons ...
VertexElementUV uvElement = mesh.createElementUV(
    TextureMapping.DIFFUSE,
    MappingMode.POLYGON_VERTEX,
    ReferenceMode.INDEX_TO_DIRECT
);

Boolean ve Optimizasyon Yöntemleri (Stub’lar)

Aşağıdaki yöntemler şunlarda bulunur Mesh ancak stubs orijinal ağın bir kopyasını döndürür, ancak amaçlanan işlemi gerçekleştirmez.

Önemli: union, difference, intersect, ve doBoolean olmak statik yöntemler, örnek yöntemler değil. Şöyle çağırın: Mesh.union(a, b), değil a.union(b).

MethodsDönüş TipiMethods
static Mesh.union(Mesh a, Mesh b)MeshStub: şunun bir kopyasını döndürür a. CSG birleşimi için tasarlanmıştır.
static Mesh.difference(Mesh a, Mesh b)MeshStub: şunun bir kopyasını döndürür a. CSG çıkarma için tasarlanmıştır.
static Mesh.intersect(Mesh a, Mesh b)MeshStub: şunun bir kopyasını döndürür a. CSG kesişim için tasarlanmıştır.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshStub: şunun bir kopyasını döndürür a. Dönüşümlerle genel CSG için tasarlanmıştır.
optimize(boolean removeVertices)MeshStub: bir klon döndürür. Dört parametreli aşırı yüklemeler: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshStub: bir klon döndürür. Alternatif optimizasyon giriş noktası.

Ayrıca Bakınız

 Türkçe