การแนะนํา
การทํางานกับเนื้อหา 3D ใน Java โดยปกติต้องเลือกระหว่างน้ําหนักหนัก เครื่องยนต์เกมและห้องสมุดการสอน bare-bones. The aspose-3d-foss แพคเกจเสนอ A พื้นกลาง: API ที่กําหนดเองที่จัดการไฟล์ I / O, ไฮเรกชันของคิวส์, การก่อสร้างของเมซและการแปลงแบบสอดคล้องโดยไม่ต้องดึงใน rendering ท่อหรือโซ่ความสัมพันธ์ในประเทศ.
Aspose.3D FOSS สําหรับ Java เป็นห้องสมุดที่มีแหล่งข้อมูลเปิดที่จัดจําหน่ายภายใต้ใบอนุญาต MIT มันให้ 80 หลักการจัดการสถานการณ์, จิตศาสตร์วัสดุและการแปลงรูปแบบ ห้องสมุนไพรอ่าน FBX, glTF/GLB, Wavefront OBJ และ STL และเขียน gltF / GLB OBj และSTL (การส่งออกของ FBX ไม่ดําเนินการ) ทําให้มันเป็นประโยชน์สําหรับการประมวลผล 3D เซิร์ฟเวอร์ด้านหน้า การรวมตัวสร้างเครื่องมือและท่อการแปลงข้อมูลที่ทํางานบน Java 21 หรือเร็วขึ้น.
บทความนี้ผ่านความสามารถในการจัดการสถานการณ์ในห้องสมุด: วิธีการสร้างสถานะจากการตัดพืชและประมวลผลทางภูมิศาสตร์และการส่งออกของผลให้ไปยังดิสก์.
สิ่งที่รวมอยู่ใน
ภาพยนตร์ Graph Basics
หลักสูตร Scene คลาสเป็นภาชนะรากสําหรับเอกสาร 3D ทุกอย่างมันถือรุนแรง Node, เคล็ดลับข้อมูลการเคลื่อนไหวและแถบภาพถ่าย คุณสามารถสร้างช่องว่าง ฉากและจากนั้น populate มันหรือโหลดไฟล์ที่มีอยู่กับ Scene.fromFile.
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
Scene scene = new Scene();
Node root = scene.getRootNode();
// Add named child nodes to build a hierarchy
Node chassis = root.createChildNode("Chassis");
Node wheel = chassis.createChildNode("FrontLeftWheel");
ทุกคน Node สามารถเก็บได้ 1 Entity (เช่น A Mesh หรือ Camera) a Transform, รายการของวัสดุและ nodes เด็กอื่น ๆ โครงสร้างต้นไม้ ลักษณะภาพวาดที่ใช้โดยเครื่องมือเขียน 3D ส่วนใหญ่.
การก่อสร้าง Mesh
หลักสูตร Mesh หลักสูตรช่วยให้คุณกําหนดเกิโตรเมตริกจากจุดควบคุมและโพลิโกน อินเดียน คุณเพิ่มแนวตั้งกับ addControlPoint,จากนั้นเชื่อมต่อพวกเขาไปสู่ใบหน้า ด้วย createPolygon.
import com.aspose.threed.Mesh;
Mesh box = new Mesh("Box");
// Define eight corners of a cube
box.addControlPoint(0, 0, 0);
box.addControlPoint(1, 0, 0);
box.addControlPoint(1, 1, 0);
box.addControlPoint(0, 1, 0);
box.addControlPoint(0, 0, 1);
box.addControlPoint(1, 0, 1);
box.addControlPoint(1, 1, 1);
box.addControlPoint(0, 1, 1);
// Create quad faces
box.createPolygon(0, 1, 2, 3); // back
box.createPolygon(4, 5, 6, 7); // front
box.createPolygon(0, 4, 7, 3); // left
box.createPolygon(1, 5, 6, 2); // right
box.createPolygon(3, 2, 6, 7); // top
box.createPolygon(0, 1, 5, 4); // bottom
scene.getRootNode().createChildNode("Box", box);
ปั๊มไฟ Mesh รวมถึง triangulate(), optimize(removeVertices),และ Boolean การดําเนินการ (union, difference, intersect) แต่วิธีการเหล่านี้เป็นสแตนเลสใน การปล่อยปัจจุบัน - พวกเขาจะส่งคืนคลอนของช่องทางเข้าโดยไม่ต้องดําเนินการ การดําเนินการที่เรียกว่า.
การเปลี่ยนแปลงและตําแหน่ง
ทุกคน Node นํา A Transform ที่ควบคุมการแปลท้องถิ่นของมันหมุน, และสกรู พวกเขาประกอบผ่านการยิเรกติเพื่อให้ย้ายคิวทารก มือถือเด็กทั้งหมดของเธอ.
import com.aspose.threed.Transform;
import com.aspose.threed.Node;
Node node = scene.getRootNode().createChildNode("Shifted");
Transform t = node.getTransform();
t.setTranslation(5.0, 0.0, -3.0);
t.setScale(2.0, 2.0, 2.0);
t.setEulerAngles(0, 45.0, 0);
สําหรับคําถามตําแหน่งที่แน่นอนโทรศัพท์ node.getGlobalTransform() เพื่อรับคืน การประกอบ GlobalTransform,หรือ node.evaluateGlobalTransform(true) เพื่อให้ A Matrix4 รวมถึงการจัดอันดับทางภูมิศาสตร์.
วัสดุ PBR
หลักสูตร PbrMaterial ประเภทให้คุณสมบัติการแสดงผลตามทางกายภาพ: สี albedo, ตัวทําโลหะ, ความรุนแรงสีที่ปล่อยและความโปร่งใส. ให้วัสดุไปยังคอยล์เมื่อสร้างเด็ก.
import com.aspose.threed.PbrMaterial;
import com.aspose.threed.Vector4;
import com.aspose.threed.Vector3;
PbrMaterial mat = new PbrMaterial("RedMetal");
mat.setAlbedo(new Vector4(0.9, 0.1, 0.1, 1.0));
mat.setMetallicFactor(0.8);
mat.setRoughnessFactor(0.3);
mat.setEmissiveColor(new Vector3(0, 0, 0));
scene.getRootNode().createChildNode("Part", box, mat);
การตรวจจับแบบฟอร์ม
หลักสูตร FileFormat ประเภทให้เครื่องมือค้นหาและตรวจจับแบบสถิต คุณสามารถ แก้ไขรูปแบบโดยการขยายไฟล์หรือสํารวจกระแสเพื่อระบุไฟล์ที่ไม่รู้จัก.
import com.aspose.threed.FileFormat;
FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();
การแปลงระบบการปรับแต่ง
AxisSystem ให้คุณกําหนดการยกแกนหน้าและความสามารถในการดําเนินการของ ระบบการจัดเรียงแล้วคํานวณ A Matrix4 การแปลงจิโตรเมตริกระหว่าง การประชุม (เช่นจากระบบ Z-up ที่ขวาไป Y-Up หนึ่งมือซ้าย).
import com.aspose.threed.AxisSystem;
import com.aspose.threed.Axis;
import com.aspose.threed.CoordinateSystem;
import com.aspose.threed.Matrix4;
AxisSystem source = new AxisSystem(
CoordinateSystem.RIGHT_HANDED, Axis.Z_AXIS, Axis.Y_AXIS);
AxisSystem target = new AxisSystem(
CoordinateSystem.LEFT_HANDED, Axis.Y_AXIS, Axis.Z_AXIS);
Matrix4 conversion = source.transformTo(target);
เริ่มต้นอย่างรวดเร็ว
เพิ่มความสัมพันธ์ของ Maven:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>สร้างภาพที่เรียบง่ายและส่งออก:
import com.aspose.threed.Scene;
import com.aspose.threed.Mesh;
import com.aspose.threed.Node;
import com.aspose.threed.StlSaveOptions;
import com.aspose.threed.FileContentType;
Scene scene = new Scene();
Mesh mesh = new Mesh("Triangle");
mesh.addControlPoint(0, 0, 0);
mesh.addControlPoint(1, 0, 0);
mesh.addControlPoint(0, 1, 0);
mesh.createPolygon(0, 1, 2);
scene.getRootNode().createChildNode("Shape", mesh);
StlSaveOptions opts = new StlSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("output.stl", opts);
รูปแบบที่สนับสนุน
| รูปแบบ | การขยายตัว | อ่าน | เขียน |
|---|---|---|---|
| FBX (ASCII และไบนารี, 6.x-7.x) | .fbx | ใช่ | ไม่ |
| glTF 1.0 / 2.0 | .gltf | ใช่ | ใช่ |
| GLTF คู่มือ | .glb | ใช่ | ใช่ |
| Wavefront OBJ มือถือ | .obj | ใช่ | ใช่ |
| STL (ASCII และไบนารี) | .stl | ใช่ | ใช่ |
ทุกรูปแบบมีส่วนร่วมในการ LoadOptions และ SaveOptions อะไหล่ (สําหรับ ตัวอย่าง, FbxLoadOptions, GltfSaveOptions, StlSaveOptions) ซึ่งแสดงให้เห็นว่า การตั้งค่าที่กําหนดเองเช่นการลอกระบบแบบสแกนและประเภทเนื้อหา การเลือก.
หลักสูตรและใบอนุญาต
Aspose.3D FOSS for Java ได้รับการปล่อยตัวภายใต้ใบอนุญาต MIT รหัสแหล่งข้อมูลคือ: มีอยู่บน GitHub ที่: Aspose.3D-FOSS สําหรับ Java. คุณสามารถใช้การแก้ไขและกระจายใหม่ของห้องสมุดในเชิงพาณิชย์และ การออกแบบที่ไม่ใช่เชิงพาณิชย์โดยไม่มีข้อ จํากัด.
เริ่มต้น
- ผู้พัฒนาคู่มือ – API Walthroughs และ การใช้รูปแบบ
- ฐานความรู้ – วิธีการเขียนบทความและ FAQs
- แอปพลิเคชัน - ระดับเต็มและ วิธีการเอกสาร