معرفی

کار با محتوای 3D در جاوا معمولا نیاز به انتخاب بین وزن سنگین دارد. موتورهای بازی و کتابخانه های ریاضی بار-بونز. aspose-3d-foss بسته بندی ارائه می دهد A زمین متوسط: یک API تمرکز صحنه گراف که فایل I/O، سلسله مراتب نود را مدیریت می کند., ساختن چوب، و هماهنگی تحولات بدون کشیدن در یک راندینگ یک خط لوله یا زنجیره وابستگی بومی.

Aspose.3D FOSS برای جاوا یک کتابخانه منبع باز است که تحت مجوز MIT توزیع می شود. آن را فراهم می کند 80 کلاس در مدیریت صحنه، ژئومتری، مواد و تبدیل فرمت. کتابچه FBX، glTF/GLB، Wavefront OBJ، و STL، خواندن و نوشتن gltF / GLB, OBG، and STl (فبکس صادرات اجرا نمی شود)، آن رو به کار برای پردازش 3D سرور-جانبه، ساخت ابزار ادغام، به داده ها تبدیل لوله های اجرا بر روی جاو 21 یا بعد از آن.

این پست از طریق توانایی های مدیریت صحنه در کتابخانه عبور می کند: چگونه یک صحن را از خراش بسازیم، آن را با ژئومتری و تحولات جمع کنیم و نتیجه را به دیسک صادر کنیم.


چه چیزی شامل می شود

صحنه گراف پایه

و این Scene کلاس، حاوی ریشه برای هر سند 3D است. 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 (به عنوان یک Mesh یا Camera) ، 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),و بولیان فعالیت های (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) برای دریافت یک 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 اجازه دهید شما را به تعریف محور بالا، محور جلو و دستاوردی از یک سیستم هماهنگی، سپس محاسبه یک Matrix4 تغییر جغرافیای بین کنوانسیون ها (به عنوان مثال، از یک سیستم Z-up به سمت راست تا Y-Up) دست چپ ( 1 ).

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بلهنه
GST 1.0 / 2.0.gltfبلهبله
GTTF دوگانه.glbبلهبله
Wavefront OBJ.objبلهبله
STL (ASCII و باینری).stlبلهبله

هر فرمول اختصاص داده شده است. LoadOptions و SaveOptions زیرنویس ها (برای مثال :, FbxLoadOptions, GltfSaveOptions, StlSaveOptionsاین نشان می دهد تنظیمات خاص فرمت مانند هماهنگی سیستم و نوع محتوا انتخابی است.


منبع باز و مجوز

Aspose.3D FOSS برای جاوا تحت مجوز MIT منتشر می شود. در GitHub به دست آوردن Aspose3D-FOSS برای جاوا. شما می توانید از کتابخانه استفاده کنید، آن را تغییر دهید و آن ها را به صورت تجاری و… پروژه های غیر تجاری بدون محدودیت.


شروع می شود