Skip to content
This repository has been archived by the owner on Dec 26, 2018. It is now read-only.

[prior to 3.0] 06 動画を再生する

Yuya Matsuo edited this page Sep 12, 2016 · 1 revision

MediaPlayerで再生する動画をシーンオブジェクトに表示させることができます。

MediaPlayer mp;
SceneObject obj;
Material material = Material.from(mp);
obj.material(material);

シーン(res/xml/scene.xml)を以下のように作成します。

<scene>
    <object
        id="player"
        width="3.2"
        height="1.8"
        z="-5.0" />
</scene>

SceneObjectにMediaPlayerを設定するコードです。

public class App extends MeganekkoApp {
    private MediaPlayer mediaPlayer;

    public App(Meganekko meganekko) {
        super(meganekko);
        mediaPlayer = MediaPlayer.create(getContext(), Uri.fromFile(getVideoFile()));
        setSceneFromXML(R.xml.scene);

        SceneObject player = getScene().findObjectById("player");
        player.material(Material.from(mediaPlayer));

        mediaPlayer.start();
    }
}

Equirectangular(360度)動画の再生

配置するSceneObjectの形状を球とすることで、Equirectangular動画を再生することができます。このための特別なシーンオブジェクトがあり、<globe>要素で作成できます。

<scene>
    <globe id="player" />
</scene>

あとは上記のAppのコードと同じように再生できます。

ステレオ動画の再生

再生する動画がステレオの場合は、Material.setStereoModeを使用します。

SceneObject player;
player.material().setStereoMode(Material.StereoMode.TOP_BOTTOM); // 上に左目用映像、下に右目用映像がある場合
player.material().setStereoMode(Material.StereoMode.BOTTOM_TOP); // 下に左目用映像、上に右目用映像がある場合
player.material().setStereoMode(Material.StereoMode.LEFT_RIGHT); // 左に左目用映像、右に右目用映像がある場合
player.material().setStereoMode(Material.StereoMode.RIGHT_LEFT); // 右に左目用映像、左に右目用映像がある場合

動画はステレオだが一時的にステレオ表示をやめたい場合は、LEFT_ONLY,TOP_ONLYなどを指定します。

なお、動画ではなく静止画のテクスチャーでも上記の方法でステレオ表示にできます。

Clone this wiki locally