Mesh — Aspose.3D FOSS for Java

Balíček: com.aspose.threed (aspose-3d-foss 26.1.0)

Mesh ukládá geometrii polygonů jako seznam řídicích bodů (pozic vrcholů) a seznam polygonových ploch. Každá polygonová plocha je seznamem nulových indexů do pole řídicích bodů. Plochy mohou být trojúhelníky, čtyřúhelníky nebo polygony vyšší arity. Další data na vrchol – normály, UV souřadnice, barvy vrcholů – jsou připojeny jako VertexElement vrstvy.

public class Mesh extends Geometry

Methods

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


Methods

Vytvořte jednorázovou trojúhelníkovou síť od nuly:

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

Vytvořte síť čtyřúhelníků (poznámka: triangulate() je zástupná funkce — viz varování níže):

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()Pole pozic vrcholů. Každý záznam je Vector4(x, y, z, w) kde w je 1.0 pro data pozic. Přidejte vrcholy voláním add() na vráceném seznamu.
polygonCountintgetPolygonCount()Počet polygonových ploch definovaných v této síti.
polygonsList<int[]>getPolygons()Všechny definice ploch jako seznam polí indexů. Každé vnitřní pole obsahuje indexy vrcholů (do controlPoints).
edgesList<Integer>getEdges()Surová data indexů hran. Primárně pro interní použití a pokročilé dotazy na topologii.
vertexElementsList<VertexElement>getVertexElements()Všechny vrstvy elementů vrcholů aktuálně připojené k této síti (normály, UV, barvy atd.).
visiblebooleangetVisible()setVisible(boolean)Methods false, síť je skryta v prohlížečích, které respektují viditelnost.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Zda tato síť vrhá stíny v rendererech, které podporují stínové mapy.
receiveShadowsbooleangetReceiveShadows()setReceiveShadows(boolean)Zda tato síť přijímá stíny od jiné geometrie, která vrhá stíny.

Methods

createPolygon(int... indices)

Definujte novou polygonální plochu zadáním indexů vrcholů v pořadí. Indexy odkazují na pozice v getControlPoints(). Přijímá tři nebo více indexů pro trojúhelníky, čtyřúhelníky a n‑gony.

MethodsMethodsMethods
indicesint...Argumenty indexů vrcholů ve směru vinutí (obvykle proti směru hodinových ručiček při pohledu zvenku).

Návratové hodnoty: 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()

Zástupce: Vrací klon původní sítě. Je určeno k rozdělení všech polygonů na trojúhelníky pomocí fan triangulace, ale skutečná logika triangulace ještě není implementována. Původní síť není upravena.

Vrací: Mesh – klon originální sítě (stub chování).

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

Vraťte to Mesh jako Mesh instance. Pro Mesh objekty toto je identická operace (vrací this). Definováno na Geometry základní třída poskytující jednotné rozhraní pro konverzi při práci s generikem Geometry Reference.

Vrací: Mesh

import com.aspose.threed.*;

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

createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)

Přidat nový VertexElement vrstvu určeného typu k síti. Použijte to k připojení normál, tangenty, binormály, barvy vrcholů a skupin vyhlazování.

MethodsMethodsMethods
elementTypeVertexElementTypeTyp dat, která tato vrstva obsahuje (např., VertexElementType.NORMAL).
mappingModeMappingModeJak data mapují na geometrii: CONTROL_POINT, POLYGON_VERTEX, POLYGON, atd.
referenceModeReferenceModeJak se používají indexy: DIRECT nebo INDEX_TO_DIRECT.

Vrací: 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)

Přidejte vrstvu UV souřadnic do mesh. Toto je preferovaný způsob připojení dat texturovacích souřadnic.

MethodsMethodsMethods
uvMappingTextureMappingÚčel kanálu UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, atd.
mappingModeMappingModeJak se UV mapují na geometrické prvky.
referenceModeReferenceModeRežim indexování: DIRECT nebo INDEX_TO_DIRECT.

Vrací: 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
);

Boolovské a optimalizační metody (zástupné implementace)

Následující metody existují na Mesh ale jsou zástupci které vrací klon původní sítě, aniž by provedly zamýšlenou operaci.

Důležité: union, difference, intersect, a doBoolean jsou statické metody, ne instance metody. Volajte je jako Mesh.union(a, b), ne a.union(b).

MethodsNávratový typMethods
static Mesh.union(Mesh a, Mesh b)MeshZástupce: vrací klon a. Určeno pro CSG unii.
static Mesh.difference(Mesh a, Mesh b)MeshZástupce: vrací klon a. Určeno pro CSG odčítání.
static Mesh.intersect(Mesh a, Mesh b)MeshZástupce: vrací klon a. Určeno pro CSG průnik.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshZástupce: vrací klon a. Určeno pro obecné CSG s transformacemi.
optimize(boolean removeVertices)MeshZástupce: vrací klon. Čtyři přetížení s parametry: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshZástupce: vrací klon. Alternativní vstupní bod optimalizace.

Viz také

 Čeština