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