Menambahkan video spasial ke aplikasi

Jetpack XR SDK mendukung pemutaran video berdampingan stereoskopik ke permukaan datar. Dengan video stereoskopis, setiap frame terdiri dari gambar mata kiri dan mata kanan untuk memberi penonton kedalaman tampilan.

Anda dapat merender video 2D non-stereoskopik di aplikasi Android XR dengan API media standar yang digunakan untuk pengembangan Android pada faktor bentuk lainnya.

Memutar video berdampingan menggunakan Jetpack XR SDK

Dengan video berdampingan, setiap frame stereoskopik ditampilkan sebagai dua gambar yang disusun secara horizontal berdekatan satu sama lain. Frame video atas dan bawah diatur secara vertikal berdekatan satu sama lain.

Video berdampingan bukan codec, melainkan cara mengatur frame stereoskopik, yang berarti dapat dienkode dalam salah satu codec yang didukung oleh Android.

Anda dapat memuat video berdampingan menggunakan Media3 Exoplayer, lalu merendernya menggunakan StereoSurfaceEntity baru. Untuk membuat StereoSurfaceEntity, panggil StereoSurfaceEntity.create, seperti yang ditunjukkan dalam contoh berikut.

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()

Memutar video 180 derajat dan 360 derajat menggunakan Jetpack XR SDK

Alpha02 dan yang lebih tinggi

Mulai Versi 1.0.0-alpha02, StereoSurfaceEntity mendukung pemutaran video 180° di permukaan hemisfer dan video 360° di permukaan bola. Jika video bersifat stereoskopik, file harus dalam format berdampingan.

Kode berikut menunjukkan cara menyiapkan StereoSurfaceEntity untuk pemutaran di hemisfera 180° dan bola 360°. Saat menggunakan bentuk kanvas ini, posisikan permukaan dengan memanfaatkan pose kepala pengguna untuk memberikan pengalaman yang imersif.

// 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.