فهم معدِّلات المساحة الفرعية

أجهزة XR المشمولة
تساعدك هذه الإرشادات في إنشاء تجارب لهذه الأنواع من أجهزة XR.
سماعات الرأس بنظام الواقع الممتد
نظارات سلكية بنظام الواقع الممتد

يشبه SubspaceModifier معدِّل Compose للدوال المركّبة في Subspace. يتيح لك SubspaceModifier معالجة الدوال المركّبة في مساحة ثلاثية الأبعاد، ما يساعدك في تحديد موضع عُقد التنسيق الثلاثي الأبعاد وتدويرها وإضافة سلوكيات إليها.

التنسيق

وفقًا للإعدادات التلقائية، يتم تقييد Subspace بالمساحة المقترَحة لعرض التطبيق. تُستخدَم هذه الحدود عند قياس تنسيق مكوّنات المساحة الفرعية، على غرار الحدود في تنسيقات Compose الثنائية الأبعاد.

حدود التعبئة

تؤدي المُعدِّلات fillMaxSize وfillMaxWidth وfillMaxHeight وfillMaxDepth إلى ملء المحتوى (جزئيًا) لحدود العنصر الرئيسي. يساعد استخدام معدِّلات التعبئة في تخطيط محتوى تطبيقك بشكل مستقل عن خصائص شاشة جهاز XR.

ضبط الحجم والحجم المطلوب

تحدّد المُعدِّلات size وwidth وheight وdepth الحجم المفضّل للمحتوى. للإشارة إلى الحجم الدقيق للمحتوى، استخدِم requiredSize وrequiredWidth وrequiredHeight وrequiredDepth. يجب تحديد هذه الوحدات في dp، وللتحويل من أمتار إلى بكسل مستقل الكثافة، استخدِم Meter.toDp().

تحديد موضع الدوال المركّبة

offset

ينقل المُعدِّل offset الدالة المركّبة في مساحة ثلاثية الأبعاد على طول المحاور x وy وz. يجب تحديد هذه الوحدات في dp، وللتحويل من متر إلى بكسل مستقل الكثافة، استخدِم Meter.toDp().

rotate

يؤدي المُعدِّل rotate إلى تدوير الدالة المركّبة المحدّدة في المساحة. يمكنك تحديد اتجاه التدوير ومقداره بطرق مختلفة:

  • باستخدام درجة الصوت والانحراف والتدوير، والتي تحدد الدوران حول محاور x وy وz على التوالي،
  • باستخدام axisAngle، وهو Vector3 يمثّل محور الدوران، ومقدار الدرجات التي يجب تدويره حولها،
  • باستخدام Quaternion يمثّل التدوير

rotateToLookAtUser

يؤدي المُعدِّل rotateToLookAtUser إلى تدوير المحتوى باستمرار ليكون مواجهًا للمستخدم في جميع الأوقات. يمكنك أيضًا استخدام هذا المُعدِّل لتحقيق تأثير "اللوحة الإعلانية" حيث يدور المحتوى ليواجه المستخدم على المحور Y مع بقائه في وضع مستقيم ومحاذٍ للجاذبية. لإجراء ذلك، اجمع بين المُعدِّل rotateToLookAtUser والمُعدِّل gravityAligned.

نقل الدوال المركّبة وتغيير حجمها

السماح للمستخدمين بالتحكّم مباشرةً في موضع العناصر وحجمها في المساحة الثلاثية الأبعاد

نقل العناصر

عند توفّر المعدِّل movable وتفعيله، تظهر عناصر تحكّم في واجهة المستخدم قابلة للسحب تتيح للمستخدم نقل العنصر في مساحة ثلاثية الأبعاد. يمكنك تطبيق معدِّلات movable على Subspace بالكامل ومكوّنات التنسيق المكاني (مثل SpatialRow وSpatialColumn) والمكوّنات الفردية (مثل SpatialPanel وSpatialGltfModel).

يتم تحديد السلوك المحدّد لهذه الحركة من خلال السمة movePolicy المقدَّمة:

  • ‫MovePolicy.Default (أو MovePolicy.system()): يتعامل النظام مع الحركة بالكامل ويحتسب تلقائيًا الوضعية الجديدة والمقياس الجديد ويطبّقهما استنادًا إلى إدخال المستخدم.
  • ‫MovePolicy.custom(): يحسب النظام قيمة Pose المستهدَفة استنادًا إلى البيانات التي تم إدخالها، ولكن لا يطبّقها تلقائيًا على العنصر المرتبط. هذا مفيد لتقييد الحركة أو إنشاء حركة مخصصة في تطبيقك.
  • ‫MovePolicy.anchor(): تتيح للمستخدم تثبيت العنصر القابل للنقل على الأسطح التي يتم رصدها في العالم الحقيقي.

الدوال المركّبة الثابتة

لتتمكّن من تثبيت دالة مركّبة لمساحة فرعية قابلة للنقل على أسطح في العالم الحقيقي، مرِّر MovePolicy.anchor() إلى المُعدِّل movable. تتيح هذه السياسة للمستخدمين تثبيت العناصر (مثل SpatialPanel وSpatialGltfModel) على الأسطح المادية، مثل الطاولات أو الجدران أو الأرضيات.

يمكنك فلترة الأسطح التي تم رصدها والتي يمكن للعنصر الالتصاق بها باستخدام المَعلمات التالية (إذا تُركت فارغة، يمكن للعنصر الالتصاق بأي سطح تم رصده):

  • ‫anchorPlaneOrientations: مجموعة من قيم PlaneOrientation (Horizontal أو Vertical أو Any).
  • ‫anchorPlaneSemantics: مجموعة من قيم PlaneSemantic (Wall أو Floor أو Ceiling أو Table أو Any).

تغيير حجم العناصر

عند توفّر المعدِّل resizable() وتفعيله، ستظهر عناصر تحكّم في واجهة المستخدم تتيح للمستخدم تغيير حجم العنصر في المساحة الثلاثية الأبعاد. يتم تحديد السلوك المحدّد لتغيير الحجم من خلال السمة resizePolicy المقدَّمة:

  • ‫ResizePolicy.default(): يتعامل النظام تلقائيًا مع إيماءة تغيير الحجم ويطبّق الأبعاد الجديدة على المحتوى.
  • ‫ResizePolicy.custom(): يوفّر النظام SpatialResizeEvent ولا يطبّق تلقائيًا نتيجة تغيير الحجم على العنصر المرتبط.

تغيير مظهر الدوال المركّبة

alpha

يضبط المُعدِّل alpha درجة تعتيم العنصر وعناصره الثانوية، حيث يمثّل 0f الشفافية الكاملة ويمثّل 1.0f التعتيم الكامل.

scale

يغيّر المُعدِّل scale حجم محتوى العنصر القابل للإنشاء على طول المحاور الأفقية والعمودية ومحاور العمق.

الاختبار وتسهيل الاستخدام

semantics

يضيف المُعدِّل semantics دلالات إلى عقدة التنسيق لاستخدامها في الاختبار وأدوات تسهيل الاستخدام. يُرجى الاطّلاع على الدلالات في Jetpack Compose وSemanticsModifier.

testTag

المعدِّل testTag هو اختصار لـ SemanticsPropertyReceiver.testTag، ما يسمح لأُطر عمل الاختبار بالعثور على العنصر في الاختبارات.