2016年7月24日

続・手動で立体視写真は撮れるのか #wf2016s

cariostro02.jpg

前回に懲りずに撮ってきてみました。等身大詩羽先輩よかったです。3Dプリンタってもう主流なんですかね、そうでもないんですかね。

すべて平行法です、気合手動回転なので視差が安定していません、あしからず。

続きを読む "続・手動で立体視写真は撮れるのか #wf2016s"

2016年7月 2日

Telepathy Walkerがやってきた

KICKSTARTERで事前予約していたTelepathy Walkerが届きました。
https://www.kickstarter.com/projects/telepathy/walker-eyewear-for-entertaining-and-smart-walk

$299のHacker Editionは多分adbが通るAndroidだろうと思ってbackしましたが期待通りのものが来ました。わーい。
電源を入れてUSBで接続すると、adb devicesがすでに効いてましたので、Vysorで一通り普通のAndroidっぷりを確認します。

Hacker EditionとConsumer Editionの差分は以下のForumの話が今の所一番わかりやすいです

Telepathy Developer Forum:電源が入ると普通のandroidの画面で何もできません
https://forum.support-telepathy.com/discussion/9/%E9%9B%BB%E6%BA%90%E3%81%8C%E5%85%A5%E3%82%8B%E3%81%A8%E6%99%AE%E9%80%9A%E3%81%AEandroid%E3%81%AE%E7%94%BB%E9%9D%A2%E3%81%A7%E4%BD%95%E3%82%82%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93

公式サイトをたどっていくと、Consumer Edtion向けのチュートリアル動画があり、目の左右設定(上下が反転する)などの方法が確認できます。

Google GlassとTelepathy WalkerとBT-200を同時につけておおむね満足しました。他の使い方はまたあとで考えることにします。

2016.07.03追記
Consumerの方でもadb通るらしいです。

2016年6月30日

プヨグラミングのできない人はとにかく名前がつけられない

「副作用のあるgetter」とかの話。

{
  :
  ある処理();
  :
}
 
private void ある処理() {
  ある処理;
}

こういうコードがあって、
「ある処理は条件Aの時に呼んじゃだめ」ってバグが出た際に
プヨグラミングのできない人は

{
  :
  if (!条件A) {
    ある処理();
  }
  :
}

こういう感じの方法「だけ」で直すんだけど、僕としてはかならず以下の方法とどっちが良いのかを迷って欲しいのです。

{
  :
  よしなにある処理をする();
  :
}
 
private void よしなにある処理をする() {
  if (条件A) {
    return;
  }
  ある処理;
}

で、このあたりのよしな感を、物理名-論理名の話になぞらえて、

「名前で直接どんな操作をやってるかがわかるもの」を物理メソッド
「名前で何を目的とした処理なのかがわかるもの」を論理メソッド

みたいな呼び方をしてるんだけど、あまり効果的に通じてない気がするので誰か良い名前つけてもらえませんか?

2016年5月22日

Google VR - Daydreamまとめ

daydream.png

2016.05.18、Google I/O 2016初日のkeynoteでGoogle VRの新たなプラットフォームとしてDaydreamが発表されました。2016 fallにローンチされるまでまだ開発途中でこれからの話やヴェールに隠されたままの話がありますが、誤解を招く様な書き方をしてるニュースサイトがいっぱいあるのでそれがもう少しマシになるといいな、ということでわかっていること、推測できることをがんばってまとめてみました。

と言いながらきっと不適切な表現や間違ったことをかいてしまっていると思いますので、質問や指摘等は気軽にいただけると喜びます。


○公式サイト以上の情報はあまりない

Google公式:Daydream
https://vr.google.com/daydream/
開発者向けGoogle公式:Google VR
https://developers.google.com/vr/

・上記のサイトの構造が示す通り、Google VR取り組みの1つに属します。
・Daydream Readyと言われる、 ある条件を満たしたAndroidスマートフォンを母艦とします。SoC, Sensors, displayが要件として挙げられております。

MediaTek's Next-Gen SoCs To Support Google's Daydream
http://www.androidheadlines.com/2016/05/mediateks-next-gen-socs-support-googles-daydream.html

MediaTekがDaydream ReadyのSoCを、と発表してるので「現行SoCはDaydream Readyではない」と想像でき、現時点ではせいぜいSnapdragon820をターゲットにしている可能性があります。
また、後で述べますがNexus 6P+N Preview3が比較的残念だったのでSnapdragon810機はDaydream Readyではない可能性もあると思っています。

・向き(モーション)の取得、クリック可能なタッチパネル、App Button、Home Buttonの2つのボタンを持った専用コントローラに対応します。

こちらはすでにGoogle VR SDK(DaydreamとCardboardがSDK上の扱いとしては一緒になりました)として公開されていますので、そのAPIドキュメントから能力が分かります。

Google VR SDK for Unity -
GvrController
https://developers.google.com/vr/unity/reference/class/gvr-controller#properties
Google VR SDK for Android(NDK) -
Controller
https://developers.google.com/vr/android/reference/com/google/vr/sdk/controller/Controller#fields

上記2つを確認するに、Quaternionのorientation、タッチパッドのタッチ操作、タッチパッドのクリック(ClickButtonと名前がついています)、AppButtonのクリックが取得できます。UnityだけなぜかVector3のGyroとAccelがとれます。
結論として、ポジショントラッキングには対応していません。

・HMDは専用のものを開発中

というニュアンスの発表でしたが、これはIPDやレンズ距離、装着性をある程度担保した、そして1stローンチの多くのDaydream readyスマートフォンの外観差をカバーできるだけのCardboard互換機であることが想像がつきます。

なぜなら特別な+αの機能はなく、レンダリングもヘッドトラッキングのためのセンサも「Daydreadm readyスマートフォンの中で全て扱う」と発表されているのですから。

Unreal Engine 4, VR and Daydream - Google I/O
https://www.youtube.com/watch?v=CEoDS__sfWA

あなたがある程度のフリークならこのUE4のDaydream紹介公式動画を見た瞬間、「なんだ、Cardboardか」と少しがっかり(安心)したはずです。

Homido
http://www.homido.com/

homido.jpg

これですね。

・Daydream向けHomeアプリの刷新

現状のCardboardアプリもHomeっぽい動きはしていますし、刷新後もおそらくCardboardで使えるんじゃないですかね。Play・Youtube・StreetView・PhotoアプリのVR対応が予定されています。


○Unity 5

あなたのDAYDREAM(空想)を現実に
http://blogs.unity3d.com/jp/2016/05/19/make-your-daydreams-a-reality/

公式にfor Unity SDK同時追従してもらってる割には手抜きかなぁ、もう少し技術的な情報を付加しておいてくれてもいいのよ?という感想は置いといてですね。

・すでにCardboard SDK for Unityをベースに、Google VR SDK for UnityとしてDaydreamとCardboard両方に対応するバージョンアップが発表同日に公開されています。

Google VR SDK for Unity
https://developers.google.com/vr/unity/

・UnityとしてのNative対応(前述のSDKのようなpluginを追加することなく、の意です)は今夏に予定されている。
・また、関連して期待されているVulkan対応はEarly Accessを3Qには予定されているとのことです。この話がProライセンス持ちユーザ限定のclosed betaなのか、現在のUnity5.4のようなopen betaなのかは現時点ではわかりません。


○Unreal Engine 4

アンリアル エンジン 4 が GOOGLE VR プラットフォーム "DAYDREAM" をサポート
https://www.unrealengine.com/ja/blog/unreal-engine-supports-google-daydream-vr

こちらは動画から開発途中、現時点でのいくつかの情報が読み取れます。HomidoにNexus 6Pが刺さっています、現ver.のコントローラは(エミュレータアプリの画像とは違って)細く、少し厚みがあることがわかります。

Let's Enjoy Unreal Engine:UE4 Google VR Daydreamアプリをサクっと試してみた ※追記あり
http://unrealengine.hatenablog.com/entry/2016/05/20/223329

更新履歴のリークがありましたが、公式にはすでに対応が終わっており、UE4のソースリポジトリにアクセスする権限が必要ですが4.12のbranchからソースビルドするとさっくりと使える模様です。

Google VR and Daydream Devices
https://docs.unrealengine.com/latest/INT/Platforms/GoogleVR/Daydream/index.html

UEの公式ドキュメントを見るとNDKまわりの設定が必要とありますので、おそらくGoogle VR SDK(NDK版)をベースにしていると思われます。

mobile向けUEの話ではsimple HMDという名前で樽型歪みとヘッドトラッキングのみ対応していたものが、drift correctionの入ったCardboard/Daydream対応のGoogle VRベースになったということだと思われます。(互換性セッティング用QRコード読み取り画面へのギアマークも入ってますし。)

iOS対応とかSpatial Audio(立体定位音響)対応はどうなんですかね?


○Nexus 6P+N Preview3による開発環境とサンプルアプリ

こちらについてもCardboard SDKとAndroidのOS Previewについて慣れている方なら、タオソフトウェアさんのタオバイザーblogのエントリを読めば一通りわかってしまって以上!という感じですが...。

タオバイザー:Google I/O 2016 で発表されたDaydreamのデモアプリを触ってみた。
http://taovisor.com/news/android-n-daydream-development-kit/

セットアップ上の注意点なども(英語の公式もがんばってるのですが)丁寧に記載されており、ありがたいエントリです。

・VRサービス設定まわりはN Preview 3以降(N5Xとかでもおそらく出るだけは出る)、IFとして動作するのはNexus 6P限定です。
・コントローラエミュレータアプリはManifestとしてはmin19(Android4.4以降)で緩めの制限なのですが、arm64-v8aのバイナリしか入ってないのでARM 64bit石の機種限定の模様です。Nexus5X, Nexus6P, Galaxy6Sで動作することを確認しています。


○試した感想

以下、実際にCardboard 2015とN6PとN5Xで試した際の画面キャプチャを中心としたツイートを雑に並べておきます。
やってる最中は「あー」「なるほどー」「腕疲れるなー」みたいにたるい感じの独り言をつぶやいており、ぶっちゃけあまり感動していなかったことをムダ情報としてお伝えしておきます。

○2016.05.26追記

Qualcommの中の人がSnapdragon820でどうがんばったとか、砂820の自慢話してます。2ページ目も読むのをお忘れずに。(EE Times日本語版は省略して適当翻訳で情報量がかなり減ってますので差分は原文で補完するのをオススメします。)

Google's Daydream is Silicon Reality | EE Times
http://www.eetimes.com/author.asp?section_id=36&doc_id=1329737

2016年5月17日

ViveでSDユニティちゃんを無限に投げて掃いてみた

こりん(@k0rin)さんのフレームシンセシス Unity+HTC Vive開発メモに「また、SteamVR/Extrasに、コントローラでオブジェクトを投げるSteamVR_TestThrowというサンプルがあります。」と紹介されていたサンプルがおもしろかったので、RagdollなSDユニティちゃんをひたすら投げられるデモを作ってみました。

SDユニティちゃんのRagdoll化については以下のページを参考にしました。(というかそのまんまですね)

[Unity]SDユニティちゃんにラグドールを入れて人形っぽくする
http://notargs.com/blog/?p=588

Rigidbodyに直velocityではうまくいかなかったのでAddForce作戦に変えたあたりは以下のLeapmotionでつまんで投げる以下のページを参考にしました。

Grabbing and Throwing Small Objects, Ragdoll Style
http://blog.leapmotion.com/grabbing-and-throwing-small-objects-ragdoll-style/

RagdollThrower
https://github.com/leapmotion/RagdollThrower

GTX970機だと20体も出すと90fpsは保てなくなりますが、Timewarpまわりがきちんとしているのか、fpsが落ちても酔いを感じるほど画面が乱れるまでにはさらにもう20体、という感じの境界線でした。

2016年5月14日

Steam VR(Viveのホームアプリ)の全天球背景をローカルで追加する

Steam VR(HTC Viveのホームアプリ)の全天球背景は、Steam VRアプリのワークショップとしてアップロード公開・ダウンロード利用が可能です。

https://steamcommunity.com/app/250820/workshop/

workshop1.png

ベースステーションやコントローラのスキンもダウンロードの上、変更が可能ですが、全天球背景画像はローカルで追加することもできます。

Viveホームから設定→ヘッドセット内→デスクトップのフォルダを開く を選択します。

HMDをかぶったままだとなんのこっちゃ、という操作ですが、デスクトップ上で「Program Files (x86)\Steam\steamapps\common\SteamVR\resources\backgrounds」あたりのパスでエクスプローラが開いていると思います。

workshop2.png

ここに、2:1のEquirectangler画像とサムネイルを追加すると、Viveホームの背景として設定できるようになります。

THETA S等の撮影データであればそのまま放り込めばOKです。
CGも...ということで、MikuMikuDomeMasterでMMDから画像を出力して設定してみます。

※サムネイルの仕様は400x300ぽいですが、2:1画像が元なので400x200に縮小したものを_thumbnailというファイル名を追加して置いておくのが楽そうです。

ステレオ立体視空間内に無限遠ではないモノラルEquiを配置すると見た目は少し違和感があります、せっかくのViveで変な酔い方をするのもアレなので、大人しく遠景Equi画像を準備する方がよいかもしれません。

2016年5月12日

IO2016まで1週間待てばいい話だけどAndroidVRについて戯言

踊らにゃそんそんとは言うけれど。

続きを読む "IO2016まで1週間待てばいい話だけどAndroidVRについて戯言"

2016年5月10日

#JVRS の質問ハッシュタグが興味深かったので

勝手に妄想デマカセ回答してみる

続きを読む "#JVRS の質問ハッシュタグが興味深かったので"

2016年5月 9日

Oculus Rift CV1がうちにやってきた

Oculus Rift CV1を買ったのでチラ裏しておきます。とくに目新しい情報はないですが。

続きを読む "Oculus Rift CV1がうちにやってきた"

2016年5月 2日

加工したTHETA写真にGフォトでPhotoSphere表示にするためのGPanoメタデータを追加する

知名度が上がってきたのか、THETAをお見せすると「あー知ってるー」「ぐるり写真が撮れる奴」みたいな第一声が増えてきた気がします。

theta360.comなどでも良いのですが、できればサイズは維持したいし、アルバム共有が便利なのでGフォトにあげられないかなぁと思っていたのですがそういえば無加工なTHETA写真はブラウザでぐりぐりできることに気付きました。

なんかメタデータが足りてないに違いない。

公式:ストリートビュー Photo Sphere XMP メタデータ
https://developers.google.com/streetview/spherical-metadata?hl=ja#_1

なるほど、しかし手動は面倒だ。

【PhotoSphere話】球体パノラマ写真PhotoSphereファイルの作り方
http://www.katabe.jp/modules/blogpc/index.php?page=detail&bid=118

ExifToolとpyExifToolGUIを使えばGPanoメタデータのコピペができるらしい。

が、2ツールのバージョン相性なのかうまくファイルが出力されなかったので、以下のサイトを参考に、ExifToolのexe単体でbatファイルを生成したらうまくいきました。

How to add mandatory Photo Sphere meta data to an equirectangular image
http://www.panotwins.de/technical/how-to-add-mandatory-photo-sphere-meta-data-to-an-equirectangular-image/

↑のページの「3. ExifTool via command-line」のところに書かれている文字列のexeのパスをなおして、拡張子*.batで保存してGPanoメタデータを付加したいjpgをドラッグアンドドロップすると生成されます。

めでたしめでたし。

2016年4月25日

HTC Viveがうちにやってきて1週間

HTC Viveがうちにやってきたの続き。1週間経ったのでもう少し書く。

続きを読む "HTC Viveがうちにやってきて1週間"

2016年4月19日

HTC Viveがうちにやってきた

HTC Viveを買ったのでレポというか日記というかいくらかチラシの裏にメモを残しておきます。

続きを読む "HTC Viveがうちにやってきた"

2016年4月11日

やりたいこと探し

仕事してて一番キライなことは「もっと楽でおいしいやり方があるのにそうなってない」こと、というのは長らく自分の中でまとまってたんですが、それをひっくり返して一番スキなこと、とかやりたいこと、みたいなのがよくわからんなーというここんところだったのですが。

今日酔っぱらってる時に「何やりたいの?」って聞かれて

よ「流行りものですかねー」
よ「ああでも最新の技術で最先端で遊びたいとかではなくて」
よ「もう少し世間並のWebを扱えるようにしたいとかさせたいとか」
よ「今○○の仕事、弊社真心パワーで伸びてますけどそのうちWebっぽい□□になるんじゃないかと」

とかgdgdしゃべってたんですが、「一部のスペシャリストしかできなかったものをそうでもない人がやるようになる」というフレーズがふとしっくりきたので、忘れないうちにメモっておくことにします。

2016年3月29日

年度末の感想 #新人プログラマ応援

新人をおそらくコテンパンにしてしまっている話というエントリを書いたが、年度末なのでこの話を〆ておこう。

結局のところ直接一緒にやった仕事はほぼ無かった。僕自身の今年度は余ったおっさん同士でなんか隙間仕事するかー、みたいなのが多かった。ほぼ放置しといてボロクソに書くのはどうかと思うが、逆に言えば指導した僕がイマイチだったということだ。

前回のもよく読み返すとアレなフレーズがいっぱい混ざっているので、今回も深く考えずにチラ裏に書いて冷蔵庫のドアに張っておこう。

続きを読む "年度末の感想 #新人プログラマ応援"

2016年3月27日

Android版ロマサガ2起動時の認証エラーは時間放置で回復の模様

romasaga2-android-boot-error.png

2016.03.24にAndroid/iOS/PS Vita同時発売となったロマンシング サガ2ですが、起動時に認証エラーで起動しなくなってちょっと涙目だったので情報をまとめておきます。

【認証エラー経緯と回復手段】
・アプリ起動時に認証があるのはAndroidだけ
・インターネット接続環境でないとエラーとなる模様
・それとは別に、短時間に一定回数(詳細不明)以上、起動時の認証エラーを繰り返すと、その後しばらくの間認証エラーが連続するようになる
・時間回復の模様で、Twitterでは10分程度という情報あり
・私は再起動x2、15分程度で回復せず、情報を見つけた後30分弱の放置で回復を確認

以下、蛇足

続きを読む "Android版ロマサガ2起動時の認証エラーは時間放置で回復の模様"

Archives(記事一覧はこちら)