با نحوه وارد کردن مدل های سه بعدی، تبدیل آنها به فرمت Sceneform و پیش نمایش آنها در Android Studio آشنا شوید.
یک دارایی سه بعدی جدید وارد کنید
Sceneform دارایی های سه بعدی را در قالب های زیر پشتیبانی می کند:
- OBJ
- glTF (انیمیشن ها پشتیبانی نمی شوند)
- FBX، با یا بدون انیمیشن.
برای وارد کردن یک دارایی سه بعدی جدید این مراحل را دنبال کنید:
بررسی کنید که پوشه
appپروژه شما حاوی یکsampledataداده باشد.برای ایجاد پوشه، روی پوشه
appدر پنجره Project کلیک راست کرده، سپس New > Sample Data Directory را انتخاب کنید.پوشه
sampledataبخشی از پروژه Android Studio شما است، اما محتوای آن در APK شما گنجانده نخواهد شد.فایل دارایی منبع مدل سه بعدی خود (
*.obj،*.fbx، یا*.gltf)، و همه وابستگی های آن (*.mtl،*.bin،*.png،*.jpg، و غیره) را در داده هایsampledataپوشهاین فایلهای منبع را در
assetsپروژه یا پوشهresکپی نکنید، زیرا باعث میشود بیضرر آنها در APK شما گنجانده شوند.روی دارایی منبع مدل سه بعدی کلیک راست کرده و Import Sceneform Asset را انتخاب کنید تا فرآیند واردات آغاز شود.
مقادیر توسط ورودی
sceneform.asset()درbuild.gradleبرنامه استفاده میشوند و تعیین میکنند که*.sfaو*.sfbدر پروژه شما تولید میشوند.اگر برای اولین بار مدلی را وارد میکنید، از مقادیر پیشفرض استفاده کنید.
رشته شرح مسیر دارایی منبع نام فایل دارایی مدل سه بعدی OBJ، FBX یا glTF برای وارد کردن. مسیر مادی defaultبه Sceneform میگوید که از متریال پیشفرض داخلی یا مسیر فایل سفارشی*.matاستفاده کند.مسیر خروجی .sfa از پیش فرض استفاده کنید یا مسیر دیگری را در پوشه sampledataکنید.در صورت عدم وجود فایل .sfa ایجاد می شود. می توان آن را برای کنترل برخی از جنبه های فرآیند واردات تغییر داد.
این تضمین می کند که
*.sfaبی جهت در APK شما گنجانده نشده است.مسیر خروجی .sfb به طور پیش فرض از src/main/ assets /folder استفاده می شود که امکان استفاده از نام فایل دارایی دلخواه را فراهم می کند.اگر نام فایل (بدون پسوند فایل) یک شناسه منبع معتبر است (مثلا
R.raw.filename)، در صورت تمایل میتوانید از پوشهsrc/main/ res/raw /استفاده کنید.برای اطلاعات بیشتر در مورد استفاده از پوشههای
assets/وres/در برنامه ، مرور کلی منابع برنامه Android را ببینید.فایل های انیمیشن اگر فایلهای انیمیشن
*.fbxرا وارد میکنید، روی علامت مثبت (+) کلیک کنید و بقیه فایلها را جداگانه اضافه کنید.برای شروع فرآیند واردات، روی Finish کلیک کنید.
برای وارد کردن دارایی شما، افزونه موارد زیر را انجام می دهد:
اگر افزونه Sceneform gradle وجود نداشته باشد به
build.gradleپروژه شما اضافه می کند:dependencies { … classpath 'com.google.ar.sceneform:plugin:1.15.0' }فایل
build.gradleبرنامه شما را بهروزرسانی میکند تا شامل یک خطapply pluginو یکsceneform.asset()برای دارایی تازه وارد شده باشد:apply plugin: 'com.google.ar.sceneform.plugin' sceneform.asset('sampledata/models/andy.obj', // 'Source Asset Path' specified during import. 'default', // 'Material Path' specified during import. 'sampledata/models/andy.sfa', // '.sfa Output Path' specified during import. 'src/main/res/raw/andy') // '.sfb Output Path' specified during import.این ورودی های جدید در build.gradle برنامه دو وظیفه
build.gradleایجاد می کنند:createAsset-<asset-name>یک فایل تعریف دارایی Sceneform (*.sfa) را ایجاد می کند اگر هنوز وجود نداشته باشد.این کار یک فایل
*.sfaموجود را بازنویسی نمی کند، به این معنی که هرگونه تغییری که پس از وارد کردن در فایل SFA ایجاد می کنید، بازنویسی نمی شود.فایل
*.sfaیک فایل متنی است که حاوی توضیحات کامل و قابل خواندن برای انسان از تنظیمات واردات دارایی است. به مدلها و بافتهای موجود در دارایی منبع شما اشاره میکند، و همچنین مواد را با ارائه پارامترهای مواد برای مواد مبتنی بر فیزیکی Sceneform تعریف میکند.compileAsset-<asset-name>فایل*.sfaرا در یک فایل دارایی باینری Sceneform (*.sfb) کامپایل می کند.این فایل
*.sfbدر APK برنامه شما ساخته می شود و در زمان اجرا برای ایجاد فایل قابل رندر بارگذاری می شود.
برای اطلاعات بیشتر، به مرجع پلاگین Sceneform Gradle مراجعه کنید.
*.sfaدر یک پنجره متنی و*.sfbدر یک پنجره Viewer باز می کند.
دارایی سه بعدی وارد شده قبلی را به روز کنید
هنگامی که فایل دارایی منبع مدل OBJ، FBX، یا glTF قبلا وارد شده ( *.obj ، *.fbx ، یا *.gltf ) را به روز می کنید، ورودی مربوط به sceneform.asset() در build.gradle برنامه شما باعث می شود که افزونه به طور خودکار عمل کند. یک فایل *.sfb به روز شده، بر اساس پارامترهای *.sfa فعلی ایجاد کنید.
برای تکرار پارامترهای یک دارایی از قبل وارد شده:
- فایل متنی
*.sfaرا با استفاده از مرجع فرمت فایل SFA به عنوان راهنما تغییر دهید. - تغییرات خود را ذخیره کنید این باعث می شود که دارایی دوباره کامپایل شود و فایل
*.sfbبه روز شود. - پیش نمایش دارایی به روز شده را با دوبار کلیک کردن روی فایل
*.sfbکنید تا پنجره Viewer باز شود.
اگر دارایی قبلاً وارد شده را که شامل دادههای انیمیشن است، بهروزرسانی میکنید، هر یک از فایلهای *.fbx بهروزرسانیشده را بهصورت جداگانه با استفاده از علامت مثبت (+) در بخش Animation Files در گفتگوی واردات وارد کنید.
تعاریف دارایی Gradle
فرآیند import هر فایل انیمیشن *.fbx را در انتهای فایل build.gradle می کند.
sceneform.asset('sampledata/models/andy_dance.fbx',
'default',
'sampledata/models/andy_dance.sfa',
'src/main/res/raw/andy_dance',
['sampledata/models/andy_wave_r.fbx',
'sampledata/models/andy_wave_l.fbx'])
Renderable را ایجاد کنید
هنگامی که دارایی به فرمت *.sfb کامپایل شد، می توانید یک ModelRenderable و آن را به صورت زیر به یک گره در صحنه متصل کنید:
ModelRenderable.builder()
// To load as an asset from the 'assets' folder ('src/main/assets/andy.sfb'):
.setSource(this, Uri.parse("andy.sfb"))
// Instead, load as a resource from the 'res/raw' folder ('src/main/res/raw/andy.sfb'):
//.setSource(this, R.raw.andy)
.build()
.thenAccept(renderable -> andyRenderable = renderable)
.exceptionally(
throwable -> {
Log.e(TAG, "Unable to load Renderable.", throwable);
return null;
});
استفاده از مواد سفارشی
مواد پیشفرض Sceneform، دستیابی به نتایج عالی را برای توسعهدهندگان آسان میکند. همچنین می توانید از مواد سفارشی برای شخصی سازی عمیق ظاهر دارایی های خود استفاده کنید.
برای اختصاص یک ماده سفارشی به دارایی خود:
با استفاده از [Custom Material Reference](/sceneform/develop/custom-material به عنوان راهنما، یک فایل تعریف مواد سفارشی (
*.mat) ایجاد کنید.مواد سفارشی را روی دارایی اعمال کنید:
هنگام وارد کردن دارایی جدید :
- فایل سفارشی
*.matرا در طی فرآیند واردات مشخص کنید.
برای به روز رسانی دارایی وارد شده قبلی :
اگر محتوای
*.sfaسفارشی نشده است، فایلهای*.sfaو*.sfbموجود وsceneform.asset()را درbuild.gradleبرنامه حذف کنید، سپس دارایی را دوباره وارد کنید. این تضمین میکند که ویژگیهای*.sfaو پارامترهای مواد بازسازیشده با مواردی که توسط مواد سفارشی شما پشتیبانی میشوند مطابقت دارند.برای حفظ هرگونه سفارشی سازی
*.sfaکه انجام داده اید، فایل*.sfaرا باز کنید و ویژگیsourceرا به مسیر فایل*.matمواد سفارشی خود تغییر دهید، سپس به صورت دستی ویژگی های*.sfaو پارامترهای متریال را تنظیم کنید تا با سفارشی خود مطابقت داشته باشد. مواد
- فایل سفارشی

