소개
Java에서 3D 콘텐츠를 사용하는 것은 일반적으로 무거운 무게 사이의 선택을 필요로합니다. 게임 엔진 및 바리 폰 수학 도서관. aspose-3d-foss 패키지 A를 제공합니다. 중간 지구: I/O 파일, 노드 히어로시를 처리하는 중심의 장면 그래프 API, 건설, 그리고 조정 변환에 끌리지 않고 순서화 튜브 또는 고향 의존 체인.
[PLACEHOLDER_0}.3D FOSS for Java는 MIT 라이센스에 따라 배포 된 오픈 소스 도서관입니다. 80 클래스를 제공합니다 장면 관리, 지메트리, 재료 및 형식 변환. 도서는 FBX, glTF/GLB, Wavefront OBJ, 그리고 STL을 읽고 글쓰기 GLT / GLB , OBG 및 ST L (FBX 수출은 실행되지 않습니다), 그것은 서버 측 3D 처리, 건설 도구 통합 및 데이터 전환 파이프를 실천하는 경우 Java 21 또는 이후.
이 게시물은 도서관의 장면 관리 능력을 통해 진행됩니다 : 스크래치에서 장상을 구축하는 방법, 지질과 변환으로 인구화하고 결과를 디스크로 내보내는 방법.
무엇이 포함되어 있는가
스케치 그래픽 기본
그들의 Scene 클래스는 각 3D 문서의 뿌리 컨테이너입니다.그것은 root을 가지고 있습니다. Node, 자산 메타 데이터, 애니메이션 클립 및 하위 장면.당신은 빈을 만들 수 있습니다 스케치하고 그 다음에 그것을 인구, 또는 기존 파일을 다운로드 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 하나를 잡을 수 있다. Entity (예를 들어 A Mesh 또는 CameraA : A Transform, 재료 목록, 그리고 더 많은 어린이 노드. 나무 구조 대부분의 3D 작가 도구에 의해 사용되는 장면 그래픽 패턴을 반영합니다.
메시지 건설
그들의 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);
불은 포함되어 있습니다. 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 클래스는 물리적으로 기반한 순서 속성을 제공합니다 : 알베도 색상, 금속 요소, 잔혹함, 배출 색깔 및 투명성. 아이를 만드는 동안 노드에 물질을 할당하십시오.
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 | 예 예 | 아니오 |
| 트 1.0 / 2.0 | .gltf | 예 예 | 예 예 |
| GTTF 바이너리 | .glb | 예 예 | 예 예 |
| 웨이브 프론트 OBJ | .obj | 예 예 | 예 예 |
| STL (ASCII 및 바이너리) | .stl | 예 예 | 예 예 |
각 형식은 헌신되어 있다. LoadOptions 그리고 SaveOptions 밑줄 ( for 예를 들어, FbxLoadOptions, GltfSaveOptions, StlSaveOptions(이것은 보여주는 것) 형식 특정 설정, 예를 들어 좌표 시스템 플리핑 및 콘텐츠 유형 선택을 하는 것.
오픈소스 & 라이센스
Aspose.3D FOSS for Java는 MIT 라이센스 아래에서 출시됩니다. GitHub에서 사용할 수 있는 ASPOSE.3D-FOSS - Java에 대한 정보. 도서관을 사용, 수정 및 재분배할 수 있습니다. 제한 없이 비상업적 프로젝트.