Mesh — Aspose.3D FOSS for Java
Pakotne: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh glabā daudzstūru ģeometriju kā kontrolpunktu (virsotnes pozīciju) sarakstu un daudzstūru seju sarakstu. Katrs daudzstūra sejas ir saraksts ar nulles bāzētiem indeksiem uz kontrolpunktu masīvu. Sejas var būt trīsstūri, kvadrāti vai augstākas aritmetikas daudzstūri. Papildu dati uz katras virsotnes — normāles, UV koordinātas, virsotnes krāsas — tiek pievienoti kā VertexElement slāņi.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
Izveidojiet vienu trīsstūra režģi no nulles:
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");Izveidojiet kvadrāta režģi (piezīme: triangulate() ir stub — skatiet brīdinājumu zemāk):
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() | – | Virsotnes pozīcijas masīvs. Katrs ieraksts ir Vector4(x, y, z, w) kur w ir 1.0 pozīcijas datiem. Pievienojiet virsotnes, izsaucot add() uz atgriezto sarakstu. |
polygonCount | int | getPolygonCount() | – | Daudzstūru seju skaits, kas definēts šajā režģī. |
polygons | List<int[]> | getPolygons() | – | Visas seju definīcijas kā indeksa masīvu saraksts. Katrs iekšējais masīvs satur virsotnes indeksus (uz controlPoints) vienai sejas definīcijai. |
edges | List<Integer> | getEdges() | – | Neapstrādāti malas indeksa dati. Galvenokārt iekšējai lietošanai un uzlabotiem topoloģijas vaicājumiem. |
vertexElements | List<VertexElement> | getVertexElements() | – | Visi virsotnes elementu slāņi, kas pašlaik pievienoti šim režģim (normāles, UV, krāsas utt.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, režģis tiek paslēpts skatītājos, kas ievēro redzamību. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Vai šis režģis met ēnas renderētājos, kas atbalsta ēnu kartes. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Vai šis režģis saņem ēnas no citas ģeometrijas, kas met ēnas. |
Methods
createPolygon(int... indices)
Definējiet jaunu daudzstūra seju, norādot virsotnes indeksus secībā. Indeksi atsaucas uz pozīcijām getControlPoints(). Pieņem trīs vai vairāk indeksus trīsstūriem, kvadrātiem un n-goniem.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | Virsotnes indeksa argumenti vērpšanas secībā (parasti pretēji pulksteņa rādītājiem, skatoties no ārpuses). |
Atgriež: 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()
Stub: Atgriež oriģinālā tīkla klonu. Plānots sadalīt visus daudzstūrus trīsstūriem, izmantojot vērpsta triangulāciju, bet faktiskais triangulācijas loģika vēl nav īstenota. Oriģinālais tīkls netiek modificēts.
Atgriež: Mesh – oriģinālā tīkla klons (stub uzvedība).
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()
Atgrieziet šo Mesh kā Mesh instance. Priekš Mesh objekti, tas ir identitātes operācija (atgriež this). Definēts uz Geometry pamata klase, lai nodrošinātu vienotu konvertēšanas saskarni, strādājot ar vispārīgiem Geometry atsaucēm.
Atgriež: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Pievienot jaunu VertexElement slānis norādītā tipa tīklam. Izmantojiet to, lai pievienotu normāles, tangentes, binormāles, virsotnes krāsas un gludināšanas grupas.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | Datu veids, ko šis slānis satur (piemēram,., VertexElementType.NORMAL). |
mappingMode | MappingMode | Kā dati tiek kartēti uz ģeometrijas: CONTROL_POINT, POLYGON_VERTEX, POLYGON, utt. |
referenceMode | ReferenceMode | Kā indeksi tiek izmantoti: DIRECT vai INDEX_TO_DIRECT. |
Atgriež: 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)
Pievieno UV koordinātu slāni tīklam. Šī ir ieteicamā metode tekstūras koordinātu datu pievienošanai.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | UV kanāla mērķis: DIFFUSE, SPECULAR, NORMAL, AMBIENT, utt. |
mappingMode | MappingMode | Kā UV kartējas uz ģeometrijas elementiem. |
referenceMode | ReferenceMode | Indeksēšanas režīms: DIRECT vai INDEX_TO_DIRECT. |
Atgriež: 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
);Būla un optimizācijas metodes (Stubs)
Sekojošās metodes eksistē uz Mesh bet ir stubas kas atgriež klonu no sākotnējā mesh, neveicot paredzēto darbību.
Svarīgi: union, difference, intersect, un doBoolean ir statiskās metodes, nevis instance metodes. Izsauciet tās kā Mesh.union(a, b), nevis a.union(b).
| Methods | Atgriešanas tips | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Stub: atgriež klonu no a. Domāts CSG apvienošanai. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Stub: atgriež klonu no a. Domāts CSG atņemšanai. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Stub: atgriež klonu no a. Domāts CSG krustojumam. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Stub: atgriež klonu no a. Paredzēts vispārējai CSG ar transformācijām. |
optimize(boolean removeVertices) | Mesh | Stub: atgriež klonu. Četri parametru pārlādējumi: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stub: atgriež klonu. Alternatīva optimizācijas ieejas punkts. |