FileFormat.Drako برای جاوا
سادهسازی فرآیند خواندن و نوشتن فایلهای Google Draco با استفاده از API جاوا
به راحتی فایلهای DRC فشرده را با FileFormat.Drako و API جاوا سبکوزن و متنباز ویرایش کنید، که تبدیل و اتوماسیون فایلهای Draco را تسهیل میکند
FileFormat.Drako برای جاوا تجربه پردازش فایل Draco شما را متحول می کند. در این راهنمای جامع، ما به عملکردها و مزایای LeveragingFileFormat.Drako، یک API منبع باز سبک وزن، جاوا می پردازیم تا به راحتی فایل های Draco را مدیریت کنیم.
Draco یک کتابخانه فشرده سازی منبع باز است که توسط Google توسعه یافته است که در فشرده سازی و فشرده سازی شبکه های هندسی سه بعدی و ابرهای نقطه ای تخصص دارد. Draco با کاهش قابل توجه اندازه فایل های گرافیکی سه بعدی، انتقال سریعتر را امکان پذیر می کند و نیازهای ذخیره سازی را کاهش می دهد و در عین حال کیفیت بصری را حفظ می کند. این برنامه از برنامه های سه بعدی مختلف، از جمله پلتفرم های مبتنی بر وب و تلفن همراه پشتیبانی می کند و از مدیریت کارآمد داده های سه بعدی پیچیده اطمینان می دهد. دراکو به طور گسترده در صنایعی مانند بازی، واقعیت مجازی و تجسم سه بعدی برای بهینه سازی عملکرد و افزایش تجربه کاربر استفاده می شود.
FileFormat.Drako به عنوان یک راه حل قدرتمند برای خواندن و نوشتن یکپارچه فایل های دراکو ظاهر می شود. این رابط برنامهنویسی برنامهنویسی نرمافزار متنباز جاوا، عملیات تصویر Draco را ساده میکند و به توسعهدهندگان و کاربران یک رابط کاربرپسند برای مدیریت بدون زحمت فایلهای Draco ارائه میدهد.
FileFormat.Drako تحت مجوز باز کردن در دسترس است. p>
ویژگی ها و مزایای کلیدی- نسبتهای فشردهسازی بالا: دراکو به کاهش قابل توجهی در اندازه فایلها دست مییابد، و اغلب آنها را تا ۹۰٪ بدون کاهش قابل توجه در کیفیت بصری کاهش میدهد. این آن را برای برنامههایی که پهنای باند و فضای ذخیرهسازی محدود است، ایدهآل میکند.
- پشتیبانی از انواع دادههای مختلف: Draco از فشردهسازی برای طیف وسیعی از انواع دادههای سه بعدی، از جمله مشهای هندسی و ابرهای نقطهای پشتیبانی میکند. میتواند موقعیتهای راس، رنگها، نرمالها و سایر ویژگیها را به طور موثر مدیریت کند.
- فشردهسازی و رفع فشردهسازی سریع: این کتابخانه به گونهای طراحی شده است که فشردهسازی و رفع فشردهسازی با سرعت بالا را ارائه میدهد، و آن را برای برنامههای بلادرنگ مانند نمایشگرهای سه بعدی مبتنی بر وب و تجربیات واقعیت مجازی مناسب میکند. li>
- منبع باز و رایگان: از مزایای راه حل منبع باز بدون هزینه مجوز لذت ببرید، و آن را برای توسعه دهندگان و کاربران در همه سطوح قابل دسترسی می کند.
- ادغام بیوقفه با برنامههای جاوا: IntegrateFileFormat.Drako بدون زحمت در برنامههای جاوای شما، امکان مدیریت یکپارچه فایلهای Draco را در جریانهای کاری موجود شما فراهم میکند.
- نسبتهای فشردهسازی بالا: دراکو به کاهش قابل توجهی در اندازه فایلها دست مییابد، و اغلب آنها را تا ۹۰٪ بدون کاهش قابل توجه در کیفیت بصری کاهش میدهد. این آن را برای برنامههایی که پهنای باند و فضای ذخیرهسازی محدود است، ایدهآل میکند.
- پشتیبانی از انواع دادههای مختلف: Draco از فشردهسازی برای طیف وسیعی از انواع دادههای سه بعدی، از جمله مشهای هندسی و ابرهای نقطهای پشتیبانی میکند. میتواند موقعیتهای راس، رنگها، نرمالها و سایر ویژگیها را به طور موثر مدیریت کند.
- فشردهسازی و رفع فشردهسازی سریع: این کتابخانه به گونهای طراحی شده است که فشردهسازی و رفع فشردهسازی با سرعت بالا را ارائه میدهد، و آن را برای برنامههای بلادرنگ مانند نمایشگرهای سه بعدی مبتنی بر وب و تجربیات واقعیت مجازی مناسب میکند. li>
- منبع باز و رایگان: از مزایای راه حل منبع باز بدون هزینه مجوز لذت ببرید، و آن را برای توسعه دهندگان و کاربران در همه سطوح قابل دسترسی می کند.
- ادغام بیوقفه با برنامههای جاوا: IntegrateFileFormat.Drako بدون زحمت در برنامههای جاوای شما، امکان مدیریت یکپارچه فایلهای Draco را در جریانهای کاری موجود شما فراهم میکند.
چگونه با FileFormat.Drako برای جاوا شروع کنیم
شروع با FileFormat.Drako سریع و آسان است. به سادگی این مراحل را دنبال کنید:
- InstallFileFormat.Drako: بسته FileFormat.Drako را از طریق Maven یا Gradle نصب کنید.
- شروع به تبدیل: از API ساده ارائه شده توسط FileFormat.Drako برای خواندن و نوشتن فایل های Draco استفاده کنید.
روش توصیه شده برای نصبFileFormat.Drako برای جاوا استفاده از maven است. لطفاً از قطعه وابستگی pom زیر برای نصب روان استفاده کنید.
قطعه POM
<dependency>
<groupId>dev.fileformat</groupId>
<artifactId>drako</artifactId>
<version>1.4.1</version>
</dependency>
همچنین میتوانید آن را مستقیماً از GitHub دانلود کنید.خواندن فایل Draco به DracoMesh در جاوا
این قطعه کد به طور موثر فایل Draco را بارگیری می کند و آن را در یک نمونه DracoMesh برای عملیات بعدی ذخیره می کند.
- فایل DRC با نام "cube.drc" را با استفاده از
Files.readAllBytes
باز کنید. - مش سه بعدی را از بایت ها در یک شی
DracoMesh
بارگذاری کنید.
قطعه کد زیر را کپی و در فایل اصلی خود جایگذاری کنید و برنامه را اجرا کنید.
فایل .drc را در نمونه DracoMesh بخوانید
byte[] cube = Files.readAllBytes(Paths.get("cube.drc"));
DracoMesh dm = (DracoMesh)Draco.decode(cube);
فایل Draco را بخوانید و در Wavefront OBJ در جاوا بنویسید
کد زیر نحوه باز کردن فایل 3D Draco موجود و نوشتن در فرمت obj برای پردازش بیشتر را نشان می دهد:
- فایل دراکو با نام "input.drc" را با استفاده از
Files.readAllBytes
باز کنید. - مش Draco را از بایت ها در یک شی
DracoMesh
بارگیری کنید. - ویژگی موقعیت را با استفاده از
DracoMesh.getNamedAttribute
پیدا کنید و محتوای آن را بهFloatSpan
تبدیل کنید. - نقاط کنترل را با استفاده از قالب OBJ روی خروجی بنویسید.
- خواندن هر گوشه صورت با استفاده از
DracoMesh.readFace
- گوشههای صورت را با استفاده از
PointAttribute.mappedIndex
به نمایه نقاط کنترل نگاشت کنید. - چهره ها را با استفاده از قالب OBJ در خروجی بنویسید.
قطعه کد زیر را کپی و در فایل اصلی خود جایگذاری کنید و برنامه را اجرا کنید.
فایل .drc را به DracoMesh بخوانید و به obj جبهه موج صادر کنید
//load draco file
byte[] bytes = Files.readAllBytes(Paths.get("input.drc"));
DracoMesh mesh = (DracoMesh)Draco.decode(bytes);
if (mesh == null)
throw new IllegalStateException("Input file is not a valid draco file.");
PointAttribute attrPos = mesh.getNamedAttribute(AttributeType.POSITION);
FloatSpan points = attrPos.getBuffer().asSpan().asFloatSpan();
try(FileOutputStream fos = new FileOutputStream("output.obj", false)) {
try (OutputStreamWriter writer = new OutputStreamWriter(fos)) {
for (int i = 0; i < points.size(); i += 3) {
writer.write(String.format("v %f %f %f\n", points.get(i), points.get(i + 1), points.get(i + 2)));
}
int[] face = new int[3];
for (int i = 0; i < mesh.getNumFaces(); i++) {
mesh.readFace(i, face);
int a = attrPos.mappedIndex(face[0]) + 1;
int b = attrPos.mappedIndex(face[1]) + 1;
int c = attrPos.mappedIndex(face[2]) + 1;
writer.write(String.format("f %d %d %d\n", a, b, c));
}
}
}
کدگذاری نقاط کنترل، مثلث ها در فایل دراکو به صورت برنامه ریزی شده در جاوا
کد ارائه شده نشان می دهد که چگونه می توان به صورت برنامه ریزی شده یک فایل Draco را از نقاط کنترل و مثلث ها ایجاد کرد و آن را به عنوان "output.drc" با استفاده از جاوا ذخیره کرد. در اینجا خلاصه ای از مراحل است:
- یک نمونه
DracoMesh
ایجاد کنید. - نقاط کنترل را به
PointAttribute
بپیچید. PointAttribute
را بهDracoMesh
اضافه کنید.- شاخص های مثلث را اضافه کنید.
- یک شی
DracoEncodeOptions
با پارامترهای رمزگذاری مشخص شده ایجاد کنید. - مش را با استفاده از
Draco.encode
به بایت رمزگذاری کنید.
قطعه کد زیر را کپی و در فایل اصلی خود جایگذاری کنید و برنامه را اجرا کنید.
بردارها و چهره ها را در فایل drc. کدگذاری کنید
Vector3[] controlPoints = new Vector3[]
{
new Vector3( -5, 0, 5.0f),
new Vector3( 5, 0, 5.0f),
new Vector3( 5, 10, 5.0f),
new Vector3( -5, 10, 5.0f),
new Vector3( -5, 0, -5.0f),
new Vector3( 5, 0, -5.0f),
new Vector3( 5, 10, -5.0f),
new Vector3( -5, 10, -5.0f)
};
int[] indices = new int[]
{
0,1,2, 0, 2, 3, // Front face (Z+)
1,5,6, 1, 6, 2, // Right side (X+)
5,4,7, 5, 7, 6, // Back face (Z-)
4,0,3, 4, 3, 7, // Left side (X-)
0,4,5, 0, 5, 1, // Bottom face (Y-)
3,2,6, 3, 6, 7 // Top face (Y+)
};
DracoMesh mesh = new DracoMesh();
PointAttribute attrPos = PointAttribute.wrap(AttributeType.POSITION, controlPoints);
mesh.addAttribute(attrPos);
//add triangle indices
mesh.getIndices().addRange(indices);
//number of the control points, it's required for the encoder to produce correct result.
mesh.setNumPoints(8);
//You can also use following methods to deduplicate the attributes to reduce the file size
//mesh.deduplicateAttributeValues();
//mesh.deduplicatePointIds();
DracoEncodeOptions opt = new DracoEncodeOptions();
byte[] drcBytes = Draco.encode(mesh, opt);
Files.write(Paths.get("output.drc"), drcBytes);
FileFormat.Drako یک API بصری، پشتیبانی از فرمت جامع، و یکپارچهسازی یکپارچه با برنامههای جاوا را ارائه میدهد که به توسعهدهندگان و کاربران امکان میدهد تا فایلهای Draco را بدون زحمت مدیریت کنند. چه در حال تبدیل فایلهای draco به فایلهای دیگر باشید، چه در حال بارگیری draco برای رندر کردن، FileFormat.Drako این فرآیند را ساده میکند و کارایی و کیفیت مطلوب را در هر مرحله تضمین میکند.
مخزن GitHub ما را برای مشارکت، پیشنهاد بهبودها و بهبود این API منبع باز کاوش کنید: FileFormat.Drako- for-Java