כשעובדים עם מודלים תלת-ממדיים, ערכת Jetpack XR SDK תומכת בתקן הפתוח glTF 2.0. כשמערכת Android XR מעבדת אפליקציות שנבנו באמצעות Jetpack XR SDK, מודלים תלת-ממדיים יעובדו באמצעות טכניקות של עיבוד פיזיקלי(PBR) שצוינו בתקן glTF 2.0 (יחד עם תוספים נתמכים). ברוב הכלים ליצירת תוכן דיגיטלי (DCC), כמו Autodesk Maya, Maxon ZBrush, Blender ו-Spline, אפשר לייצא מודלים תלת-ממדיים בפורמט glTF (קבצים עם הסיומת .gltf או .glb).
אם המשתמש או האפליקציה שלכם ציינו SpatialEnvironment skybox של סביבה, מודלים תלת-ממדיים יוארו באמצעות נתוני תאורה שסופקו על ידי ה-skybox של הסביבה. חומרים מחזירי אור והדגשות ספקולריות ישקפו גם את תיבת השמיים של הסביבה. אם הפעלתם את ההגדרה 'העברה', התאורה, ההשתקפויות וההדגשות הספקולריות יתבססו על חדר מואר עם מקור אור יחיד.
סקירה מהירה של החומרים הנתמכים מופיעה במאמר glTF PBR Properties באתר Khronos. כדי ללמוד איך להתאים אישית את המודלים התלת-ממדיים באמצעות המאפיינים האלה ומאפיינים אחרים, אפשר לעיין במאמר בנושא התאמה אישית של מודלים תלת-ממדיים באפליקציה.
הוספת קובץ glTF לתיקיית הנכסים
אחרי שיש לכם קובץ glTF, השלב הבא הוא להוסיף אותו לספריית הנכסים ב-Android Studio. מומלץ ליצור ספרייה בשם models כדי לארגן טוב יותר את סוגי הנכסים.

הוספת אובייקט תלת-ממדי באמצעות SpatialGltfModel
Android XR תומך בפורמט glTF למודלים תלת-ממדיים, שבדרך כלל נשמרים כקבצים מסוג .glb. כדי להוסיף את האובייקטים האלה לפריסה, משתמשים ב-composable SpatialGltfModel. ממשק ה-API הזה מפשט את התהליך של טעינת נכסים וניהול המצב שלהם.
כדי להציג מודל, קודם צריך להגדיר את המקור והמצב שלו באמצעות rememberSpatialGltfModelState. אפשר לטעון מודלים מהתיקייה assets של האפליקציה, מ-URI או מ-raw data.
val modelState = rememberSpatialGltfModelState( source = SpatialGltfModelSource.fromPath( Paths.get("models/model_name.glb") ) )
אחרי שמגדירים את המצב, משתמשים ברכיב הקומפוזבילי SpatialGltfModel כדי לעבד אותו במרחב משנה.
SpatialGltfModel(state = modelState, modifier = SubspaceModifier)
מיקום של מודל תלת-ממדי באמצעות Compose SceneCoreEntity
כדי להציב מודל תלת-ממדי באמצעות SceneCoreEntity, קודם צריך לטעון את קובץ ה-glTF לזיכרון באמצעות GltfModel.create(). אחר כך אפשר להציב מודל תלת-ממדי בSceneCoreEntity כדי לגשר בין רכיבי SceneCore לבין פריסות Compose for XR. פרטים נוספים מופיעים במאמר בנושא שימוש ב-SceneCoreEntity כדי למקם אובייקט תלת-ממדי בפריסה.
הצבת מודל תלת-ממדי באמצעות Jetpack Scenecore
כדי לטעון את מודל ה-glTF, קוראים לפונקציה GltfModel.create().
val gltfModel = GltfModel.create(session, Paths.get("models", "saturn_rings.glb"))
בשלב הזה, המודל נטען לזיכרון, אבל הוא עדיין לא מוצג. אם יש לכם הרבה מודלים בתלת-ממד לטעינה או שהמודל גדול, מומלץ לטעון אותם באופן אסינכרוני מראש. כך המשתמשים לא צריכים לחכות שהמודלים שלכם ייטענו לזיכרון.
מוסיפים את קובץ ה-glTF אל ActivitySpace. מבצעים קריאה ל-method GltfModelEntity.create כדי ליצור ישות ולהציב אותה ב-ActivitySpace. מומלץ לוודא שהאפליקציה במצב שמאפשר יכולות מרחביות.
if (session.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT)) { val gltfEntity = GltfModelEntity.create(session, gltfModel) }
עכשיו, כשמריצים את האפליקציה, אמור להופיע הדגם התלת-ממדי שנטען.

טעינת מודל תלת-ממד באמצעות Scene Viewer
אם אתם מחפשים את הדרך הפשוטה ביותר לטעון מודל תלת-ממד עם יכולות בסיסיות של אינטראקציה, אתם יכולים להשתמש ב-Scene Viewer כמו במכשיר נייד. ההבדל העיקרי בין Scene Viewer ב-Android XR לבין Scene Viewer בנייד הוא שב-Scene Viewer יש תמיכה רק בפרמטר file URI שמפנה לקובץ glTF, וכל הפרמטרים האחרים מוזנחים.
Scene Viewer היא אפליקציה נפרדת שמופעלת באמצעות intent ופועלת במצב Full Space. כתוצאה מכך, כשתפעילו אותו, האפליקציה לא תהיה יותר גלויה ו-Scene Viewer יקבל את הפוקוס. כל הסביבות ששיניתם יאופסו להעדפות המערכת של המשתמש.
דוגמה לשימוש ב-Intent כדי להציג קובץ glTF ב-Scene Viewer ב-Android XR:
val url = "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Avocado/glTF/Avocado.gltf" val sceneViewerIntent = Intent(Intent.ACTION_VIEW) val intentUri = Uri.parse("https://arvr.google.com/scene-viewer/1.2") .buildUpon() .appendQueryParameter("file", url) .build() sceneViewerIntent.setData(intentUri) try { startActivity(sceneViewerIntent) } catch (e: ActivityNotFoundException) { // There is no activity that could handle the intent. }
מידע נוסף על אפשרויות האינטראקטיביות ב-Scene Viewer זמין במסמכי התיעוד בנושא עיצוב מודלים תלת-ממדיים.
תוספי glTF
Jetpack XR SDK תומך בכמה תוספי gfTF שמרחיבים את היכולות של מודלים תלת-ממדיים. היכולות האלה זמינות גם דרך GltfModelEntity וגם דרך Scene Viewer.
KHR_animation_pointerKHR_draco_mesh_compressionKHR_lights_punctualKHR_materials_clearcoatKHR_materials_sheenKHR_materials_unlitKHR_materials_variantsKHR_mesh_quantizationKHR_texture_basisuKHR_texture_transformEXT_texture_webp