2015年8月26日

ユニティちゃんライセンスをナナメ読みして、ちょっと首がナナメになる話

ユニティちゃんライセンス条項 1.01バージョン
http://unity-chan.com/contents/license_jp/

雑な知識でBSD系なソフトウェアライセンスとかCCなライセンスとかの観点と比較しながら読んでみました。本エントリの内容について一切の保証は(略

続きを読む "ユニティちゃんライセンスをナナメ読みして、ちょっと首がナナメになる話"

2015年8月25日

#Ocufes VRコンテンツを展示する際にやったほうがいいこと

G-Tune × AMD OcuFes 2015夏
http://www.ocufes.jp/2015/07/1473/

OcuFesに参加してきました。開催時間の6時間フルに参加して楽しませていただきましたが、コンテンツとは少し別の観点で、展示手法の巧拙に少し感じるところがありましたのでいくつか将来(?)のためにメモっておきます。


○理想fpsを下回るコンテンツを展示する際には理由の説明が必要

Oculus Riftなら75fps、Gear VRであれば60fpsを下回るコンテンツを展示する際には、理由の説明が必須だと思います。
できれば1フレームたりとも下回らないのが望ましいのですが、挑戦的なコンテンツを展示する際には仕方のないラインもあると思うので、その際には言い訳が必要に感じました。


○コンテンツの内容は外から分かるようにすべき

やり方はたくさんあると思うので、コンテンツの内容はHMD外、待機中で分かる状態にした方が良さそうです。

・チラシ・ポスター・カンバンを用意してアナログで
・適切なミラーリングや専用ビューにて、前の人がプレイしているのを見れば分かる
・VRシステムとは別にコンテンツ説明画像/動画を用意して別PCで表示

適切なミラーリングのコストが高いせいか諦めちゃうケースが多いっぽいですが、画面キャプチャのカラー印刷等、アナログ+静止画でも効果はあると思っています。

それと関連して、出展者・団体名とコンテンツ名をはっきりさせておいて、待機列から分かる位置に表示してほしいと思いました。「○○さんの△△」という表現ができるようにしてくと、エゴサとかもしやすいと思うんですよね...!

申し込み時にはコンテンツ詳細やタイトルが決まってなかったケースなどはパンフレットではフォローできませんし。


○混雑・トラブル時には掲示が必要

・「最後尾」「最後尾ではありません」カンバンやっぱり必要そう。地面のバミも必要。
・「調整中」カンバンも必要そう。
・「受付終了」表示だけだと予約限定の会員制みたいなイメージになっちゃうみたいなので、『プレイ時間目安を考えると本日体験を提供できる人数を超えてしまいました』あたりが分かるぐらいまで説明があった方がよさそうです。

養生テープ+ハサミ+スケブ+ペンみたいな工作セットは必須そうです。


○その他

・WiFi/Bluetoothつらいので無線ヘッドホンもつらそう、ポジトラ不調もおそらく赤外線の混線。
・VR/HMDコンテンツと非VR/HMDコンテンツの併設つらそう。
・プレイ時間が無限になるコンテンツはタイムキーパーが必要。今回の6時間でも3分で割ると最大120人という計算値からすると、3分超えは贅沢かも。
・展示会場は騒がしいので音量調整が必要。
・「自分はDK2とかGear VRとか持ってるし開発してるよ」というのは展示者から区別がつくようにしてあげればよかったかも。(知人のコンテンツが良い体験になりやすいのはおそらくこのあたりのツーカーもある)
・DK2の鼻のスキマから光が入ってくるのは自分の指でガード。
・待機列ができてるのかできていないのかはっきりしていないケース難しい。ゆずりあいの精神が大事。

おつかれさまでした!1回ぐらいは展示する側回りたいですね!

2015年8月17日

ミラーレス一眼を買ってよかった話

2015.07.21にSONY α6000を買いました。DCIM配下のファイル名からカウントすると現時点で1800枚ぐらい撮っているようです。

このエントリでは良かった点だけつらつらと書きたいと思います。どのあたりがトレードオフとか悪かった点は意図的にほとんど書いていませんが、トータルで評価すると大変満足しています。類するカメラを持っていない方は買って損はないと思いますし、買った今は「そりゃみんな買うよね...」という気持ちです。

続きを読む "ミラーレス一眼を買ってよかった話"

2015年8月 9日

お布施が不要になったXcode 7 betaでCardboard SDK for UnityをiPhone実機で試す

iphone5-cardboard-sdk-for-unity.png

iOSアプリを実機で動作させるのに、Xcode 7(まだbetaですが)ではDeveloper Programでのお布施が不要になりました。

誰でも無料でiPhoneの実機を使ってiOSアプリ開発する方法
http://qiita.com/Night___/items/ebe4d55b10804db9700c

Cardboard SDK for Unityを使ったアプリをiOS実機で動かしてみました。さっくり動いたのでこれは今後いろいろ使えそうです。

環境は以下の通りです。

・MBA 11' 2013 Mid・Yosemite 10.10.4
・Cardboard SDK for Unity v0.5.1
・Unity 5.1.2p3
・Xcode 7 beta 5
・iPhone 5 iOS 8.4

以下、手順。

Getting Started with Unity for iOS
https://developers.google.com/cardboard/unity/get-started-ios

に従うだけです。最新のUnityを使っていたので途中の追加操作は最低限で済みました。
Xcodeでビルド時、App ThinningのbitcodeまわりでLinkが失敗したので、Build SettingsからEnable BitcodeをNOにする必要だけがあります。

Impact of Xcode build options "Enable bitcode" Yes/No
http://stackoverflow.com/questions/31088618/impact-of-xcode-build-options-enable-bitcode-yes-no

iOSデバイスでUnityブツはほとんど触っていませんのでよくわかりませんが、さすがにiPhone 5だと液晶サイズの観点でも少し小さく、パフォーマンスの観点でもふた回りぐらい辛そうな動きです。iPhone 6無印あたりが良いんじゃないですかね。

あと、Cardboardとは直接関係ないですがUnityからiOS実機もってくの骨が折れますね...。ちゃんとTestFlight含めてCI組めないとかなりダルい印象です。みんなどうやってがんばってるんだろう、VRじゃないからiOSシミュレータでなんとかなるのかな?

2015年8月 8日

#C88 TechBooster本にスマートフォン向けのVR開発入門について書きました

c88-android-m-thumb.png

C88 3日目(2015/8/16)東A39a TechBooster
https://techbooster.github.io/c88/

上記のC88てくぶ本、「Android Masters! ダンジョンにAndroidの最新情報を求めるのは間違っているだろうか」の、「第7章 Unity 5.1で入門するVRアプリ開発」というタイトルの章を担当しました。
私の章の内容はニッチですがCardboard SDK for UnityとGear VR+Unityに関するVRコンテンツ開発の入門向け、現時点ではオンリーワンなものになっていると思います、VRに興味のある方はぜひ。
興味のない人も他の章や本をひっくるめ、大変魅力的なものに仕上がっていますので、購入したついでに私の章も読んでくれるとよろこびます:)

イカ、書き出しのチラ見せと目次です。

c88-android-m-7.png

【目次】
1 はじめに
1-1 VRのR(Reality)と本章で扱う範囲について
1-2 想定読者について

2 VRとスマートフォンの関係
2-1 手持ちのスマートフォンで始めよう
2-2 具体的な機種とコンテンツの選び方について
2-3 よりハイエンドなデバイスと、その価格について

3 スマートフォン向けVRデバイスの紹介
3-1 Google Cardboard
3-2 ハコスコ
3-3 Oculus Gear VR

4 VRと3Dとコンテンツ開発手法
4-1 VRコンテンツは3Dで、3DならUnityで
4-2 Cardboard SDK for Unityのメリット
4-3 コラム つくってみるメリット

5 VRアプリ開発環境の構築
5-1 手順のおおまかな流れ
5-2 Android SDKとインストール
5-3 Unityのインストールとバージョン
5-4 Cardboard SDK for Unityのダウンロード

6 Cardboard向け、VRアプリのHello, World
6-1 新規Unityプロジェクトの作成
6-2 Cardboard SDK for Unityのインポート
6-3 プレビューの再生
6-4 Androidプラットフォーム向けの設定
6-5 ビルドとインストールと実機での実行

7 PONGアプリをCardboard向けに対応させる
7-1 新規プロジェクトとPONG unitypackageのインポート
7-2 Androidプラットフォーム向けの設定
7-3 Cardboard SDKの適用
7-4 VRらしい自機制御スクリプト

8 PONGアプリをハコスコ向けに対応させる

9 PONGアプリをGear VR向けに対応させる
9-1 新規プロジェクトとVirtual Reality Supportedチェックボックス
9-2 Osigファイル(Oculus Signature File)の準備
9-3 Gear VR Service開発者モードの有効化

10 おわりに

<よもやま>
・Unity 5.1.1p3で書き始めて、何度かのUnityのアップデートと戦いつつ、最終的には5.1.2p2でUnityのクラッシュと鉢合わせしました。
・入稿後にCardboard SDK for Unityがv0.5からv.0.5.1になって、よりにもよってunitypackageの数が変わってしまいました。
・紙版では間に合っていませんが、ダウンロードカードの付属する電子書籍版ではUnity 5.1.2p3とCardboard SDK v0.5.1の差分に対応しています。

2015年7月30日

新人をおそらくコテンパンにしてしまっている話

チラ裏。いや、ここは冷蔵庫のドアだった。まぁいいや。

続きを読む "新人をおそらくコテンパンにしてしまっている話"

2015年7月29日

Cardboard SDK for Unity Version 0.5.1

cardboard-v051-01.png

Cardboard SDK for Unityのv0.5.1がいつのまにか出てたので動作確認。
bugfixが中心で、差分は多くないっぽいのですが、個人的には1点だけ特筆すべき話が。
SDKの中に含まれていたDemoSceneが別unitypackageに分けられました。それぞれ以下のような感じです。

cardboard-v051-02.png
cardboard-v051-03.png

v0.5.0前提で書いた #C88 の薄くない(?)本がちょうど直撃です。

TechBoosterのC88本の読者の方へ:v0.5.0→v0.5.1の差分情報】
・unitypackageは1つだったのが2つに分かれてしまったので、両方とも必要です、2つダウンロードしてインポートしてください。
・Scriptの自動アップデートを確認するDialogは表示されません。気にしないでつづけてください。

2015年6月21日

Unity 5.1とGoogle Cardboard SDK for Unity v5.0を試す

タイトルと関係ありませんが突然の宣伝です。てくぶことTechBoosterがC88も当選されたとのことでおめでとうございます、youtenはC87ではやたらと後ろ向きな記事を書きましたが今回はCardboard SDKの話を中心にGear VRまで含めたスマホ向けVRの話を書こうと考えております。(無事に掲載されるかはさておいて)これを読んだAndroid開発者がVRの波動に目覚めて突然開発したくなるような記事にしたいと思います。全裸で。

さて本題に戻りまして、Unity 5.1が出たのでCardboard SDKがおかしなことにならないかを確認してみます。VR的にはUnity 5.1の目玉はVRのNative対応で、その中身はOculus Rift/Gear VR向けなOculusなSDKが組み込まれただけ、という認識なのですがちょっと自信ないです。

Unity 5.1.0p1 2015.06.12
https://unity3d.com/jp/unity/qa/patch-releases

Google Developers:Getting Started with Unity for Android
https://developers.google.com/cardboard/unity/get-started

イカ、作業メモ

u51-01.png
Unity 5.1を起動します。いきなりログインを求められましたがWork Offlineでも良さそうです。
New Projectを作成します。

u51-03.png
CardboardSDKForUnity_v5.0.unitypackageをimportします。"API Update Required"ダイアログが出ますが気にせずI Made a Backup. Go Ahead!を選択します。

Cardboard/DemoScene/DemoSceneを開きます。おもむろに再生します。いつものDemo Sceneが動作します。
u51-04.png

別名のMainというシーンで保存。Build Settingsを開いてAndroidにSwitch Platform。Add CurrentでMain.unityを追加、Development Buildチェックをonに。
Player Settingsを開いて、Company Nameを変更、Resolution and Presentation->OrientationをLandscape Leftに、Other Settings->Bundle Identifierを独自パッケージ名に変更。
Build Settingsに戻ってBuild And Runを選択。U51HelloCB.apkあたりの適当な名前をつけてSave。

v4.10からv5.0の差分を確認しておきます。
https://developers.google.com/cardboard/unity/release-notes

抜粋して紹介。
・iOSサポート。
・C++でヘッドトラッキングと樽型歪み補正を実装、JavaベースのコードはLegacyフォルダに移動。
・Cardboard.csとVRDeviceというクラスでリファクタ、Android, iOS, Unityエディタ上で同様に扱えるよ。
・新しいイベントtilt(横向きに傾ける、BackやExitの意)、trigger(Cardboard v2のトリガーが引かれた状態、タップと同義のはず)に対応
・Cardboard.SDK.BackButtonExitsApp「BACKボタンでアプリ終了」は廃止。
・Cardboard.SDK.IsInCardboard「今Cardboardにスマホが入っているのか」(おそらくmagnet判定だったのでCardboard v2の変更に伴って)は廃止。
・残念ながらDevelopment Build チェックまだは必要?(5.0.0f4で試した限りは、と書かれている。5.1.0p1では大丈夫な気配?)
・Multi-threaded renderingは今はまだサポートされていない。
・細かいですがDemoSceneの真下に出るMenuのVR ModeというButtonのEvent実行先がCardboard.ToggleVRModeからTeleport.ToggleVRModeにお引っ越しされてました。Cubeを消して下のメニューを使い回す際にはご注意ください。

Cardboard/Scripts/Cardboard.csに以下の様なメソッドを追加してやれば代用が効きます。
public void ToggleVRMode() {
VRModeEnabled = !vrModeEnabled;
}

u52-05.png
ちまちま他のこともしてみましたが、Cardboard SDK for Unity v5.0を使う分にはさしあたってUnity 5.1で困らなそうです。

そういえば、今日Cardboard v2触ったんですが適当にGalaxy S6突っ込んだらぜんぜん像が結べなくて3Dに見えなくて苦労しました。QRコードによるProfile調整必須です、Nexus5/Galaxy S6あたりにあわせてあるとダメです。DIVE pluginモノはN6とかiPhone 6plusならちょうどいいんじゃないのかな...。

つまり今後というか現時点ですでにCardboard互換品には例のQRコードが必須ということです。...Googleさん、もう少しアナウンスというか啓蒙がんばった方がいいと思うよ。

2015年6月 8日

MMDメモ

MMDについてメモ。

続きを読む "MMDメモ"

PMCA その1

別にお金を払いたくないわけでも3D-Unity(VR)で商用活動がしたいわけでもないのですが、自分で書いたライセンスを自分で守らない人とか、法律も作者の気持ちでどうにかなると思ってる人のことを想うとつらい気持ちになります。Figmyがぶっこみましたね。CC-BYのpmdが欲しい病を長く患っている自分にも少しだけ気持ちは分かりますが、ああなってはおしまいだと思います。

前置きはさておいて、PMCAというパーツPMDからモデルを組み立てるツールがありまして、ちょっと前に存在を知っていたのですが今更試してみることにします。

PMCAv0.0.6について
http://matosus304.blog106.fc2.com/blog-entry-215.html
りどみ.txtを読むとPMCA自体はPDとあるので生成pmdにライセンス制限はかからないことになります。(というかデフォルト設定でAuthorがmato氏のLicense PDという文字列が固定になってしまうのは良いのでしょうか...)

PMCAv0.0.6r10aWindows版
https://bowlroll.net/file/3714

Python実行環境同梱版をダウンロードして、zipを展開してrun.batで起動します。
pmca-01.png
pmca-02.png
適当にポチポチと選択してpmdを出力します。
ちょーかんたんお手軽1分でpmdができました。

pmca-03.png
ちょっとだけテクスチャの色合いだけいじってMMDに持っていきます。

pmca-05.png
なるほど。

Unityに持っていきます。

pmca-06.png
なるほど。

Carboard SDKを適当に放り込んでスマホに持っていきます。

pmca-07.png
なるほど。

これで色々な点が概ねいいんじゃないでしょうか。

2015年6月 3日

延命措置

体調不良につき...という拙作の適当アプリがあります。

用途はPlay側の説明を見ていただくとして、このアプリは2011.08.02に更新して約4年それっきりという、(普段の言動に対して)紺屋の白袴どころか紺屋の全裸みたいな案件です。

逆に言うとminSdkVersion="4"で作ったものが4年間完全放置でここまでもったAndroidよくできてんなという気分なのですが、Galaxy S6(5.0.2)でMENUキーのエミュレートがされなくなってついに死亡が確認されました。

ぶっちゃけ自分用アプリなのでちょっとぐらいおかしな動きをしてもいいだろう、と互換性に注力する気はないのですが、意外と気に入らない点が多くて単純な移植しかしていないにも関わらずイマイチ要素が満載のものになりました。今は寝かせてます。

<移植作業>
・Eclipse → Android Studio
・minSdkVersion 4(1.6) → 15(4.0.3)+AppCompat v7 22.1.1
・Activity → AppCompatActivity
・PreferenceActivity → PreferenceActivity(AppCompatDelegateではない)
・Launcher iconの新規起こし。(某ジェネレータのmipmap-フォルダに配置したが、minSdkVersion15だとダメっぽい?おとなしくdrawableに移動した方が無難そう。)
・AppCompatにしたがって無印とv21のthemeを作成、primary, primary dark, accent, button, navigation barあたりのcolorを設定。
・同じ仕組みでButtonのtext colorが変えられないので、ここを参考にWidget.Holo.Light.ButtonとWidget.Material.Light.Buttonをparentに指定したstyleを用意する。
・setHomeButtonEnabled(true)とかsetDisplayHomeAsUpEnabled(true)とかActionBarまわりを調整。スクロールするほどコンテンツないしToolBarは見送り。
・xml drawableはいったん全部捨て、一部primary colorを適用。

<どうにかしたい>
・WQHD端末なせいかフォントサイズが少し小さい気がする。
・マージンがアンバランス、全体的に足りない。これでもLinearLayoutに透明dividerは入れている。
・ボーダなしSpinnerと今の配置の相性が悪い。
・Spinnerのrowに複数行+自動改行が必要なものを入れるのがダメ。iOSのドリルダウンNavigation Controllerのような他ページでいい気がする。


M来たってのにLollipop時代の話と戦えてない感じです。もっとリハビリしないと話になりませんな。

2015年6月 1日

OcuBen #02 に参加して思ったことメモ

Oculus Rift勉強会 #02 【初心者歓迎】
https://ocuben.doorkeeper.jp/events/24708

・本当にVRについて勉強したい人が何百人も居るのか。
・みんな開発者やコンテンツ提供者というわけではなかったけど居た。
・Android開発経験者は結構居たけどGear VR持ってる人もそんなに多くなかったしGear VRで開発したことがある人は多くなかった。
・プログラミングしなくても開発ができるようになったのではなくて、誰もが楽しめるぐらいプログラミングの裾野が広がった。
・Cardboard・Gear VR向け、UnityでのAndroidアプリ開発環境にAndroid Studioは必須ではない。
・GalaxyのadbのためのUSB DriverのためにKiesは必須ではない。
・天球動画の再生環境としてGear VRがRift DK2を概ね凌駕するというのには同意。
・ま、まだ仲良くしといてあげるけどVR国がおっきくなったらあなた達みたいなリア充とは仲良くするつもりはないんだからねっ>実写動画

P.S.
きゅーこんさん歌うまいのでみんなカラオケに連れて行こう(次はファミコンバーでリア充と対決しましょう

2015年5月26日

Twitterで言語限定検索できるのを今更知りました

Gear VR lang:ja
https://twitter.com/search?f=realtime&q=Gear%20VR%20lang%3Aja&src=typd

Cardboard lang:ja -ダンボール
https://twitter.com/search?f=realtime&q=Cardboard%20lang%3Aja%20-%E3%83%80%E3%83%B3%E3%83%9C%E3%83%BC%E3%83%AB&src=typd

Cardboardの方はもう少し除外ワードを工夫しないとノイズが多いですね...。

2015年5月25日

【MMD】360度パノラマステレオ動画で嫁を召喚してみた【Gear VR】

mmm.png

MMDで全天球動画が作れるのを以前見かけて試そうと思っていたのですが、2回出して合成すればGear VRでなんとなくステレオで見られます。これはいいものだ。

【MME】360度パノラマ画像を作る
http://seiga.nicovideo.jp/seiga/im3844921

Panorama360.png

「Panorama360」を使用。カメラの位置を無視して、エフェクトの位置情報が使われている模様なので、以下の様にxyzいじってみます。xは左目が-0.03右目が0.03にしてみたがそもそもMMMの1.00はUnityみたいに1.00m保証は無い気がします。
x 0.03 y 10.0 z -15.0

※後述の追記時にはx 0.1(左目用は-0.1)y 13.0 z -12.0程度にしました。センターバイアスでモーションを同心円で収まる範囲にして、モーション範囲を中央に寄せてしまうのが勝利のカギの模様です。

以前書いたMMMの物理演算固定手順を守りつつ、左目用aviと右目用aviを出力してみます。

2160x1080 60fps
UtVideo YUV420 BT.709 (ULH0) DMO
mousou-L.avi
mousou-R.avi

kongou.png
開始位置が奥すぎたのでめっちゃ艤装に殴られまくりの動画になりました。目には優しく無いですが透明人間になった気分はそれはそれで面白かったです。

試しに1000フレーム程度でやってみて概ねうまくいきましたが、つんでれんこではビットレートがどうしても常識的な範囲に収まってしまう模様です。昔お世話になったx264guiExに久しぶりに頼ることにします。

aviutl-x264gui.png

AviUtlでMP4(H.264)にエンコードするためのインストールと設定方法
http://memorva.jp/internet/pc/soft_aviutl_mp4_h264_encode.php

2560x2560でやってみたらWin8.1でもGalaxy S6でも再生できない動画になりました。
2160x2160でProfileはHigh@5.1にしたら再生できました。サイズではなくてProfileの問題かも。

bt.png

実際に見てみるとかなり良い感じなのですが、2160x2160でも解像度がちょっと足りない(ボケた)感じになってしまいます。どこまで上げるのが妥当なのかは何度か試す必要がありそうです。(GearVRの公式doc的には推奨2048x2048@60fpsらしいです。ただの画質設定の話かも...)

続きを読む "【MMD】360度パノラマステレオ動画で嫁を召喚してみた【Gear VR】"

2015年5月24日

【Gear VR】自前のosigを追加して再sign

前述の通りosigまわりにあまり特殊な署名ガードはかかっていなそうだなと思っていたのですが、すかさんが自前osig追加再Signをやってたので自分もやってみました。

続きを読む "【Gear VR】自前のosigを追加して再sign"

Archives(記事一覧はこちら)