Sceneform দিয়ে শুরু করা হচ্ছে

এই পৃষ্ঠাটি Hello Sceneform নমুনা অ্যাপে কোডটি অন্বেষণ করে মূল ধারণাগুলি ব্যাখ্যা করে৷ বিঃদ্রঃ:

  • এই নমুনা Sceneform এবং ARCore ব্যবহার করে।

    ARCore ছাড়া Sceneform ব্যবহার করতে, ARCore নির্ভরতা এবং CAMERA অনুমতির প্রয়োজনীয়তা উপেক্ষা করে নিচের ধাপগুলি অনুসরণ করুন। আপনার অ্যাপের লেআউটে SceneView ব্যবহার করুন যেমনটি বিল্ড দ্য সিন -এ বর্ণিত হয়েছে।

  • এই নমুনা অ্যাপটি একটি এআর প্রয়োজনীয় অ্যাপ হিসেবে লেখা।

    AR ঐচ্ছিক বনাম AR প্রয়োজনীয় অ্যাপ সম্পর্কে আরও জানতে, ARCore সক্ষম করা দেখুন

আপনার প্রকল্পে Sceneform এর সাথে শুরু করার জন্য, আপনাকে এটি করতে হবে:

  1. Sceneform প্লাগইন আমদানি করুন
  2. আপনার প্রকল্পের build.gradle ফাইল কনফিগার করুন
  3. আপনার AndroidManifest.xml আপডেট করুন
  4. রানটাইম চেক সম্পাদন করুন এবং একটি দৃশ্য দৃশ্য তৈরি করুন
  5. রেন্ডারেবল তৈরি করুন
  6. দৃশ্য নির্মাণ

আপনার প্রকল্পে Sceneform প্লাগইন আমদানি করুন

একবার ইনস্টল হয়ে গেলে, Sceneform প্লাগইন আপনাকে Android স্টুডিওতে AR অ্যাপের জন্য Sceneform SDK-এ 3D সম্পদ আমদানি করতে, দেখতে এবং তৈরি করতে দেয়। এটির জন্য অ্যান্ড্রয়েড স্টুডিও সংস্করণ 3.1 এবং তার উপরে প্রয়োজন৷

প্লাগইন ইনস্টল করতে:

  1. অ্যান্ড্রয়েড স্টুডিওতে প্লাগইন সেটিংস খুলুন:

    • উইন্ডোজ: ফাইল> সেটিংস> প্লাগইন> সংগ্রহস্থল ব্রাউজ করুন

    • macOS: অ্যান্ড্রয়েড স্টুডিও > পছন্দ > প্লাগইন

  2. ব্রাউজ রিপোজিটরিতে ক্লিক করুন এবং Google Sceneform Tools (Beta) ইনস্টল করুন।

আপনার প্রকল্পের build.gradle ফাইল কনফিগার করুন

  1. নিশ্চিত করুন যে আপনার প্রকল্পের build.gradle এ Google এর Maven সংগ্রহস্থল অন্তর্ভুক্ত রয়েছে:

    allprojects {
        repositories {
            google()
            …
    
  2. সর্বশেষ ARCore এবং Sceneform UX নির্ভরতা যোগ করতে আপনার অ্যাপের build.gradle আপডেট করুন এবং নিশ্চিত করুন যে আপনার প্রকল্প সেটিংস উভয় লাইব্রেরির সাথে সামঞ্জস্যপূর্ণ।

    android {
        …
        defaultConfig {
            // Sceneform requires minSdkVersion >= 24.
            minSdkVersion 24
            …
        }
        // Sceneform libraries use language constructs from Java 8.
        // Add these compile options if targeting minSdkVersion < 26.
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
    
    dependencies {
        …
        // Provides ARCore Session and related resources.
        implementation 'com.google.ar:core:1.15.0'
    
        // Provides ArFragment, and other UX resources.
        implementation 'com.google.ar.sceneform.ux:sceneform-ux:1.15.0'
    
        // Alternatively, use ArSceneView without the UX dependency.
        implementation 'com.google.ar.sceneform:core:1.15.0'
    }
    

আপনার AndroidManifest.xml আপডেট করুন

আপনার অ্যাপটি ( AR ঐচ্ছিক ) ব্যবহার করে বা ( AR প্রয়োজনীয় ) ARCore এবং CAMERA অ্যাক্সেসের প্রয়োজন তা নির্দেশ করতে আপনার AndroidManifest.xml পরিবর্তন করুন:

<!-- Both "AR Optional" and "AR Required" apps require CAMERA permission. -->
<uses-permission android:name="android.permission.CAMERA" />

<!-- Sceneform requires OpenGL ES 3.0 or later. -->
<uses-feature android:glEsVersion="0x00030000" android:required="true" />

<!-- Indicates that app requires ARCore ("AR Required"). Ensures the app is
     visible only in the Google Play Store on devices that support ARCore.
     For "AR Optional" apps remove this line. -->
<uses-feature android:name="android.hardware.camera.ar" />

<application>
    …
    <!-- Indicates that app requires ARCore ("AR Required"). Causes the Google
         Play Store to download and install Google Play Services for AR along
         with the app. For an "AR Optional" app, specify "optional" instead of
         "required".
    -->
    <meta-data android:name="com.google.ar.core" android:value="required" />
</application>

রানটাইম চেক সম্পাদন করুন এবং একটি দৃশ্য দৃশ্য তৈরি করুন

Sceneform ব্যবহার শুরু করার এবং একটি দৃশ্য দৃশ্য তৈরি করার সবচেয়ে সহজ উপায় হল একটি ArFragment ব্যবহার করা, যা প্রয়োজনীয় ARCore রানটাইম চেক করার পরে স্বয়ংক্রিয়ভাবে ARCore সেশন পরিচালনা পরিচালনা করে:

  1. AR-এর জন্য Google Play Services- এর একটি সামঞ্জস্যপূর্ণ সংস্করণ ইনস্টল করা আছে কিনা তা পরীক্ষা করে, ব্যবহারকারীকে প্রয়োজনে ইনস্টল বা আপডেট করতে অনুরোধ করে

  2. অ্যাপটির ক্যামেরায় অ্যাক্সেস আছে কিনা তা পরীক্ষা করে এবং ব্যবহারকারীর কাছে অনুমতি চাওয়া হয় যদি এটি এখনও মঞ্জুর করা না হয়

যদি আপনার অ্যাপটিকে অতিরিক্ত অনুমতির অনুরোধ করতে হয়, বা এআর সেশন কীভাবে এবং কখন তৈরি করা হয় তা কাস্টমাইজ করতে চান, আপনি পরিবর্তে:

  • অতিরিক্ত অনুমতির অনুরোধ করতে ArFragment এর একটি সাবক্লাস তৈরি করুন।

  • সরাসরি ArSceneView ব্যবহার করুন বা প্রসারিত করুন। আপনার অ্যাপকে অবশ্যই ARCore ভার্সন চেক করতে হবে এবং ম্যানুয়ালি ARCore সেশন তৈরি করতে setupSession() কল করতে হবে, যেমনটি সৌরজগতের নমুনায় দেখানো হয়েছে।

একবার চেক পাস হয়ে গেলে, ArFragment তৈরি করে:

  1. একটি ArSceneView , getArSceneView() মাধ্যমে অ্যাক্সেসযোগ্য, যে:

    • সেশন থেকে এর পৃষ্ঠে ক্যামেরার ছবি রেন্ডার করে

    • একটি বিল্ট-ইন সিনফর্ম ইউএক্স অ্যানিমেশন রেন্ডার করে যা ব্যবহারকারীদের দেখায় যে কীভাবে তাদের ফোনটি এআর অভিজ্ঞতা সক্রিয় করতে তাদের সরানো উচিত।

    • ডিফল্ট PlaneRenderer ব্যবহার করে শনাক্ত করা Planes হাইলাইট করে

  2. একটি ARCore Session , getSession() মাধ্যমে অ্যাক্সেসযোগ্য

আপনার অ্যাপে ArFragment ব্যবহার করতে, এটিকে আপনার কার্যকলাপের লেআউটে যুক্ত করুন, যেমন Hello Sceneform নমুনায় activity_ux.xml এ দেখানো হয়েছে:

<fragment android:name="com.google.ar.sceneform.ux.ArFragment"
    android:id="@+id/ux_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

রেন্ডারেবল তৈরি করুন

একটি Renderable হল একটি 3D মডেল যা দৃশ্যের যেকোনো জায়গায় স্থাপন করা যেতে পারে এবং এতে মেশ, উপাদান এবং টেক্সচার থাকে।

Renderables থেকে তৈরি করা যেতে পারে:

নমুনা অ্যাপটি একটি 3D andy.obj সম্পদ ফাইল থেকে একটি রেন্ডারযোগ্য তৈরি করে। যখন এই সম্পদটি আমদানি করা হয়, তখন সিনফর্ম প্লাগইনটি প্লাগইন প্রয়োগ করতে অ্যাপের build.gradle আপডেট করে এবং আমদানি করা মডেলের জন্য একটি 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.

res/raw/andy সম্পদ একটি ModelRenderable তৈরি করতে ব্যবহৃত হয়:

private ModelRenderable andyRenderable;

@Override
protected void onCreate(Bundle savedInstanceState) {
    …

    ModelRenderable.builder()
        .setSource(this, R.raw.andy)
        .build()
        .thenAccept(renderable -> andyRenderable = renderable)
        .exceptionally(
            throwable -> {
            Log.e(TAG, "Unable to load Renderable.", throwable);
            return null;
        });
}

দৃশ্য নির্মাণ

ARSceneView এর সাথে একটি Scene সংযুক্ত আছে। দৃশ্যটি একটি গাছের মতো ডেটা স্ট্রাকচার যা Node ধারণ করে যা রেন্ডার করা ভার্চুয়াল অবজেক্ট।

এখানে অ্যান্ডি রেন্ডারেবল সরাসরি রুট সিন নোডে সংযুক্ত করা হয়েছে:

Node node = new Node();
node.setParent(arFragment.getArSceneView().getScene());
node.setRenderable(andyRenderable);

প্রতিটি নোডের সমস্ত তথ্য ধারণ করে Sceneform এটিকে রেন্ডার করার জন্য (এর অবস্থান, অভিযোজন এবং রেন্ডারযোগ্য বস্তু সহ) পাশাপাশি এটির সাথে ইন্টারঅ্যাক্ট করার জন্য (এর সংঘর্ষের আকার এবং ঘটনা শ্রোতাদের সহ)।

নোডগুলি অন্যান্য নোডগুলিতে যোগ করা যেতে পারে, পিতামাতা-সন্তানের সম্পর্ক তৈরি করে। যখন একটি নোড অন্য নোডের শিশু হয়, তখন এটি তার পিতামাতার সাথে নড়াচড়া করে, ঘোরে এবং স্কেল করে - যেমন আপনার শরীর যখন নড়াচড়া করে তখন আপনার বাহু কীভাবে নড়াচড়া করে। একটি নোডের একাধিক সন্তান থাকতে পারে, কিন্তু শুধুমাত্র একজন অভিভাবক, এইভাবে একটি গাছের মতো গঠন তৈরি করে। এই কাঠামোটি দৃশ্য গ্রাফ নামে পরিচিত।

প্রতিটি ফ্রেম, সিনফর্ম ক্যামেরার দৃষ্টিকোণ থেকে দৃশ্যের গ্রাফ রেন্ডার করে (এআরকোর মোশন ট্র্যাকিং দ্বারা পরিচালিত)। আপনার অ্যাপ স্পর্শ এবং অঙ্গভঙ্গি ইভেন্টগুলি শুনে, নোডগুলির বিরুদ্ধে হিট পরীক্ষা করে এবং অ্যাঙ্কর স্থাপন করে দৃশ্যের সাথে যোগাযোগ করতে পারে। আরও তথ্যের জন্য, দেখুন নির্মাণ করুন এবং দৃশ্যের সাথে ইন্টারঅ্যাক্ট করুন