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年1月23日

THETA SのUVCモードをUnityで試す(いまさら)

発売前後に識者達のハックが多数あったのですが、Unity力が低すぎて見てるだけでは当時よくわからなかったのを今更試してみました。

1. 何ができる子なのか全容を把握する

RICOH THETA S 発売したので、個人用メモ - izm_11's blog
http://izm-11.hatenablog.com/entry/2015/10/25/004048

はむ!の空想具現化したいブログ
http://hammmm.hatenablog.com/entry/2015/12/06/181603

を読んで全てがわかる人はそれでおkな感じです。

2. THETA SのUVCモードでwebcamとしてプレビューする

RICOH THETA S 使用説明書:ライブ映像をパソコンで見る
https://theta360.com/ja/support/manual/s/content/streaming/streaming_01.html
>カメラの撮影モードボタンを押しながら電源ボタンを押して、電源をオンにする

LIVEがピカピカ点滅するモードになったらUSBを刺します。
プレビューはHTMLの世界に任せて、ブラウザでいいでしょう

WebcamJS Test Page - HD Capture
https://pixlcore.com/demos/webcamjs/demos/hd.html

ChromeだとURL欄の右端、カメラマークからTHETA Sが選べます。

thetas-01.png

3. Unityで動かす

Stereoarts Homepage
http://stereoarts.jp/
>Unity 向けの THETA / THETA S の全天周画像をリアルタイムに Equirectanguler に変換するシェーダーと、それらの補助スクリプト一式です。
>ThetaShaderPack_20150926.zip

・Unity(5.2.2p4)で新規プロジェクトを作成。
・GOROmanさんが+αつきのTHETA SなWebCamTextureを扱うスクリプトをGistに置いてるのでそれを持ってくる。

UnityでWeb Cameraをテクスチャにアサインし、そのテクスチャをPNGでセーブする例
https://gist.github.com/GOROman/2abc0a2c8b94a36935bf

・ThetaShaderPack.unitypackageをimport。

いくつかシーンがありますが、360CameraはTHETA Sには直接は関係ないので置いといて、ThetaRealtimeEquirectanglerシーンを開きます。
先ほどのWebCamスクリプトをMain Cameraにアタッチします(別にアタッチ先オブジェクトはなんでもいい)。
WebCamスクリプトのMeterial欄にThetaRealtimeEquirerectagler(Backward)かThetaRealtimeEquirerectagler(Forward)を選択すると、それぞれTHETAの前面と後面が表示されます。
ThetaRealtimeEquirerectagler(Both)は両面ですが、シーン上のPlaneが無効化されてるので切り替えてから再生する必要があります。

thetas-02.png

次にThetaRealtimeSkyboxシーンを開きます、再度WebCamスクリプトをMain Cameraにアタッチします。
Material欄にThetaRealtimeSkyboxを選択して再生すると、めでたくskyboxにTHETA Sのストリーミング映像が表示されます。

thetas-03.png

thetas-04.png

これをさあ何かに応用を・・・と考えてもなかなか面白い案が思いつきません、どうしたものか:)

2015年8月26日

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

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

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

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

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年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日

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年5月 5日

Gear VRのトラックパッドでドラッグ

GearVRの入力を使う
http://tamagokobo.blogspot.jp/2015/05/gearvr.html

パッドのどの部分を触ってもまずはX:1280,Y:720の座標が返されます。 ドラッグで動かすと触った部分を起点として座標が変化します。 なのでタッチパッドのどの部分を触ったかという判定は取れないようです。

おおなるほど。

マウスやスマホ側のタッチパネル直接操作時との互換性を考えて、タッチした瞬間のXY座標を保持しておく作戦でドラッグを実装してみます。

続きを読む "Gear VRのトラックパッドでドラッグ"

2015年5月 4日

【MMD】かわいいよ摩耶様かわいいよ【Gear VR】

maya01.jpg
【MMD艦これ】摩耶様は一騎当千【モデル配布】
http://www.nicovideo.jp/watch/sm26159359

cham*さんの摩耶様改二が可愛かったのでGear VRで課題曲を踊っていただきました。

mayaicon.png

摩耶様「はぁ?」
摩耶様「お前、バカだろ」
摩耶様「しょーがねぇなぁ、一度だけだぞ?」

脳内余裕です。

続きを読む "【MMD】かわいいよ摩耶様かわいいよ【Gear VR】"

2015年5月 2日

Gear VRとGalaxy S6を買ったので原点に戻ってミクさんに踊っていただいた

racingmiku2015.jpg

○はじめに

一通り試したのでメモを残しておきます。
DK2も、AndroidどころかDive SDKもCardboard SDKも触ったことがない人にはちょっと大変かもしれませんが、それなりに知識がある人だったらセットアップ手順はいろいろな点で親切になっており、概ね誰でも(非プログラマーでも)嫁召喚はできると思われます。

Galaxy S6/S6 edge自体は5inchと小さ目で解像度は高く、パワーもありますので単眼ハコスコ・双眼Cardboard互換組にもオススメのデバイスと言えそうです。...フラッグシップと言えるのでお値段は決して安くありませんけどね!

Android開発環境とかUnity5.0.1pXでの対Androidの話は、以前に書いたエントリ【スマホVR】Unity 5 PersonalとCardboard SDKで嫁をAndroidに召喚する【MMD】 #JAGVRを参照ください。

続きを読む "Gear VRとGalaxy S6を買ったので原点に戻ってミクさんに踊っていただいた"

2015年4月18日

【スマホVR】Unity 5 PersonalとCardboard SDKで嫁をAndroidに召喚する【MMD】

(2016.06.18注記)
MMD4Mecanim_Beta_20150821でも設定を変更すると動作する模様です。

Google VR SDK for UnityでMMDモデルを眺めるアプリ作成とそのやり方の話。
http://tecofalltolt.hatenablog.jp/entry/2016/06/16/215546
>Delayed Awake Frameの値を0にしてください。それ以外ではAndroid端末上でモーションが再生できません。

また、Android SDKのコマンドラインツール最新(?)installer_r24.4.1-windows.exeのインストール後のSDK Maganerによるパッケージ選択に、少々罠があるので、回避方法は以下の通りです。

以下、古いですが本編(そのうちGoogle VRになりましたし刷新します)

----

vr-ss-04.png

スマホ向け双眼3D VRゴーグル、Google Cardboard(タオバイザー/ハコスコ DX等のCardboard互換ゴーグル含む)向けにUnityで3D VRアプリを作るマニュアルを、Android SDKインストールからがっつりフルで書いてみました。Unity 5 Personalの登場で開発環境が無料で済むようになりましたので、よかったら皆様もお手持ちのスマホに嫁を召喚してみませんか。

vr-mokuji.png

◯目次

0. はじめに
1. Android開発環境の構築(JDK)
2. Android開発環境の構築(Android SDK)
3. Unity5のインストールとプロジェクトの作成
4. Cardboard SDKの導入
5. MMD4Mecanimの導入

続きを読む "【スマホVR】Unity 5 PersonalとCardboard SDKで嫁をAndroidに召喚する【MMD】"

2015年3月 7日

Unity 5が出たのでUnity 5 Personal(無料版)でCardboard SDKとDive Pluginを試す

※(2015.10.03追記)現行最新のMMD4Mecanim_Beta_20150821ではMobileが対応デバイスから外れているため、本エントリの内容は動作しないことをご了承ください。

u5-12.png

Cardboard/タオバイザー他スマホ向け双眼HMDのアプリ作成をUnity 5で試してみた話です。

【2015.06.08追記】
Developement BuildフラグONはまだ必要ですが、現時点でUnity 5 Personal+Cardboard SDKがベストのため、イカのエントリを参照ください。

【スマホVR】Unity 5 PersonalとCardboard SDKで嫁をAndroidに召喚する【MMD】 #JAGVR
http://greety.sakura.ne.jp/redo/2015/04/android-vr-app-unity-5-cardboard-sdk.html


○先に結論
・Cardboard SDK for Unityは少しおかしいケースがあるが、GUI offとDevelopement BuildフラグONで回避可能
・Dive pluginならUnity 4 Free/5 Personal共に動作
・他Unity 5ならではの話はさっぱり試してません

続きを読む "Unity 5が出たのでUnity 5 Personal(無料版)でCardboard SDKとDive Pluginを試す"

2015年1月 4日

クソゲーつくったよー^o^

shoot3.png

だいぶUnityに関するぐぐり力が上がってきた気がするのでチュートリアルのブロック崩しとUNIDRA本のアクションゲー以来、初めてシューティングゲームというものを作ってみた。ほどよく詰め込んでなかなかのクソゲー味が出せたと思うので次回またがんばりたいです。

Shooting1.zip(12.0MB)

2015年1月 3日

あいえるたんサマソ2

samaso2.png
samaso1.png

以前書いたエントリでUnity FreeとProのパフォーマンス差が疑わしかったのですが、新しくUnity4.6で作り直してみたところ、MMD4Mecanimの物理演算をオフにするとFreeビルドとProビルドでパフォーマンス差がないことが確認できました。

prosamaso.png

ビルドしたexeは以下のリンクからダウンロード可能です。

あいえるたんサマソ2
AielSamaso2.zip(20.4MBぐらい)

【開発環境】Unity Pro 4.6.0p1+Oculus SDK 0.4.4
【モデル】あいえるたん
【モーション】【第12回MMD杯EX】反動三段蹴り&サマーソルトキック・モーション配布(一部改造)

物理演算をオンにするとFreeだと2,3体、Proでも4,5体からfpsを維持できなくなるのでこのあたりはFreeとProのマルチスレッドのなんたらには関係がありそうです。Join Local Worldのチェックのオンオフで良くなったりもするみたいですがイマイチこちらは傾向がまだつかめてません(MMD4Mecanimのバージョンにも依存しそうですが...)

2015年1月 2日

uGUIでOculus Rift向けに大きな文字を表示する

ugui-text05.png

僕だけかもしれませんがUnity4.6でuGUIになって3D TextがCanvas+TextになったらOculus Riftで良い感じに大きめのTextを表示するのにやたらと苦戦したのでメモっておきます。

<結局のところ注意すべき罠は以下の2点>
1. uGUIのCanvasサイズは実際のpixel数ぐらいにすべし、と400x400ぐらいにするとでかすぎてまったく見えなくなってしまう罠は、Scaleを0.005とかに大胆に縮める必要があること。
2. フォントサイズ20程度じゃVRは厳しいので64とかにするとまったく表示されなくなってしまう罠は、デフォルトがTruncateなので表示範囲が足りてないだけということ。これデフォルトOverflowで良かったと思うんですよ...

続きを読む "uGUIでOculus Rift向けに大きな文字を表示する"