ویژگیها و عملکردها
ویژگیها و عملکردها
این صفحه تمام حوزههای ویژگی اصلی را در بر میگیرد aspose-3d-foss 26.1.0 با مثالهای Java کارآمد.
بارگذاری و ذخیرهسازی صحنهها
scene.open() فایلی را بارگذاری میکند؛; scene.save() آن را صادر میکند:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");جایگزین کارخانه ایستا:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");گزینههای مخصوص فرمت
ارسال LoadOptions یا SaveOptions زیرکلاسها برای کنترل دقیق:
import com.aspose.threed.*;
Scene scene = new Scene();
ObjLoadOptions opts = new ObjLoadOptions();
opts.setFlipCoordinateSystem(true);
scene.open("model.obj", opts);
GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setFlipCoordinateSystem(true);
scene.save("model.glb", saveOpts);توجه: FBX فقط برای وارد کردن پشتیبانی میشود؛ خروجی FBX در نسخه FOSS پیادهسازی نشده است. فقط FBX باینری فایلها برای وارد کردن پشتیبانی میشوند — FBX ASCII خطا میدهد ImportException.
ساخت گراف صحنه
گرهها را ایجاد کنید و موجودیتها را پیوست کنید:
Scene scene = new Scene();
Node root = scene.getRootNode();
Mesh mesh = new Mesh("myMesh");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.createPolygon(0, 1, 2);
Node meshNode = root.createChildNode("triangle", mesh);عملیات مش
یک را ایجاد کنید Mesh بهصورت برنامهنویسی با نقاط کنترل و چندضلعیها:
Mesh mesh = new Mesh("custom");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.getControlPoints().add(new Vector4(0, 10, 0));
mesh.createPolygon(0, 1, 2, 3);تبدیلات
هر Node دارای یک Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);فضای جهانی را از طریق بخوانید node.getGlobalTransform().getMatrix().
مواد
مواد را به گرهها اختصاص دهید:
PbrMaterial mat = new PbrMaterial("shiny");
mat.setAlbedo(new Vector4(0.8, 0.2, 0.2, 1.0));
mat.setMetallicFactor(0.5);
mat.setRoughnessFactor(0.3);
scene.getRootNode().createChildNode("red_mesh", mesh, mat);انواع متریال: Material (پایه)،, PbrMaterial (PBR متالیک-راستنمایی).
نکات و بهترین شیوهها
- استفاده کنید
Scene.fromFile()برای بارگذاریهای تکخطی وقتی گزینههای سفارشی لازم نیست - مشها را بهصورت برنامهنویسی با
createPolygon()برای هندسه سفارشی - استفاده کنید
.glbپسوند برای خروجی باینری فشرده glTF - بررسی کنید
node.getEntity() != nullقبل از تبدیل - صدور STL انجام میدهد نیست چهرههای چندضلعی را بهصورت خودکار مثلثبندی کنید. خروجی باینری STL فقط سه راس اول هر چهره چندضلعی را مینویسد — چهرههای چهارضلعی یا n‑گون بهصورت ساکتانه کوتاه میشوند. خروجی ASCII STL تمام ایندکسهای راسها را مینویسد که منجر به بلوکهای فاسد فاست برای چهرههای غیر‑مثلث میشود. همیشه مشهای پیشمثلثبندیشده (همهٔ چهرهها مثلثی) را به خروجی STL بدهید تا از از دست رفتن داده یا خروجی نامعتبر جلوگیری شود.
مشکلات رایج
| مسئله | دلیل | راهحل |
|---|---|---|
| استثنا هنگام بارگذاری | فایل پشتیبانینشده یا خراب | تأیید کنید که فایل در یک نمایشگر 3D باز میشود |
| ماتریالهای گمشده پس از بارگذاری OBJ | .mtl فایل یافت نشد | محل .mtl در کنار .obj; اطمینان حاصل کنید که مواد فعال هستند |
| عدم تطابق مقیاس پس از وارد کردن | سیستمهای واحد مختلف | اعمال یک Transform مقیاس پس از بارگذاری |
FAQ
چگونه میتوانم فرمت یک فایل را تشخیص دهم؟?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());آیا میتوانم از یک جریان (stream) بارگذاری کنم؟?
بله. scene.open() یک … را میپذیرد InputStream.
کدام فرمتها هم واردات و هم صادرات را پشتیبانی میکنند؟?
OBJ, STL و glTF/GLB هر دو جهت را پشتیبانی میکنند. FBX فقط برای وارد کردن است؛ خروجی در نسخهٔ متن باز پیادهسازی نشده است.
خلاصه مرجع API
| کلاس / متد | توضیح |
|---|---|
Scene | محفظه صحنه سهبعدی سطح بالا |
scene.open() | فایل سهبعدی را از طریق مسیر یا جریان بارگذاری کنید |
scene.save() | صحنه را به فایل یا جریان صادر کنید |
Scene.fromFile() | کارخانهٔ ایستا برای بارگذاری و بازگرداندن یک Scene |
Node | گرهٔ سلسلهمراتبی صحنه |
node.createChildNode() | یک گرهٔ فرزند ایجاد کنید و پیوست کنید |
Mesh | مش چندضلعی با نقاط کنترل و فهرستهای سطح |
mesh.createPolygon() | یک سطح چندضلعی را تعریف کنید |
Mesh.toMesh() | تبدیل یا کلونکردن هندسه مش |
Transform | جابهجایی، چرخش و مقیاس محلی |
FileFormat | ثبتنام و شناسایی فرمتها |