การแนะนํา

การทํางานกับเนื้อหา 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. คุณสามารถใช้การแก้ไขและกระจายใหม่ของห้องสมุดในเชิงพาณิชย์และ การออกแบบที่ไม่ใช่เชิงพาณิชย์โดยไม่มีข้อ จํากัด.


เริ่มต้น