জিওস্পেশিয়াল পোজ নিয়ে কাজ করা

প্রযোজ্য XR ডিভাইস
এই নির্দেশিকা আপনাকে এই ধরনের XR ডিভাইসের জন্য অভিজ্ঞতা তৈরি করতে সাহায্য করে।
তারযুক্ত XR গ্লাস
অডিও ও
ডিসপ্লে গ্লাস

GeospatialPose পৃথিবীর সাপেক্ষে মহাকাশে কোনও অবস্থানকে বর্ণনা করে। এটি নিম্নলিখিত উপাদানগুলি নিয়ে গঠিত:

  • অক্ষাংশ ও দ্রাঘিমাংশ, যা WGS84 স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত ডিগ্রি হিসেবে নির্দিষ্ট করা হয়।
  • উচ্চতা, যা WGS84 উপবৃত্তাকার থেকে মিটারে নির্দিষ্ট করা হয়, বা মোটামুটি সমুদ্রপৃষ্ঠ থেকে মিটারের সমতুল্য।
  • ওরিয়েন্টেশন, যা EUS কোঅর্ডিনেট সিস্টেমে পোজের আনুমানিক দিক নির্দেশ করে। EUS কোঅর্ডিনেট সিস্টেমে X+ পূর্ব দিকে, Y+ উপরের দিকে এবং Z+ দক্ষিণ দিকে নির্দেশ করে।

Geospatial API ডিভাইসের জিওস্পেশিয়াল পোজ অ্যাক্সেস করার সুবিধা দেয় এবং জিওস্পেশিয়াল পোজ ও ডিভাইস-লোকাল পোজ-এর মধ্যে কনভার্ট করার সুবিধা দেয়।

পূর্বশর্ত

জিওস্পেশিয়াল পোজ পেতে ও কনভার্ট করতে, আপনার অ্যাপকে অবশ্যই জিওস্পেশিয়াল API ব্যবহার করার জন্য সেট-আপ করতে হবে। Geospatial API-এর RUNNING স্ট্যাটাস থাকলে তবেই Geospatial পোজ পাওয়া যাবে।

ডিভাইস-লোকাল পোজকে জিওস্পেশিয়াল পোজে কনভার্ট করা

ডিভাইস-লোকাল Pose-কে GeospatialPose-এ পরিবর্তন করা যেতে পারে, যেমন, পৃথিবীর সাপেক্ষে ব্যবহারকারীর ডিভাইসের অবস্থান নির্ধারণ করতে। এটি আপনাকে সাহায্য করতে পারে:

  • পারসিস্টেন্ট AR কন্টেন্ট তৈরি করুন, যেখানে ব্যবহারকারীর প্লেস করা ভার্চুয়াল অবজেক্ট সঠিকভাবে গ্লোবাল লোকেশনে অ্যাঙ্কর করা হয় যাতে পরে তা খুঁজে পাওয়া যায়।
  • রিয়েল-টাইম নেভিগেশন বা জিও-ফেন্সড গেমপ্লে চালু করতে, ম্যাপে ব্যবহারকারীর অবস্থান ক্রমাগত আপডেট করার মাধ্যমে লোকেশন-ভিত্তিক অভিজ্ঞতা ট্রিগার করুন।
  • লোকেশন-প্রাসঙ্গিক অ্যাপ্লিকেশন লজিক ট্রিগার করার জন্য ব্যবহারকারীর সুনির্দিষ্ট বাস্তব-জগতের প্রসঙ্গ নির্ধারণ করুন।

নিচের কোড স্যাম্পেল থেকে বোঝা যায় যে কীভাবে Geospatial.createGeospatialPoseFromPose() ব্যবহার করে Pose-কে GeospatialPose-এ পরিবর্তন করা যায়।

val devicePose = ArDevice.getInstance(session).state.value.devicePose

// Convert the device Pose into a GeospatialPose.
when (val result = geospatial.createGeospatialPoseFromPose(devicePose)) {
    is CreateGeospatialPoseFromPoseSuccess -> {
        val geoPose = result.pose
        val lat = geoPose.latitude
        val lon = geoPose.longitude
        val alt = geoPose.altitude
        // Orientation is in the EUS (East-Up-South) coordinate system.
        val orientation = geoPose.eastUpSouthQuaternion
    }
    is CreateGeospatialPoseFromPoseNotTracking -> {
        // Geospatial is not currently tracking.
    }

    else -> {
        // A newer exception was added, but your app is using an old version of the library
    }
}

একটি জিওস্পেশিয়াল পোজকে ডিভাইস-লোকাল পোজে কনভার্ট করুন

এছাড়াও, আপনি GeospatialPose-কে ডিভাইস-লোকাল Pose-এ পরিবর্তন করতে পারবেন। এই ট্রান্সফর্মেশন, ল্যান্ডমার্কের লোকেশন, নেভিগেশন পাথ বা স্থায়ী AR কন্টেন্টের মতো বাস্তব-জগতের কোঅর্ডিনেট দ্বারা সংজ্ঞায়িত তথ্য নেয় এবং ব্যবহারকারীর ডিভাইসের সঠিক ভিজ্যুয়াল স্পেসে এটি কনভার্ট করে।

নিম্নলিখিত কোড স্যাম্পেল থেকে জানা যায় যে কীভাবে Geospatial.createPoseFromGeospatialPose() ব্যবহার করে জিওস্পেশিয়াল পোজকে ডিভাইস-লোকাল পোজে পরিবর্তন করা যায়।

// Convert a GeospatialPose (lat/long/alt) back to a device-space Pose.
when (val result = geospatial.createPoseFromGeospatialPose(geoPose)) {
    is CreatePoseFromGeospatialPoseSuccess -> {
        val devicePose: Pose = result.pose
        // devicePose is now ready to be used relative to the tracking origin.
    }
    is CreatePoseFromGeospatialPoseNotTracking -> {
        // Geospatial is not currently tracking.
    }
    is CreatePoseFromGeospatialPoseInternalError -> {
        // An internal error occurred.
    }
    else -> {
        // A newer exception was added, but your app is using an old version of the library
    }
}