واردات و پیش نمایش دارایی های سه بعدی

با نحوه وارد کردن مدل های سه بعدی، تبدیل آنها به فرمت Sceneform و پیش نمایش آنها در Android Studio آشنا شوید.

یک دارایی سه بعدی جدید وارد کنید

Sceneform دارایی های سه بعدی را در قالب های زیر پشتیبانی می کند:

  • OBJ
  • glTF (انیمیشن ها پشتیبانی نمی شوند)
  • FBX، با یا بدون انیمیشن.

برای وارد کردن یک دارایی سه بعدی جدید این مراحل را دنبال کنید:

  1. بررسی کنید که پوشه app پروژه شما حاوی یک sampledata داده باشد.

    برای ایجاد پوشه، روی پوشه app در پنجره Project کلیک راست کرده، سپس New > Sample Data Directory را انتخاب کنید.

    پوشه sampledata بخشی از پروژه Android Studio شما است، اما محتوای آن در APK شما گنجانده نخواهد شد.

  2. فایل دارایی منبع مدل سه بعدی خود ( *.obj ، *.fbx ، یا *.gltf )، و همه وابستگی های آن ( *.mtl ، *.bin ، *.png ، *.jpg ، و غیره) را در داده های sampledata پوشه

    این فایل‌های منبع را در assets پروژه یا پوشه res کپی نکنید، زیرا باعث می‌شود بی‌ضرر آن‌ها در APK شما گنجانده شوند.

  3. روی دارایی منبع مدل سه بعدی کلیک راست کرده و 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 را وارد می‌کنید، روی علامت مثبت (+) کلیک کنید و بقیه فایل‌ها را جداگانه اضافه کنید.

  4. برای شروع فرآیند واردات، روی Finish کلیک کنید.

برای وارد کردن دارایی شما، افزونه موارد زیر را انجام می دهد:

  1. اگر افزونه Sceneform gradle وجود نداشته باشد به build.gradle پروژه شما اضافه می کند:

    dependencies {
        …
        classpath 'com.google.ar.sceneform:plugin:1.15.0'
    }
    
  2. فایل 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 مراجعه کنید.

  3. *.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، دستیابی به نتایج عالی را برای توسعه‌دهندگان آسان می‌کند. همچنین می توانید از مواد سفارشی برای شخصی سازی عمیق ظاهر دارایی های خود استفاده کنید.

برای اختصاص یک ماده سفارشی به دارایی خود:

  1. با استفاده از [Custom Material Reference](/sceneform/develop/custom-material به عنوان راهنما، یک فایل تعریف مواد سفارشی ( *.mat ) ایجاد کنید.

  2. مواد سفارشی را روی دارایی اعمال کنید:

    هنگام وارد کردن دارایی جدید :

    برای به روز رسانی دارایی وارد شده قبلی :

    • اگر محتوای *.sfa سفارشی نشده است، فایل‌های *.sfa و *.sfb موجود و sceneform.asset() را در build.gradle برنامه حذف کنید، سپس دارایی را دوباره وارد کنید. این تضمین می‌کند که ویژگی‌های *.sfa و پارامترهای مواد بازسازی‌شده با مواردی که توسط مواد سفارشی شما پشتیبانی می‌شوند مطابقت دارند.

    • برای حفظ هرگونه سفارشی سازی *.sfa که انجام داده اید، فایل *.sfa را باز کنید و ویژگی source را به مسیر فایل *.mat مواد سفارشی خود تغییر دهید، سپس به صورت دستی ویژگی های *.sfa و پارامترهای متریال را تنظیم کنید تا با سفارشی خود مطابقت داشته باشد. مواد