ישויות SceneCore

מכשירי XR רלוונטיים
ההנחיות האלה יעזרו לכם ליצור חוויות למכשירי XR מהסוגים הבאים.
משקפי XR
משקפי XR עם חיבור חוטי

‫SceneCoreEntity הוא רכיב Composable של מרחב משנה שמקשר בין הספריות Jetpack SceneCore ו-Compose for XR, כדי שתוכלו להשתמש בישויות שנוצרו באמצעות SceneCore בפריסות של Compose. כך אפשר ליצור ישויות ברמה נמוכה יותר ורכיבים בהתאמה אישית, ולאפשר ל-Compose לשנות את הגודל, המיקום, ההורה, להוסיף צאצאים ולהחיל משתני שינוי על הישויות האלה.

שימוש בישות SceneCore כדי להציב ישויות בפריסה

בדוגמה הבאה אפשר לראות איך משתמשים בישות SceneCore כדי למקם ישויות בפריסה:

val virtualPixelDensity = session.scene.virtualPixelDensity

Subspace {
    SceneCoreEntity(
        modifier = SubspaceModifier.offset(x = 50.dp),
        factory = {
            SurfaceEntity.create(
                session = session,
                pose = Pose.Identity,
                stereoMode = SurfaceEntity.StereoMode.MONO
            )
        },
        update = { entity ->
            // Compose state changes may be applied to the SceneCore entity here.
            entity.stereoMode = SurfaceEntity.StereoMode.SIDE_BY_SIDE
        },
        sizeAdapter =
            object : SceneCoreEntitySizeAdapter<SurfaceEntity> {
                override fun onLayoutSizeChanged(
                    entity: SurfaceEntity,
                    size: IntVolumeSize
                ) {
                    val extents = FloatSize2d(
                        size.width.toFloat(),
                        size.height.toFloat()
                    )
                    entity.shape = SurfaceEntity.Shape.Quad(extents)
                }
            },
    ) {
        // Content here will be children of the SceneCoreEntity
        // in the scene graph.
    }
}

מידע חשוב על הקוד

  • בלוק המפעל: בבלוק המפעל אתם מאתחלים את הישות SurfaceEntity הבסיסית מ-SceneCore.
  • בלוק עדכון: משתמשים בבלוק העדכון כדי לשנות את המאפיינים של הישות בתגובה לשינויים במצב של Compose.
  • התאמת הגודל: ה-sizeAdapter מעביר את המידות של הישות בחזרה למערכת הפריסה של Compose.

מידע נוסף