iOS/Androidで4k動画を再生できるか調べる + Unityプラグイン

360°動画を再生するUnityスマホアプリ増えてる。
スマホで360°動画を再生するときにやはり気になるのは、解像度。画面の解像度はどんどん上がっているのに、FullHDだとかなり汚く見えてしまう。

iOSではiPhone6s以上から。Androidでも2016年に発売されているものは4k再生をサポートしているのが多い。
そこで、サポートしているものは4k, それ以外はFullHDを再生するために、そもそも指定のフォーマットをサポートしているか調べるネイティブプラグインを作ってみました。

Unity5.6のVideoPlayerはいけてるけど、まだAndroidはサポートしてないので、EasyMovieTextureで確認。

GitHub - asus4/unity-video-supported-plugin: Check iOS/Android supported video format from unity

使い方は簡単。

using AppKit;

VideoSupported.IsSupported(1920, 1080, 29.97f);
VideoSupported.IsSupported(3840, 1920, 29.97f);

手元の環境ではうまく言ってるんだけど、Android端末をそんなに持ってないので、
試して問題合ったらプルリクください。

OpenCV3 + opencv_contrib on macOS

OpenCV3のトラッキングAPIを使いたくって、macOSでインストールが面倒だったので、メモ。

TL;DR

MacBook Pro (15-inch, 2016)で動く
OpenCV 3.2.0(相当)のフレームワーク置いときました。
http://ibu.tokyo/downloads/opencv-3.2.0.framework.zip

homebrewで入らない

プロトタイプ作業だったので、pythonでやりたいし、homebrewで簡単に入れたかった。

理想はこのオプション

brew install opencv3 --with-contrib --with-ffmpeg --with-python3 --without-python

なんかエラー出る…

brew install opencv3 --without-python --with-python3
brew install opencv3 --with-contrib

これでも駄目。issue見てもいまいちわからず。
なにもオプションつけないビルド済みのもの以外入らないんじゃ…
余談だけど最近のhomebrewはインストールみすると、関連するissueをログに吐いてくれるの便利。

あきらめてソースからビルド

最新のリリースv3.2.0を以下からダウンロード。

github.com github.com

opencv_contrib/README.md
に書いてある方法はなぜかめんどくさい方法になっていたけど、frameworkビルド用のスクリプトが用意してあるぽい。

python opencv/platforms/osx/build_framework.py --contrib opencv_contrib build

やったービルドできた。
しかし実行するとTracking moduleが入ってない…。

std::cout << cv::getBuildInformation() << std::endl;

でビルド情報が見れるらしく。
どうやら、依存しているdnnのせいで、trackingモジュールが入ってないぽい。
dnnはディープ・ニューラル・ネットワークのモジュールでCaffeのモデルを読んだりできるらしい。
dnnのCMakeListsを読むと、CUDA使えない環境では使えないようにしている。これ、AMD RadeonMacじゃ使えないんじゃ…。

あとで調べるとADMでCUDA動かすプロジェクトもあるみたい。だけど流石にそこまではできない。 CUDAをRadeonで動かす(導入編) - Fixstars Tech Blog /proc/cpuinfo

masterビルドできる

で半分諦めるものの、Githubの中を追っているうちに、masterブランチでは修正されていることに気づいた。
同じ方法でmasterブランチ上でビルドすると今度は無事にdnnモジュール、trackingモジュールも入った。

ビルドしたモジュール: core flann imgproc ml objdetect phase_unwrapping photo plot reg surface_matching video xphoto bgsegm dnn face fuzzy imgcodecs shape videoio xobjdetect highgui superres bioinspired dpm features2d line_descriptor saliency text calib3d ccalib datasets rgbd stereo structured_light tracking videostab xfeatures2d ximgproc aruco optflow stitching world

入ってないモジュール: cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python2 python3 ts viz cnn_3dobj cvv dnn_modern freetype hdf matlab sfm

macは好きだけど、開発ではどんどん使えない子になっている…。

サンプル

contribに入っている、ArUcoのマーカーを吐き出すだけの、一番シンプルなサンプル。 github.com

Xcodeでビルドするときに依存ライブラリはこちら。 f:id:asus4:20170521102143p:plain

cv::imwriteとうのファイル読み書きにWebP.framework入れろって怒られたので、iOS用のリンクしたら普通にビルドできた。
oFなどで使う場合はimwrite,imread使わないので、WebPなくても大丈夫。


マスト丼にログ残す実験をして、
ハマったところを後でブログに残そうって思ったりするのでhatenaさんとか、qiitaさんとかのインスタンスが立ったらいいなー。
https://mstdn.jp/@asus4

モデルアニメーション

Unityで水のアニメーションをしたいって要件があった。
Nvidia FLEX使ったけど、今回の用途だとちっと違って、事前のシミュレーション結果をアニメーション制御したほうが良さそうだった。

でもAlembic使うほどではないときに。

https://camo.githubusercontent.com/3db6b584b7241dd03d3e4905df0595d32e8b5a38/68747470733a2f2f692e6779617a6f2e636f6d2f66343433376139633639656636313336613438346561346332336137643462332e676966

github.com

(Alembic使えればこっちでいいと思う) github.com

iPhone 7 TAPTIC Engineどれほどのものなのか…

iOS その3 Advent Calendar 2016 - Qiita
16日目の記事です。

iPhone7 plusを買ったのですが、TAPTIC Engineいいですね。
iPhone 7 / iPhone 7 PlusのTAPTICがどれほどなのかを研究する記事です。

UI

UIアニメーションに細かに振動が付いています。
このUIの動きに全部ちがう振動が付いているの気付きましたでしょうか。

f:id:asus4:20161213215933g:plainf:id:asus4:20161213215939g:plainf:id:asus4:20161213220040g:plainf:id:asus4:20161213220052g:plain

FlashではUIアニメーションと音が切っても切れない中でしたが、iPhoneではUIアニメーションと振動がセットになってるんですね。
上から落ちてくるタイミングが完全に合ってるのとか、凄いと思うんだけど。

こちらの記事も面白かったです。
iPhone 7のTaptic Engineが今後のスマホインターフェースを変えるかもの話 - FICC Workbook

さらに自分で叩くことで新しい触感ファイルを作れます。
f:id:asus4:20161213220059g:plain

のりのりの着信音

これは6sからの変化ですが、気になったのは着信音。
TAPTICが以前のバイブレーションとどれくらい変わっているのかの動画がありました。


iPhone 6s Plus Taptic Engine vs iPhone 6 Plus Vibration Motor

圧倒的に表現力が上がってますね。
何をやってるか分析のために、一番有名な着信音の、振動部分の採譜をしてみました。


Score iphone ringtone with taptic

  • ハイハットのクローズが短い振動
  • オープンが長めの振動

完全に着信音に合わせてきてやがります。

UnityのゲームからTAPTICを試す

こんだけ表現力あるんだし、 UI以外の演出にも使えそうだなーと思ってUnityから使えるようにしてみました。
アニメーションに合わせて震えたり、ダメージで揺れたり。できるかなーと。

f:id:asus4:20161213222618g:plain

github.com

  • UINotificationFeedbackGenerator
  • UISelectionFeedbackGenerator
  • UIImpactFeedbackGenerator

APIを叩けるようにしてみました。機会があったらゲームとかで使ってみてほしいです。

明日は @soranoba さんです。

カレーまとめ 2016年4月〜

前回の投稿で皆さんに教えてもらった分も含めて今年も色々行きました。 重複してるのは、好きだからか、手軽にいけるから。

前回のまとめはこちら。 asus4.hatenablog.com

家が三茶、オフィスが渋谷なのでその近辺が多い。


前回のも含めた地図



Cafe Red Book @中目黒
ここもFacebook経由で教わった。お薦めカフェカレー。

TOKYO SPICE CURRY @代々木八幡 週一木曜昼だけBAR SARAKAがカレー屋さんになる。常連客が全員知り合い。みたいな感じだった。


カレーの惑星 @下北沢


渋谷 ネパリコ いいダルバート
Facebookで教えてもらってすぐ行った。ダルバートは恵比寿のソルティモードしか知らなかったけど、ここも良かった。


チリチリ
何回か食べてる気がする…


あしたの箱@ 恵比寿
昼だけの間借りカレー


グルガオン 銀座


curry 草枕 新宿御苑


マリーアイランガニー @渋谷
辛くてよい。


SUNVALLEY HOTEL @ 三軒茶屋
カレーと見せかけて、ビリヤニ


カレーノトリコ @ 秋葉原
何回か行ってるなあ


香食楽 KaKuRa
便秘は一瞬でなおります。


シブ マハール@渋谷

Amin 三田/田町 入り口は完全に居酒屋。ギャップよい


チャオタイ道玄坂店


ブルーパパイア @恵比寿


リトルショップ 渋谷


nikko2 @ 恵比寿


VINAYA @ 広尾


yinega 渋谷
オフィスから一番ちかい


日乃屋カレー秋葉原店


カンティプール @ 渋谷 一人前とは…


マリーアイランガニー @渋谷 肉球みたいな


ケニックカレー @渋谷


コーヒー ガーデン @ 大阪 西三荘
出張行った時に。圧倒的 家カレー


ヤーマ・カーマ @ 雪が谷大塚


フラヌール@渋谷 タバコ屋さんのステーキカレー

[牛兵衛 草庵 西武渋谷店]

カレー好きがばれていて奥さんの会社の同僚からスパイスセット戴くという。ありがとうございます!


カレー食堂 心 下北沢店


カリガリ @渋谷


いんでぃら @渋谷


Kenick curry 二回目

永山本店 渋谷宮下公園