ডিভাইসভেদে স্থানিক সক্ষমতা ভিন্ন হতে পারে এবং ব্যবহারকারীরা আপনার অ্যাপ বা সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার সাথে সাথে তা পরিবর্তিত হয়। এমনকি আপনার অ্যাপ নিজেও এটি পরিবর্তন করতে পারে—উদাহরণস্বরূপ, হোম স্পেস বা ফুল স্পেসে যাওয়ার মাধ্যমে। সমস্যা এড়ানোর জন্য, বর্তমান পরিবেশে কোন API-গুলো সমর্থিত তা নির্ধারণ করতে আপনার অ্যাপের স্থানিক সক্ষমতা যাচাই করা প্রয়োজন।
Jetpack Composer for XR ব্যবহার করে স্থানিক সক্ষমতা যাচাই করুন
Jetpack Compose for XR স্থানিক সক্ষমতা যাচাই করার জন্য একটি Composition Local তৈরি করে। স্থানিক UI, স্থানিক অডিও, এনভায়রনমেন্ট, পাসথ্রু, বা 3D কন্টেন্ট সক্রিয় আছে কিনা তা পরীক্ষা করতে এটি ব্যবহার করুন।
নিম্নলিখিত স্পেশিয়াল ক্যাপাবিলিটিগুলো বর্তমানে উপলব্ধ আছে কিনা তা পরীক্ষা করতে আপনি LocalSpatialCapabilities.current ব্যবহার করতে পারেন:
-
isSpatialUiEnabled: এটি নির্দেশ করে যে অ্যাপ্লিকেশনটি স্থানিক UI উপাদান (যেমন,SpatialPanel) তৈরি করতে পারবে কি না। -
isContent3dEnabled: অ্যাপ্লিকেশনটি ত্রিমাত্রিক (3D) বস্তু তৈরি করতে পারবে কিনা তা নির্দেশ করে। -
isAppEnvironmentEnabled: অ্যাপ্লিকেশনটি পরিবেশ নির্ধারণ করতে পারবে কিনা তা নির্দেশ করে। -
isPassthroughControlEnabled: অ্যাপ্লিকেশনটি পাসথ্রু অবস্থা নিয়ন্ত্রণ করতে পারবে কিনা তা নির্দেশ করে। -
isSpatialAudioEnabled: অ্যাপ্লিকেশনটি স্পেশিয়াল অডিও ব্যবহার করতে পারবে কি না তা নির্দেশ করে।
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে স্পেশিয়াল UI সক্রিয় আছে কিনা তা পরীক্ষা করতে হয়:
if (LocalSpatialCapabilities.current.isSpatialUiEnabled) { Subspace { SpatialPanel( modifier = SubspaceModifier .width(1488.dp) .fillMaxHeight() ) { AppContent() } } } else { AppContent() }
SceneCore ব্যবহার করে স্থানিক সক্ষমতা যাচাই করুন
SceneCore লাইব্রেরি ব্যবহার করার সময়, আপনাকে একটি সেশন তৈরি করতে হবে। সেশনটি তৈরি হয়ে গেলে, বর্তমানে কোন স্পেশাল ক্যাপাবিলিটিগুলো উপলব্ধ আছে তা জানতে সেশনের scene থেকে spatialCapabilities ব্যবহার করুন।
-
SPATIAL_3D_CONTENT: এই অ্যাক্টিভিটি ত্রিমাত্রিক (3D) বিষয়বস্তু তৈরি করতে পারে। -
APP_ENVIRONMENT: অ্যাক্টিভিটি তার নিজস্ব পরিবেশ নির্ধারণ করতে পারে। -
EMBED_ACTIVITY: অ্যাক্টিভিটিটি অন্য একটি অ্যাক্টিভিটিকে স্থানিকভাবে এমবেড করতে পারে। -
PASSTHROUGH_CONTROL: এই অ্যাক্টিভিটি পাসথ্রু চালু বা বন্ধ করতে পারে। -
SPATIAL_AUDIO: অ্যাক্টিভিটিটি স্পেশাল অডিও ব্যবহার করতে পারে। -
SPATIAL_UI: অ্যাক্টিভিটিটি নিজেকে স্থানিক রূপ দিতে পারে (উদাহরণস্বরূপ, একটি স্থানিক প্যানেল যোগ করে)।
আপনি addSpatialCapabilitiesChangedListener নামক একটি কলব্যাকে সাবস্ক্রাইব করার বিকল্পও বেছে নিতে পারেন, যা স্পেশিয়াল ক্যাপাবিলিটি পরিবর্তিত হলে আপনাকে অবহিত করে।
// Example 1: check if enabling passthrough mode is allowed if (xrSession.scene.spatialCapabilities.contains( SpatialCapability.PASSTHROUGH_CONTROL ) ) { xrSession.scene.spatialEnvironment.preferredPassthroughOpacity = 1f } // Example 2: multiple capability flags can be checked simultaneously: if (xrSession.scene.spatialCapabilities.contains(SpatialCapability.PASSTHROUGH_CONTROL) && xrSession.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT) ) { // ... }
ডিভাইসটির ডিসপ্লে সক্ষমতা যাচাই করতে ব্লেন্ড মোড ব্যবহার করুন।
অ্যান্ড্রয়েড এক্সআর-এ, এক্সআর হেডসেট এবং তারযুক্ত এক্সআর গ্লাসের হার্ডওয়্যার সক্ষমতা ভিন্ন ভিন্ন হয়, বিশেষ করে তাদের ডিসপ্লে টাইপের ক্ষেত্রে। দৃশ্যমানতা সর্বোচ্চ করার জন্য আপনার অ্যাপের UI এবং রেন্ডার করা অবজেক্টের রং পরিবর্তন করার প্রয়োজন হতে পারে, যা ডিভাইসের ডিসপ্লে টাইপ এবং পছন্দের ব্লেন্ড মোড দ্বারা প্রভাবিত হতে পারে। DisplayBlendMode API রেন্ডারিংয়ের জন্য ডিভাইসের ব্লেন্ড মোড সক্ষমতা প্রদান করে। ভার্চুয়াল কন্টেন্ট বাস্তব জগতে কীভাবে যুক্ত হবে তা নির্ধারণ করতে এই API ব্যবহার করুন।
এখানে কয়েকটি ব্লেন্ড মোডের প্রকারভেদ দেওয়া হলো, যেগুলো সম্পর্কে আপনার জেনে রাখা প্রয়োজন:
-
ADDITIVE: লাল, সবুজ এবং নীল প্রতিটি উপাদানের পিক্সেল মান যোগ করার মাধ্যমে বাস্তব জগতে ভার্চুয়াল বিষয়বস্তু যুক্ত করা হয়। আলফা উপেক্ষা করা হয় এবং কালো পিক্সেল স্বচ্ছ দেখায়। -
ALPHA_BLEND: আলফা উপাদানের উপর ভিত্তি করে পিক্সেল মানগুলোকে আলফা ব্লেন্ডিং করার মাধ্যমে বাস্তব জগতে ভার্চুয়াল বিষয়বস্তু যুক্ত করা হয়। -
NO_DISPLAY: ডিভাইসটিতে ব্লেন্ডিং সমর্থিত নয়।
কোন ধরনের ব্লেন্ড মোড ব্যবহার করা হচ্ছে তা পরীক্ষা করতে এবং প্রয়োজন অনুযায়ী সমন্বয় করতে Jetpack XR রানটাইম লাইব্রেরি থেকে XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() ব্যবহার করুন।
আরও দেখুন
- একটি সেশন তৈরি করুন
- HSM এবং FSM এর মধ্যে রূপান্তর
- আপনার অ্যাপে স্থানিক পরিবেশ যোগ করুন
- আপনার অ্যাপে 3D মডেল যোগ করুন