9連休終わり.仕事しないと.
*[Android] カメラのフォーカス機構で測距
もう何年も前からやろうと思ってたネタに手を付けることにしたのでその準備.
GalaxyNexusのカメラで,対象物までの距離とオートフォーカスにかかる時間を計測してみた.メモ.
カメラをFOCUS_MODE_INFINITYに設定した状態から,FOCUS_MODE_AUTOに切り替えてオートフォーカス完了のコールバックが呼ばれるまでの時間.
明るさとか,色々な要因でかなりばらつくだろうけど,10~50cmの範囲なら距離が測れそう.
最初に当たりをつけて,そこからフォーカスを前後に動かすような処理をしてるのかも.
FOCUS_MODE_AUTOじゃなくて,FOCUS_MODE_MACROだとまた変わってくるので,組み合わせれば精度上がるのかも.もう少しカメラ内の情報を色々取れるAPIあると良いんだけどなあ.
本当はフォーカス処理中の画像を処理して,あんなことやこんなことをしたい.
休みがあと1ヶ月くらい欲しい.
Nexus7と100円ショップの虫眼鏡でOculusもどき作るのは,だいたい一段落.
加速度センサからの入力で映像をコントロールするのもありだけど首とか疲れる.加速度と角速度を擬似的に体験できればコントローラーでの操作でも良いなあ.むしろそっちが欲しい.寝たまま遊べるし.三半規管とかに電流流すとコントロールできるような話もあるし,そっちを調べようかな.
あとはNexus7(2013)には背面カメラがあるので,カメラの映像も色々使えそうだなあ.カメラで手を認識するとか良さそう.
*[Android] OpenGLまわりのデバッグ
今回,Adreno Profilerを使ってみたので感想です.
AndroidでOpenGLを使うコードをデバッグするとき,どのFBOのレンダリングに失敗しているのかとか,テクスチャちゃんと読み込めているのかとか知りたいですね.
Nexus7(2012)のGPUはTegra 3が載ってたのでNVIDIAのPerfHUD ESが使えたけど,新しいやつはQualcommなので,Adreno Profilerを使ってみました.
まずは,Adreno Profilerをインストール.ダウンロードのためにアカウント作る必要あります.Windowsマシンが必要です.Macしかない人は(お使いのMacを今すぐ窓から投げ捨て)ThinkPadを買いましょう.
Adreno Profilerを起動する前に,
adb.exe shell setprop debug.egl.profiler 1
これで,adb経由でGPUの情報が取得できるようになる.たぶんOSを再起動するとリセットされるので,デバッグ時に毎回やる必要があるっぽい.とりあえずrootとかも必要ない.
あとはadbがpathの通った場所にあればConnectボタンを押すだけで接続できる.adbの接続がない場合もネットワーク経由でデバッグもできる.被デバッグアプリにandroid.permission.INTERNETが必要.
(昨日から使ってるモデルはLat式ミクです)
テクスチャも含めて,あるフレームの描画に使った全データが見れるので何かあったときも安心です.PC上でOpenGL ESの命令をエミュレートしたりするので,最近のグラボを積んでないと色々警告が出たりしますが,だいたい動きます.
ただ,急いで操作するとよく落ちる.
昨日作ったやつをもう少し観察してみると,テクスチャの読み書きがボトルネックになってるっぽいので,どうにかしないとかなあ.2048x2048のFBOを2枚使ってたのを1600x1600に落としたらとりあえず30fpsは確保できた.NPOTなサイズのテクスチャになってしまうけど,とりあえず動くし良いか.あとシェーダのfloatの精度をmediumpからhighpに上げたら少し画質が改善した(気がする).Adrenoってmediumpとhighpは同じかと思ってたら違うのか.
*昨日作ったやつ
MikuMikuDroid 0.25に対するパッチ.oculus_diff.patch適当なので既存の色々なものがたぶん動かなくなる.
使ってて気づいたけど,Nexus7がとても熱くなる.そして,USBケーブルつないでる状態でもバッテリー減る...
追記:githubに置きました
Google Adsenseに新生銀行の口座を登録しようとして,何度も「チャレンジ デポジット失敗のお知らせ」を受け取り続けてたのだけど,名前をローマ字で入力したら通った.漢字,カタカナ,氏名の間のスペースの有無を色々試してたのだけど,ローマ字が正解だったのかなあ.よくわからない.
昨日作ったOculus Riftもどきで何か見れるようにする日.
*[Android] Nexus7でOculus Riftもどきを作る(ソフトウェア) とりあえず初音ミクを動かす
Oculusといえば,とりあえずMMDかなとおもったので,いろいろ.
最初,昔書いたmqo読む奴をベースに手をつけてみたけど,どう考えても面倒なので,MMDのモーション読める何かを探す.
MikuMikuDroidが良さそう.ソース公開されているし,物理演算も実装されてるっぽい.
http://sourceforge.jp/projects/mikumikudroid/
ソースをダウンロードしてきて適当に書き換える.
...
できた.
vertexシェーダを書き換えるか,一旦テクスチャにレンダリングしてからfragmentシェーダで加工するか悩んだけど,フラグメントシェーダでやったほうが楽だし汎用的になるのでフラグメントシェーダでやることにした.MikuMikuDroidにFBO扱うクラスが入ってたのでそのまま使えたのと,フラグメントシェーダは前に書いた奴があったので,流用.
シェーダ追加して,MikuRendererGLES20とCoreLogic周りを少しいじっただけでいけた.
100円ショップのルーペのレンズに合わせてシェーダのパラメータをいじるのに苦戦.そもそも,ちゃんと球面なのかなこのレンズ.そして色収差ひどい.これはソフトウェアで吸収するの辛いし一旦諦めよう.
MikuMikuDroid のソースに加速度センサー扱えそうなコードが入ってたけど,たぶん未完成でよくわからない動作するので,やっつけで実装しなおして埋め込む.
解像度が高いのと,スタンドアロンで動くのは本物のOculusより良いですね.
mmd.gl.enchant.jsも使ってみるかなあ.Androidでまともに動くようにするの大変そうなイメージだけど.
今日も休みです.
新宿の東急ハンズ行ったり,100円ショップ廻ったり.
新宿の100円ショップ廻ったり,東急ハンズ行ったり,紀伊国屋で本を買ったり.
一日に二度も新宿と家を往復してしまった.
*[Android] Nexus7でOculus Riftもどきを作る(ハードウェア)
Oculus RiftのHD版が欲しくなったので作ることにしました.
5月にOculusで遊んだときからやりたかったのと,先日のハッカソン中にまたOculusに触ってやる気が復活しました.
今日は試しにプロトタイプ作ります.
材料
-
ルーペ4個.焦点距離が長かったので,レンズを2枚重ねた
-
色紙2枚
-
両面テープ
-
ドアの隙間とか埋めるスポンジ
-
(あと,Nexus7)
ほとんど100円ショップ.スポンジだけハンズで買った.レンズはいろいろ試した結果,新宿三丁目のセリアで買った倍率5倍と書かれたルーペを2枚重ねるのが良さげだった.
ちなみに,ルーペの倍率は焦点距離に反比例しているのだけど,調べてみると,
倍率 = 250 / 焦点距離 + 1
という式の値が表示されてることが多いらしい.5倍なら焦点距離は63mmくらいになるはずだけど,買ってきたやつのレンズは,もっと焦点距離長そう...
切る
色紙を適当に切ります.
レンズの間隔だけど,鏡みながら両眼の瞳の間隔を測ると65mmくらいだったので,それに合わせる.思ったより間隔狭いんですね.Oculusの動画とかも見てみたけど,たぶんこれくらいで合ってる.実はOculus Riftの実物を持ってないので,色々適当.
ちなみに,ベッドの上にコンパネ(もちろんコントロール・パネルではなくてコンクリート・パネルの方)の切れ端を置いて作業してます...そういえば,このコンパネ,NHKロボコンで使ったやつだなあ.
組み立てる
両面テープで貼り合わせるだけです.
上からNexus7を差し込むようにしたけど,これだと微妙な隙間から部屋の明かりが中に入るので気になる.ちゃんと蓋をするか,横から差しこむようにすればよかったかも.
遮光用にアルミテープとかも買ってきたのだけど,Nexus7はすぐ出せるようにしとかないと操作できないしなあ.
反対側.こっちはフィットするようにスポンジとかを調整中.
内側のレンズがついてるパーツは前後に動くようになってるけど後で固定しよう.
まとめ
適当に作ったけど,試しにOculus用の映像を出してみると,思ったよりちゃんとOculusしてる.まだ加速度センサとか使えてないので,明日辺りプログラム書こう...
ちゃんとした版を作るために,東急ハンズで材料買ってきたのだけど,これで満足してしまったかも.
至近距離で使うことを考えると,レンズは本当は片面が平坦に近いやつのほうが見やすそう.
ソフトウェア編へ続く
新生銀行の口座を管理してるスクリプトがここ何日か警告出してたので気づいたのだけど,パワーダイレクトのデータの送信先URLが.co.jpから.comになったの何なのだろ?とても怖いのだけど,トップページからのリンクも特に怪しくないし,SSL証明書は本物っぽいし大丈夫かな.
新生銀行のネットバンキングは,見ていてとても不安になるような気がしないでもないかもしれないかもしれないので,どこか別のところに移動するかなあ.為替手数料が安いから使ってたのだけど,日本円以外を扱う必要もうあまり無いし.
今日も続きのコード書く.
ちょっと風邪っぽいので寝る.
熱海.眠い.
*[kstm.org] ハッカソン 3日目
今日は会議室借りてコード書く.
ラーメン食べた.
*[kstm.org] ハッカソン 2日目
熱海
コード書く日.
海まで行ってきた.
寿司食べた.
Playストアのアルファ版,ベータ版テストを使ってみた.
Google+のサークルやGroupsのユーザを登録できるのか.エラーレポートも収集できるし,便利.
ただ,反映されるのに時間がかかるのどうにかならないのかなあ.数人とかだと,apkを自分で配ったほうが早い.
公開範囲を限定したアプリの配布手段としては良さそう.
ハッカソン
*[kstm.org] ハッカソン @ 熱海
今日から3日間,kstm.orgのハッカソン.
熱海へ.
13時くらいに熱海で御飯食べるという話をしていたので,12時くらいに東京駅行ったらちょうど良い新幹線がなくて13:15に熱海に着いた.
魚とオムライス食べた.
旅館の窓からは(微妙に)海が見えた.
夜はみんなでコード書く.
明日から熱海でコード書いたりする.
来週は一週間休みに.
晩ご飯のついでに,銀座のアップルストアの行列を見に行く.iPhoneは買わないけど.
雨降ってるし外に出たくないなと思ったけど,今日って休みだったのか.
新しいNesus7が届いてた.LTE版.
ラムレーズンのアイスの季節か.
* Nexus 7
APNを追加できないなと思って試行錯誤したけど,simを認識していなかった.simカードを一度抜いて挿し直したら解決.いつも自動的に認識されてるMNCとMCCが未入力になってたから変だと思ったけど,何も言ってくれないのでわかりにくい.前のNexus7はできなかったけど,今度はテザリングできるっぽい?
前のNexus7より薄くて軽いのは明らかに良いな.ちょっと縦方向に長くなってしまったのが残念.
いままで自炊したPDFを20GB分くらい入れてたのだけど,移動するの面倒だな.データは全部ネットワーク上に置きたいけど,あまり良いのがない.Bitcasaが良いのだけど,Android版のクライアントあまり使えないしなあ.
Nexus4も買おうか悩んだけど,買い換えるならLTEとおサイフケータイと防水が欲しいのと,意外とGalaxy Nexusがまだ使えてしまってるので見合わせる.OSさえ最新にアップデートされるなら,2年間は十分使える.
眠い...
自炊本リーダー(仮)を0.1.5にアップデート.
バグ修正.画像の回転周りの処理を今まで適当に誤魔化してたのを,PDFの仕様書に沿ってやるように修正.
ニコニコPlayer(仮)0.2.2にアップデート.
3ヶ月以上放置してたので久しぶりに.要望があったものをいくつか対応したりした.投稿者コメント表示,プレイリストの単一曲ループ,スリープしないのを再生完了時に解除とか.他に細かいところがいろいろ変わってる気がするけど,よく覚えてない.
朝起きて,自炊本リーダー(仮)のバグを直す.
取り込んだ画像の回転にページのRorate値ではなくて,変換行列を使う場合も多いらしいので対応した.様子見て週末にアップデートしよう.
気付いたら昼だったので会社に.
夜は今やってるプロジェクトのチームの飲み会.
Nexus7のLTE版の発売日,9/13になってたので注文した.
タダ飯Gree techtalk行ってきた.広告業界なんでこんなカオスなんだというのと,Impala良さそうというのが感想.ジェンガもらった.HadoopがImpala並のレスポンスになって欲しいところだけど.
久しぶりにAdMob見たら新しくなっていた.日本円に対応してくれたのは良い.
本屋にでも行こうと思って駅まで行ったけど,雨降ってるのと,今月買って積まれてる本とAmazonから届く予定の本を思い出した結果引き返す.なにもしないで帰るのもあれなのと,髪がだいぶ伸びてたので散髪.
*[Android] 自炊本リーダー(仮)
自炊本リーダー(仮)を0.1.4にアップデートしました.
-
画像フォルダを書籍として扱えるように
-
本棚表示時の書籍の複数選択に対応
-
PDF読み込み処理の改善
-
テキストも表示できるように(仮)
内部的にはだいぶ変わったけど,機能的にはあまり変化なしです.読めるPDFは増えたはずだけど,もしかしたら前は読めてたやつがダメになったとかもあるかも...
来週は放置気味のニコニコプレイヤー(仮)をどうにかしよう(たぶん)
*PDFのレンダリング
2013-08-18の続きの実装
-
文字色(g,G,rg,RG)
-
Boldフォント対応(Tf)
-
画像の埋め込み(Do)
-
線分の描画(l)
OpenCVのチュートリアルを表示してみたところ.
一応,読めそうな雰囲気になった.JPEGと白黒2値画像しか対応してないので,一部の画像が壊れてるけど.
面倒だしこのへんでやめておこう.
疲れてるので,夕方まで寝て過ごす.
じっとしていると眠くなるので,夜,その辺を徘徊する.
早めに帰る.
もうすぐ仕事た一段落付くような気がしていたけど,きのせいかもしれない.
夜は中華.
とても注文し過ぎた感あるけど,どうにか食べた.
地震で目が覚めた.
もともと早めに会社にいく予定だったので,午前中に会社に.
今週は早めに会社に行かないといけない.
早く会社に行って,ラジオ体操をすると,お弁当がもらえるのだけど,普段はこの時間に来るのは無理だなあ.
本を買う日.そして,買ってきた本がAmazonからも届く...本を手に取ったとき,この本Amazonで買ったよという通知を出して欲しい.