Mesh — Aspose.3D FOSS for Java
แพคเกจ: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh จัดเก็บเรขาคณิตของโพลิกอนเป็นรายการของจุดควบคุม (ตำแหน่งเวอร์เท็กซ์) และรายการของหน้าพอลิกอน แต่ละหน้าพอลิกอนเป็นรายการของดัชนีที่เริ่มจากศูนย์ไปยังอาร์เรย์ของจุดควบคุม หน้าต่างอาจเป็นสามเหลี่ยม, สี่เหลี่ยมจัตุรัส, หรือโพลิกอนที่มีจำนวนด้านมากกว่า ข้อมูลเพิ่มเติมต่อเวอร์เท็กซ์ – ปกติ, พิกัด UV, สีของเวอร์เท็กซ์ – จะถูกแนบเป็น VertexElement ชั้นข้อมูล.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
สร้างเมชสามเหลี่ยมเดี่ยวจากศูนย์:
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");สร้างเมชสี่เหลี่ยม (หมายเหตุ: triangulate() เป็นสเตบ — ดูคำเตือนด้านล่าง):
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() | – | อาเรย์ตำแหน่งเวอร์เท็กซ์ แต่ละรายการเป็น Vector4(x, y, z, w) โดยที่ w คือ 1.0 สำหรับข้อมูลตำแหน่ง เพิ่มเวอร์เท็กซ์โดยเรียก add() บนรายการที่คืนค่า. |
polygonCount | int | getPolygonCount() | – | จำนวนหน้าพอลิกอนที่กำหนดบนเมชนี้. |
polygons | List<int[]> | getPolygons() | – | การกำหนดหน้าทั้งหมดเป็นรายการของอาร์เรย์ดัชนี แต่ละอาร์เรย์ภายในเก็บดัชนีเวอร์เท็กซ์ (ไปยัง controlPoints). |
edges | List<Integer> | getEdges() | – | ข้อมูลดัชนีขอบดิบ ใช้เป็นหลักสำหรับการใช้งานภายในและการสืบค้นโทโพโลยีขั้นสูง. |
vertexElements | List<VertexElement> | getVertexElements() | – | ชั้นข้อมูลองค์ประกอบเวอร์เท็กซ์ทั้งหมดที่แนบอยู่กับเมชนี้ในขณะนี้ (ปกติ, UV, สี, ฯลฯ). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, เมชจะถูกซ่อนในโปรแกรมดูที่เคารพการมองเห็น. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | ว่ามีการทำให้เมชนี้สร้างเงาในเรนเดอร์ที่รองรับแผนที่เงาหรือไม่. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | ว่าเมชนี้จะรับเงาจากเรขาคณิตที่สร้างเงาอื่นหรือไม่. |
Methods
createPolygon(int... indices)
กำหนดหน้าตัวหลายเหลี่ยมใหม่โดยระบุดัชนีเวอร์เท็กซ์ตามลำดับ ดัชนีเหล่านี้อ้างอิงตำแหน่งใน getControlPoints(). รองรับดัชนีสามตัวหรือมากกว่า สำหรับสามเหลี่ยม, สี่เหลี่ยม, และ n-gons.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | อาร์กิวเมนต์ดัชนีเวอร์เท็กซ์ในลำดับการม้วน (โดยทั่วไปเป็นทิศทางต้านเข็มนาฬิกาเมื่อมองจากด้านนอก). |
คืนค่า: 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()
ส่วนจำลอง: คืนค่าการโคลนของเมชต้นฉบับ มีจุดประสงค์เพื่อแยกรูปหลายเหลี่ยมทั้งหมดเป็นสามเหลี่ยมโดยใช้ fan triangulation แต่ตรรกะการทำแอ่งยังไม่ได้ถูกนำไปใช้จริง เมชต้นฉบับจะไม่ถูกแก้ไข.
คืนค่า: Mesh – การโคลนของเมชต้นฉบับ (พฤติกรรมส่วนจำลอง).
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()
คืนค่านี้ Mesh เป็น Mesh อินสแตนซ์ สำหรับ Mesh objects นี้เป็นการดำเนินการอัตลักษณ์ (คืนค่า this) กำหนดบน the Geometry base class เพื่อให้มีอินเทอร์เฟซการแปลงที่สอดคล้องกันเมื่อทำงานกับ generic Geometry references.
คืนค่า: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
เพิ่มใหม่ VertexElement เพิ่มเลเยอร์ของประเภทที่ระบุไปยังเมช ใช้สิ่งนี้เพื่อแนบ normals, tangents, binormals, vertex colours, และ smoothing groups.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | ประเภทของข้อมูลที่เลเยอร์นี้เก็บ (เช่น,., VertexElementType.NORMAL). |
mappingMode | MappingMode | วิธีที่ข้อมูลแมปกับเรขาคณิต: CONTROL_POINT, POLYGON_VERTEX, POLYGON, เป็นต้น. |
referenceMode | ReferenceMode | วิธีการใช้ดัชนี: DIRECT หรือ INDEX_TO_DIRECT. |
คืนค่า: 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)
เพิ่มชั้นพิกัด UV ให้กับ mesh วิธีนี้เป็นวิธีที่แนะนำสำหรับการแนบข้อมูลพิกัดเทกซ์เจอร์.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | วัตถุประสงค์ของช่อง UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, เป็นต้น. |
mappingMode | MappingMode | วิธีที่ UVs แผนที่ไปยังองค์ประกอบของเรขาคณิต. |
referenceMode | ReferenceMode | โหมดดัชนี: DIRECT หรือ INDEX_TO_DIRECT. |
คืนค่า: 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
);เมธอดบูลีนและการเพิ่มประสิทธิภาพ (Stubs)
เมธอดต่อไปนี้มีอยู่บน Mesh แต่เป็น สตับ ซึ่งคืนค่าคลอนของเมชต้นฉบับโดยไม่ดำเนินการตามที่ตั้งใจไว้.
สำคัญ: union, difference, intersect, และ doBoolean เป็น static methods, ไม่ใช่ instance methods. เรียกใช้เป็น Mesh.union(a, b), ไม่ใช่ a.union(b).
| Methods | Return Type | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Stub: คืนสำเนาของ a. มีจุดประสงค์สำหรับ CSG union. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Stub: คืนสำเนาของ a. มีจุดประสงค์สำหรับ CSG subtraction. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Stub: คืนสำเนาของ a. มีจุดประสงค์สำหรับ CSG intersection. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Stub: คืนสำเนาของ a. มีจุดประสงค์สำหรับ CSG ทั่วไปที่มีการแปลง. |
optimize(boolean removeVertices) | Mesh | Stub: คืนค่า clone. การโอเวอร์โหลดสี่พารามิเตอร์: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stub: คืนค่า clone. จุดเริ่มต้นการปรับแต่งทางเลือก. |