Mesh — Aspose.3D FOSS for Java
Paketas: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh saugo daugiakampio geometriją kaip valdymo taškų (viršūnių pozicijų) sąrašą ir daugiakampio veidų sąrašą. Kiekvienas daugiakampio veidas yra nulinio indekso indeksų sąrašas į valdymo taškų masyvą. Veidai gali būti trikampiai, keturkampiai arba didesnės aritmetikos daugiakampiai. Papildomi duomenys vienam viršūnei – normalių, UV koordinatės, viršūnių spalvos – pridedami kaip VertexElement sluoksniai.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
Sukurkite vieną trikampio tinklelį nuo nulio:
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");Sukurkite kvadrato tinklelį (pastaba: triangulate() yra stub — žiūrėkite įspėjimą žemiau):
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
| Methods | Methods | Methods | Methods | Methods |
|---|---|---|---|---|
controlPoints | List<Vector4> | getControlPoints() | – | Viršūnės pozicijų masyvas. Kiekvienas įrašas yra Vector4(x, y, z, w) kur w yra 1.0 pozicijos duomenims. Pridėkite viršūnes kviesdami add() grąžintame sąraše. |
polygonCount | int | getPolygonCount() | – | Daugiakampio veidų skaičius, apibrėžtas šiame tinklelyje. |
polygons | List<int[]> | getPolygons() | – | Visi veidų apibrėžimai kaip indeksų masyvų sąrašas. Kiekvienas vidinis masyvas saugo viršūnių indeksus (į controlPoints). |
edges | List<Integer> | getEdges() | – | Neapdoroti kraštų indeksų duomenys. Pagrindinė naudoti vidiniam naudojimui ir sudėtingoms topologijos užklausoms. |
vertexElements | List<VertexElement> | getVertexElements() | – | Visi viršūnių elementų sluoksniai, šiuo metu prijungti prie šio tinklelio (normalių, UV, spalvų ir kt.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, tinklelį slepia peržiūros programos, kurios gerbia matomumą. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Ar šis tinklelį meta šešėlius renderiuoklėse, kurios palaiko šešėlių žemėlapius. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Ar šis tinklelis gauna šešėlius iš kitos šešėlius meta geometrijos. |
Methods
createPolygon(int... indices)
Apibrėžkite naują daugiakampio paviršių pateikdami viršūnių indeksus tvarka. Indeksai nurodo pozicijas getControlPoints(). Priima tris ar daugiau indeksų trikampiams, kvadratams ir n‑kampiams.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | Viršūnių indekso argumentai vėjimo tvarka (dažniausiai prieš laikrodžio rodyklę, kai žiūrima iš išorės). |
Grąžina: 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()); // 2triangulate()
Stubas: Grąžina originalaus tinklelio kopiją. Skirta suskaidyti visas daugiakampes į trikampius naudojant šakų trianguliaciją, tačiau faktinė trianguliacijos logika dar neįgyvendinta. Originalus tinklelis nepakinta.
Grąžina: Mesh – originalaus tinklelio kopija (stub elgsena).
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()
Grąžink šį Mesh kaip Mesh objektas. Dėl Mesh objektų tai yra identiškumo operacija (grąžina this) Geometry bazinėje klasėje, kad būtų suteikta vienoda konvertavimo sąsaja dirbant su bendriniais Geometry referencijomis.
Grąžina: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Pridėkite naują VertexElement sluoksnį nurodyto tipo prie tinklelio. Naudokite tai norėdami pridėti normalės, tangentes, binormales, viršūnių spalvas ir glotninimo grupes.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | Šio sluoksnio duomenų tipas (pvz.,)., VertexElementType.NORMAL). |
mappingMode | MappingMode | Kaip duomenys susiejami su geometrija: CONTROL_POINT, POLYGON_VERTEX, POLYGON, ir t.t. |
referenceMode | ReferenceMode | Kaip naudojami indeksai: DIRECT arba INDEX_TO_DIRECT. |
Grąžina: 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)
Pridėkite UV koordinatų sluoksnį prie tinklelio. Tai yra pageidautinas metodas tekstūros koordinatų duomenims prijungti.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | UV kanalo paskirtis: DIFFUSE, SPECULAR, NORMAL, AMBIENT, ir t.t. |
mappingMode | MappingMode | Kaip UV susiejami su geometrijos elementais. |
referenceMode | ReferenceMode | Indeksavimo režimas: DIRECT arba INDEX_TO_DIRECT. |
Grąžina: 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
);Loginiai ir optimizavimo metodai (Stubai)
Toliau pateikti metodai egzistuoja Mesh bet yra stubai kurie grąžina originalaus mesh kloną, neįvykdydami numatytos operacijos.
Svarbu: union, difference, intersect, ir doBoolean yra statiniai metodai, ne egzemplioriaus metodai. Kvieskite juos kaip Mesh.union(a, b), ne a.union(b).
| Methods | Grąžinimo tipas | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Stubas: grąžina kloną a. Skirta CSG susijungimui. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Stubas: grąžina kloną a. Skirta CSG atimčiai. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Stub: grąžina kloną a. Skirta CSG sankirčiai. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Stub: grąžina kloną a. Skirta bendram CSG su transformacijomis. |
optimize(boolean removeVertices) | Mesh | Stubas: grąžina kopiją. Keturių parametrų perkrovimai: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stubas: grąžina kopiją. Alternatyvi optimizacijos įėjimo vieta. |