আপনার অ্যাপে একটি সাবস্পেস যোগ করুন

একটি সাবস্পেস হল আপনার অ্যাপের মধ্যে 3D স্পেসের একটি পার্টিশন যেখানে আপনি 3D মডেল স্থাপন করতে পারেন, 3D লেআউট তৈরি করতে পারেন এবং অন্যথায় 2D সামগ্রীতে গভীরতা যোগ করতে পারেন। স্থানিককরণ সক্ষম হলেই একটি সাবস্পেস রেন্ডার করা হয়। হোম স্পেস বা নন-এক্সআর ডিভাইসে, সেই সাবস্পেসের মধ্যে যেকোন কোড উপেক্ষা করা হয়।

আপনি 3D মডেল স্থাপনের জন্য @SubspaceComposable যেমন Volume এবং SpatialPanel ব্যবহার করতে পারেন। কিছু XR উপাদান যেমন Orbiter s বা SpatialDialog s হল আদর্শ 2D কম্পোজেবল যা আপনার 2D UI অনুক্রমের যে কোন জায়গায় ব্যবহার করা যেতে পারে, কিন্তু SubspaceComposable s অবশ্যই আপনার অ্যাপের সাবস্পেসে ব্যবহার করতে হবে। এটি করার জন্য, আপনি Subspace কম্পোজেবল ব্যবহার করবেন।

অন্য যেকোনো কম্পোজেবলের মতো, আপনি সরাসরি আপনার 2D UI অনুক্রমের মধ্যে Subspace কল করতে পারেন। যাইহোক, আপনি Subspace ক্রমানুসারে কোথায় ব্যবহার করেন তার প্রভাব সম্পর্কে সচেতন হওয়া গুরুত্বপূর্ণ।

সাবস্পেস শ্রেণিবিন্যাস সম্পর্কে

শীর্ষ-স্তরের সাবস্পেস হল আপনার অ্যাপের দ্বারা আমন্ত্রিত সবচেয়ে বাইরের সাবস্পেস। এই সাবস্পেসটির কার্যকরভাবে অসীম সীমা রয়েছে এবং এটি সাধারণত যেখানে আপনি আপনার অ্যাপের স্থানিক বিন্যাস এবং SpatialPanel রাখবেন।

যাইহোক, আপনি যদি টপ-লেভেল সাবস্পেসে থাকা একটি প্যানেলে 2D UI অনুক্রমের ভিতরে অন্য একটি সাবস্পেস নেস্ট করেন, সেই নেস্টেড সাবস্পেস ভিন্নভাবে আচরণ করে।

নেস্টেড সাবস্পেসের শীর্ষ-স্তরের Subspace থেকে দুটি মূল পার্থক্য রয়েছে:

  • তারা 2D লেআউটে অংশগ্রহণ করে যেখানে তাদের আহ্বান করা হয়। এর মানে হল সাবস্পেসের উচ্চতা এবং প্রস্থ তার 2D প্যারেন্ট লেআউটের উচ্চতা এবং প্রস্থ দ্বারা সীমাবদ্ধ হবে।
  • তারা সেই সত্তার সন্তান হিসাবে আচরণ করে যেটিতে তারা আমন্ত্রিত হয়েছে৷ এর অর্থ হল, আপনি যদি একটি Subspace SpatialPanel ভিতরে কম্পোজযোগ্য নেস্টেড কল করেন, তাহলে সেই সাবস্পেসটি হবে SpatialPanel একটি শিশু যাকে বলা হয়েছে৷

নেস্টেড সাবস্পেসের এই আচরণগুলি সক্ষম করে যেমন:

  • পিতামাতার সত্তার সাথে সন্তানকে স্থানান্তর করা
  • অফসেট SubspaceModifier ব্যবহার করে সন্তানের অবস্থান অফসেট করা
  • একটি 3D অবজেক্ট উপস্থাপন করা যা আপনার 2D UI এর উপরে ঘোরাফেরা করে এবং 2D লেআউটে উপযুক্ত স্থানের উচ্চতা এবং প্রস্থের সাথে মেলে

আপনার অ্যাপে একটি সাবস্পেস যোগ করুন

নিম্নলিখিত কোড উদাহরণ দেখায় কিভাবে আপনার অ্যাপে শীর্ষ-স্তরের এবং নেস্টেড সাবস্পেস যোগ করতে হয়।

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()
    setContent {
        // This is a top-level subspace
        Subspace {
            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(show3DObject)
    }
      ...
}