একটি সাবস্পেস হল আপনার অ্যাপের মধ্যে 3D স্পেসের একটি পার্টিশন যেখানে আপনি 3D মডেল স্থাপন করতে পারেন, 3D লেআউট তৈরি করতে পারেন এবং অন্যথায় 2D সামগ্রীতে গভীরতা যোগ করতে পারেন। স্থানিককরণ সক্ষম হলেই একটি সাবস্পেস রেন্ডার করা হয়। হোম স্পেস বা নন-এক্সআর ডিভাইসে, সেই সাবস্পেসের মধ্যে যেকোন কোড উপেক্ষা করা হয়।
আপনি 3D মডেল স্থাপনের জন্য সাবস্পেস কম্পোজেবল যেমন Volume
এবং SpatialPanel
ব্যবহার করতে পারেন। কিছু XR উপাদান যেমন Orbiter
বা SpatialDialog
হল প্রমিত 2D কম্পোজেবল যা আপনার 2D UI অনুক্রমের যেকোনো জায়গায় ব্যবহার করা যেতে পারে, তবে SubspaceComposable
s অবশ্যই আপনার অ্যাপের সাবস্পেসে ব্যবহার করতে হবে। এটি করার জন্য, হয় ApplicationSubspace
কম্পোজেবল বা Subspace
কম্পোজেবল ব্যবহার করুন।
নাম অনুসারে, ApplicationSubspace
কম্পোজেবলে আপনার অ্যাপের সমস্ত স্থানিক সামগ্রী থাকা উচিত। Subspace
কম্পোজেবল আপনার অ্যাপের বিদ্যমান UI অনুক্রমের গভীরে 3D স্পেসের একটি পার্টিশন নেস্ট করার জন্য আদর্শ।
অন্য যেকোনো কম্পোজেবলের মতো, আপনি সরাসরি আপনার 2D UI অনুক্রমের মধ্যে Subspace
কল করতে পারেন। যাইহোক, আপনি Subspace
ক্রমানুসারে কোথায় ব্যবহার করেন তার প্রভাব সম্পর্কে সচেতন হওয়া গুরুত্বপূর্ণ।
সাবস্পেস শ্রেণিবিন্যাস সম্পর্কে
শীর্ষ-স্তরের সাবস্পেস হল আপনার অ্যাপের দ্বারা আমন্ত্রিত সবচেয়ে বাইরের সাবস্পেস। আপনার টপ-লেভেল সাবস্পেসের জন্য ApplicationSubspace
কম্পোজেবল ব্যবহার করুন, কিন্তু, আপনি যদি শুধুমাত্র আপনার অ্যাপে সাবস্পেস কম্পোজেবল ব্যবহার করেন, তাহলে সবচেয়ে বাইরের Subspace
কম্পোজেবল হবে আপনার টপ-লেভেল সাবস্পেস। ডিফল্টরূপে, এই শীর্ষ-স্তরের সাবস্পেসটি একটি অ্যাপ দেখার জন্য প্রস্তাবিত স্থান দ্বারা আবদ্ধ থাকে এবং এটি সাধারণত যেখানে আপনি আপনার অ্যাপের স্থানিক বিন্যাস এবং SpatialPanel
রাখেন৷ আপনি যদি টপ-লেভেল সাবস্পেসের সীমানা পরিবর্তন করতে চান, তাহলে আপনার ApplicationSubspace
এ বিভিন্ন VolumeConstraints
পাস করুন।
যাইহোক, আপনি যদি টপ-লেভেল সাবস্পেসে থাকা একটি প্যানেলে 2D UI অনুক্রমের ভিতরে অন্য একটি সাবস্পেস নেস্ট করেন, সেই নেস্টেড সাবস্পেস ভিন্নভাবে আচরণ করে।
নেস্টেড সাবস্পেসের শীর্ষ-স্তরের Subspace
থেকে দুটি মূল পার্থক্য রয়েছে:
- তারা 2D লেআউটে অংশগ্রহণ করে যেখানে তাদের আহ্বান করা হয়। এর মানে হল সাবস্পেসের উচ্চতা এবং প্রস্থ তার 2D প্যারেন্ট লেআউটের উচ্চতা এবং প্রস্থ দ্বারা সীমাবদ্ধ হবে।
- তারা সেই সত্তার সন্তান হিসাবে আচরণ করে যেটিতে তারা আমন্ত্রিত হয়েছে৷ এর অর্থ হল, আপনি যদি একটি
Subspace
SpatialPanel
ভিতরে কম্পোজেবল নেস্টেড কল করেন, তাহলে সেই সাবস্পেসটি হলSpatialPanel
একটি শিশু এটিকে বলা হয়৷
নেস্টেড সাবস্পেসের এই আচরণগুলি সক্ষম করে যেমন:
- পিতামাতার সত্তার সাথে সন্তানকে স্থানান্তর করা
- অফসেট
SubspaceModifier
ব্যবহার করে সন্তানের অবস্থান অফসেট করা - একটি 3D অবজেক্ট উপস্থাপন করা যা আপনার 2D UI এর উপরে ঘোরাফেরা করে এবং 2D লেআউটে উপযুক্ত স্থানের উচ্চতা এবং প্রস্থের সাথে মেলে
আপনার অ্যাপে একটি সাবস্পেস যোগ করুন
নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে আপনার অ্যাপে শীর্ষ-স্তরের এবং নেস্টেড সাবস্পেস যোগ করতে হয়:
setContent { // This is a top-level subspace ApplicationSubspace { SpatialPanel { MyComposable() } } }
@Composable private fun MyComposable() { Row { PrimaryPane() SecondaryPane() } } @Composable private fun PrimaryPane() { // This is a nested subspace, because PrimaryPane is in a SpatialPanel // and that SpatialPanel is in a top-level Subspace Subspace { ObjectInAVolume(true) } }