THETA Sの動画をopenframeworksで全天球再生(その2)
前回の記事の後に、 もともと参考にさせていただいていた@dotchangさんからアドバイスをいただきました。
@keshin_sky ブログ引用ありがとうございます。OFなら
https://t.co/edG0VF8VoT
のように、img.bind()で球に正距円筒図法の画像をテクスチャマッピングするだけで充分だったりします。ご参考まで〜。
— dotchang (@dotchang) 2015, 12月 5
で、それを踏まえて実装したら、本当に簡単に再生でき、アプリが60FPSも出るように(元動画は30FPSですが、、)
@dotchangさんの以下の記事を元に、ofImageをofVideoPlayerにほぼ変えただけです。FBOも必要ない。
- github=> dotchang/ricohThetaExample · GitHub
一応、変更内容を書くと
- setup()で img.loadfile()の代わりに動画読み込み
//setup() get_angles(filename.data()); myPlayer.load(filename); //ofVideoPlayer myPlayer; myPlayer.play();
- update()で動画アップデート
//update()
myPlayer.update();
- draw()でmyPlayerを直接bind() ※FBOは直接bind()できませんでした。
//draw() cam.begin(); ofPushMatrix(); //ofMultMatrix(m_yaw); // adjust north ofMultMatrix(m44.getInverse()); ofMatrix4x4 rot(0,-1,0,0, 0,0,-1,0, 1,0,0,0, 0,0,0,1); ofMultMatrix(rot); myPlayer.bind(); ofSphere(10); myPlayer.unbind(); ofPopMatrix(); cam.end(); ofSetWindowTitle(ofToString(ofGetFrameRate(), 0));//フレームレート表示
pointCloudを活用するなら前回の方法も良いですが、動画再生、画像加工なら今回の方が断然良いですね。
とても勉強になりました。
--
追記12/9
- iOS でもひとまず、oF0.8.4で軽々動作しました。 draw()の
myPlayer.bind();
は
myPlayer.getTextureReference().bind();
に変更しています。
- 作者: Denis Perevalov,Igor Tatarnikov
- 出版社/メーカー: Packt Publishing
- 発売日: 2015/04/23
- メディア: ペーパーバック
- この商品を含むブログを見る