Uygulamanıza uzamsal video ekleme

Jetpack XR SDK'sı, düz yüzeylerde stereoskopik yan yana video oynatmayı destekler. Stereoskopik videoda her kare, izleyicilere derinlik hissi vermek için sol göz ve sağ göz görüntüsünden oluşur.

Diğer form faktörlerinde Android geliştirme için kullanılan standart medya API'lerini kullanarak Android XR uygulamalarında stereoskopik olmayan 2D video oluşturabilirsiniz.

Jetpack XR SDK'sını kullanarak yan yana video oynatma

Yan yana videoda her stereoskopik kare, yatay olarak birbirine bitişik iki resim olarak sunulur. Üst ve alt video kareleri birbirine bitişik olarak dikey olarak düzenlenir.

Yan yana video bir codec değil, stereoskopik kareleri düzenlemenin bir yoludur. Yani Android tarafından desteklenen codec'lerden herhangi birinde kodlanabilir.

Media3 Exoplayer'ı kullanarak yan yana video yükleyebilir ve ardından yeni StereoSurfaceEntity'ı kullanarak videoyu oluşturabilirsiniz. StereoSurfaceEntity oluşturmak için aşağıdaki örnekte gösterildiği gibi StereoSurfaceEntity.create işlevini çağırın.

stereoSurfaceEntity = StereoSurfaceEntity.create(
            xrSession,
            StereoSurfaceEntity.StereoMode.SIDE_BY_SIDE,
            // Position 1.5 meters in front of user
            Pose(Vector3(0.0f, 0.0f, -1.5f), Quaternion(0.0f, 0.0f, 0.0f, 1.0f)),
            StereoSurfaceEntity.CanvasShape.Quad(1.0f, 1.0f)
        )
        val videoUri = Uri.Builder()
            .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
            .path(R.raw.sbs_test_video.toString())
            .build()
        val mediaItem = MediaItem.fromUri(videoUri)

exoPlayer = ExoPlayer.Builder(this).build()
exoPlayer.setVideoSurface(stereoSurfaceEntity.getSurface())
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
exoPlayer.play()

Jetpack XR SDK'sını kullanarak 180 derece ve 360 derece video oynatma

Alpha02 ve üzeri

1.0.0-alpha02 sürümünden itibaren StereoSurfaceEntity, yarım küre şeklindeki yüzeylerde 180° videoların ve küresel yüzeylerde 360° videoların oynatılmasını destekler. Videolar stereoskopik ise dosyalar yan yana biçiminde olmalıdır.

Aşağıdaki kodda, StereoSurfaceEntity'ün 180° yarım küre ve 360° küre üzerinde oynatılması için nasıl ayarlanacağı gösterilmektedir. Bu kanvas şekillerini kullanırken sürükleyici bir deneyim sunmak için kullanıcının kafa duruşundan yararlanarak yüzeyi konumlandırın.

// Set up the surface for playing a 180° video on a hemisphere.
hemisphereStereoSurfaceEntity =
    StereoSurfaceEntity.create(
        xrCoreSession,
        StereoSurfaceEntity.StereoMode.SIDE_BY_SIDE,
        xrCoreSession.spatialUser.head?.transformPoseTo(
            Pose.Identity,
            xrCoreSession.activitySpace
        )!!,
        StereoSurfaceEntity.CanvasShape.Vr180Hemisphere(1.0f),
    )
// ... and use the surface for playing the media.
// Set up the surface for playing a 360° video on a sphere.
sphereStereoSurfaceEntity =
    StereoSurfaceEntity.create(
        xrCoreSession,
        StereoSurfaceEntity.StereoMode.TOP_BOTTOM,
        xrCoreSession.spatialUser.head?.transformPoseTo(
            Pose.Identity,
            xrCoreSession.activitySpace
        )!!,
        StereoSurfaceEntity.CanvasShape.Vr360Sphere(1.0f),
    )
// ... and use the surface for playing the media.