2018年10月14日

技術書典5 サークルレポ

gi5.jpg

技術書典5、おつかれさまでした。当サークルのスペースに遊びにきていただいた方、購入いただいた方、ありがとうございました。

ありまして、「今回は原稿落とすかなー」とか考えたこともあったのですが、なんとかなりました。

2,3,4に続いて5もサークル参加して、「VRコンテンツのつくりかた4」というARKit Face Tracking本を頒布しました。

○当日の話

・B5オフセット表紙フルカラーのP.24 新刊1種、500円で頒布。旧刊なし。
・持ち込み96 - 手元2残し = 頒布94(完売)
・かんたん後払い利用者は19名、前回に引き続き便利に利用させていただきました。

今回からUDXからサンシャインに変わったのですが、島中は平和でした。通路が広くなったのでだいぶ人間らしさが増しましたね。(「あ」はつらそうでしたが・・・)
それと、XRジャンルにちょっと出展が増えた気がするのがよかったです。

写真の通り、デモをずっと展示していたのですが、トラッキングされてるのが自分の顔だと気づかない人が結構多くて、展示内容そのもののわかりづらさ(さりげなさ)もあるけど、机の上に置いてあって覗き込まないと動かないという、角度がちょっと厳しかったように思えました。これはスマホスタンドに加えて三脚もっていけば解決した話かも。

○本の中身の話

申し込んだ際にはVTuber話の続きとか、Mirage SoloとかOcuGoとか、半年分色々あったことを書こうと思ったのですが、時流もあってiPhone Xに振ってみました。

話としては実のところ、@noshipu氏のメモとか

Unity ARKit PluginのFace Trackingを使ってみる - のしメモ アプリ開発ブログ
http://www.noshimemo.com/entry/2017/12/01/000000

某友人F氏こと@ikko氏のこのツイートとか

あたりで「That's all」の話ではあるのですが、この半年で「BlendShapeの揃った3Dモデル事情」というのもずいぶん変わったので、改めてまとめてみました。

本の中身に直接関係なくて、ポエム成分が上がってしまうのでとくにとりあげなかったのですが、「スマホでもなんとかできる範囲が広がっている」ことと、「ライセンスドなモーションデータがなくともコンテンツが作れる」という2点が主張したかったポイントになります。キャプチャしたモーションデータを独立して扱って、VRまで持っていけなかった残念、みたいな話です。


○PDFとリポジトリ公開の話

恒例の話になってきたので色々迷ったりしなくなってきました。
今回もPDFとRe:VIEWソースコード一式、アプリソースコード一式を以下のパスで公開しています。
当日いらっしゃらなかったとか、売り切れて買えなかったとか、買わなかったけど読んでみたいという方はぜひどうぞ。

技術書典5で頒布した「VRコンテンツのつくりかた4」のRe:VIEWプロジェクト一式 #技術書典
https://github.com/youten/howto-create-vr-contents4

iPhone X Face Tracking Character Avatar App with UniVRM
https://github.com/youten/YXAvatar

2018年4月17日

VR向け3Dアバター新フォーマット「VRM」発表、ドキュメントひととおり読んでみた話

スクリーンショット 2018-04-17 10.38.14.png

dwangoが、VR向け3Dアバター新フォーマットの「VRM」を発表しました。
ドキュメントを一通り読んでUnityでセットアップして手元のモデルをニコニ立体へのアップロードまで試してみたので、つらつらとその内容、読み取ったことを述べたいと思います。

VRM - dwango on GitHub
https://dwango.github.io/vrm/

続きを読む "VR向け3Dアバター新フォーマット「VRM」発表、ドキュメントひととおり読んでみた話"

2018年1月 7日

バーチャルYouTuberのやり方 #VTuber

vtuber1.png
Unity+ViveベースでバーチャルYouTuberを試してみました。

YouTube Liveの実施に引き続き、YouTuberっぽい動画の投稿までやりまして、ひとまず当初の目的は達成しましたので、観測されるバーチャルYouTuberシステム構成の候補、やったことと・コスト(時間・費用)をまとめておきます。
ちなみに、所要時間については「ちらほらVRについては趣味で触って遊んでいる」僕を基準に考えると、「業務でUnity等を触っている方」だとおそらく半分、「まったくプログラミングをしたことがない人のチャレンジ」だと数倍+誰かのサポートが必要だと思われます。

【2018.04.23追記】
このエントリをベースに、YVTuberというVTuberシステムを作ってみた話を加えた技術書の同人誌を作りました。

PDF・原稿(Re:VIEW)のファイル一式を以下のリポジトリで公開しています。よかったら読んでやってください。感想とか、指摘やツッコミなどいただけるとよろこびます。
https://github.com/youten/howto-create-vr-contents3

○システム構成と選択肢

バーチャルYouTuberになるには、バーチャルな部分を担当する3Dモデルと、なんらかのモーションキャプチャシステムが最低限必要です。

A) VR HMDベース
Unity+HTC Vive+Tracker
・Oculus RiftやWindowsMRと比較すると、トラッキング部位を追加で増やせるTrackerに対応したViveが向いています。
・Trackerは腰や膝、肘に装着の上トラッキング精度をあげたり、コントローラ・HMDをTrackerに置き換えることでキャプチャ時の動作自由度をあげるのにも使うことができます。
・Unity+Final IKではなくて、Unreal Engine+IKinemaでも同等のトラッキングが可能そうです。

費用はいわゆるVR Ready PC(10万円前後)+HTC Vive(70,000円)+Tracker(1つ12,500円)でトータルで18万円程度からになります。

※注釈(2018.03.21 更新)
Vive Proが4/6発売の94,000円(税抜)と発表され、同時に元のViveセットが64,250円(税抜)に値下げされました。このVive Pro HMDは「アップグレードキット」であり、ベースステーションやコントローラが別途必要になります。そのため、新規にPro環境を用意しようとすると個別にベースステースションx2とコントローラx2(合計で税込66,000円)を購入しなければならず、あまりお得感はありません。
また、Trackerの在庫がSteam VR 2.0対応の新型が復活した(?)模様で、 値下がりViveと新Trackerを必要に応じて追加購入するのが現状では良さそうです。

B) Perception Neuronベース
(このジャンルとしては)安価(約20万円)なモーショントラッキングのPerception Neuronを使用する方法です。磁気センサまわりの環境相性でトラブることが多く、運用コストが高いですが高精度のトラッキングが可能です。
現行の商用メインストリームYouTuber(?)はこれを前述のVR HMDベースのシステムに追加する形(※注)で運用しているケースが多そうです。
MikuMikuMovingを経由したMMDプラットフォームでも利用が可能ですが、どちらにせよボーン構造やモーションデータに関するそれなりの知識と気合いと根性でのノウハウ蓄積が必要という認識です。

※注釈(2018.01.09 追記)
「Perception NeuronをVR HMDベースのシステムに追加・・・」としれっと書いてしまいましたが、Perception Neuron+PCでVR側のしくみを使わず、単独でモーションキャプチャと声の収録のみを同時に行い、あとから動画を編集するプロセスを採っているところの方が多いかもしれません。
参考:Kigurumi Live Animator KiLA
参考:バーチャルYouTuberだけど、シロちゃんの秘密を探りに「第1回バーチャル YouTuber 勉強会」に行ってきた!|バーチャル美少女ねむの人類美少女計画

C) Kinectベース
DanceEvolutionなどのボディトラッキングに対応したXBOXゲームで有名な、Kinectを使用する方法です。
Kinect自体がEOL(End of Life, 生産終了)となってしまったことが最大の欠点ではありますが、MikuMikuCaptureでvmd形式でのモーションデータが記録できるなどの利点があり、その後モーフ追加なども含むモーション編集もMMDプラットフォーム上で実施することができ、最終ターゲットがあくまで動画であるバーチャルYouTuber目的の際にはアリの選択肢だと思われます。

# Unity-Humanoid対応が必須のルートであるVRChatターゲットと比較すると、バーチャルYouTuberターゲットではMMDプラットフォーム上ですべてが済むルートがあるのがおもしろいところです。niconicoのプラットフォームとしてのメリット低下に伴って定着してしまったYouTubeへのMMD動画投稿のルートとライセンス観点では同等であり、このあたりは「めっちゃ複雑で大変だとは思うけど正確に議論を頼む〜」という気持ちです。

また、同系統のデバイスとして、RealSense単独運用組もいらっしゃるかもしれません。
参考:Archived - Facial Recognition, Emotion Tracking, and 10-Finger Gesture Recognition with the Intel® RealSense™ | Intel® Software
参考:密着!あのバーチャルYouTuberさんみたい!3Dモーションキャプチャーが凄い......! - YouTube こちらはPerceptionNeuron+RealSenseのように見えます。

D) その他
以前FaceRig実況がバズった際にGOROmanさんが試していたコントローラ裁きの疑似再現(参考:中の人(二次元)になる方法【FaceRig × Live2D × Unity × OBS × AVVoiceChanger × 気合】 - Medium)のように、身ぶり手ぶりはぶっちゃけおまけ要素のため、顔の向きとそれっぽい表情の切り替えができればバーチャルYouTuberの要件は満たしているといえます。

Daydreamのようなアームモデルエミュレーション(傾きだけで腕の姿勢をそれっぽく推測する)と、iPhoneXのTrueDepthカメラを組み合わせることができれば片手とフェイシャルのキャプチャが実現するので、2018年中に一点モノレベルだとは思いますが、「バーチャルYouTuberスマホ配信アプリ」までは到達するんじゃないかな、と思っています。

◯カメラデバイスへの頭・両手のモーショントラッキング映像流し込み(3時間)


Hangout等のビデオ通話サービス、YouTube LiveやTwitch等の動画配信サービスと、対応するOBS Studioなどのデスクトップ配信ツールへの対応を想定して、カメラデバイスに映像を流しこむのを最初の目標に設定します。

概ねこのエントリですべてが済んでいるとも言えますが、Unity, IK, モーフ, カメラキャプチャについて、とりすーぷさんのエントリを参考にします。

VRで「結月ゆかり」になって生放送する/@toRisouP
https://qiita.com/toRisouP/items/14fe62f89808013f9f6e

【環境】
・Unity 2017.3.0p1
 ・Final IK 1.3
 ・Steam VR Plugin 1.2.2 (Jun 29, 2017)
 ・UnityCam

・利用モデル
Mikoko/ねこます KemomimiVRchIP
https://nekomasu.wixsite.com/kemomimioukoku/character

・VR IK(Final IK)
とりすーぷさんのエントリから紹介されているはるねずみさんのエントリを参考にします。

Unity+Vive+MMD+VRIKで、キズナアイちゃんになりきりVR
https://qiita.com/halne369/items/daadf0e00330a1019830

ここまでで無事、PCのカメラデバイスとしてViveのHMDを頭、コントローラを両手にマッピングしたIK制御されたキャラクターになりきることができました。

UnityCam補足:2019.01.28追記
UnityCamはWindowsのDirectShow的な仮想カメラデバイスdllを登録して、そこにUnityカメラの映像を流し込むしくみになっています。
そのため、Runme First配下はUnityプロジェクト配下ではなく、どこか半永続的に管理できるように別の固定的なパスに移動し、そこからregisterする方が無難です。


Unityカメラ側のTarget EyeをNone(Main Display)に変更する必要があります。

また、UnityCamは重いので最終目的がカメラデバイスでなく動画の際にはUnityの画面を直接ウィンドウキャプチャした方がFPSが落ちにくいとのことです(Webカメラ設定の60fpsなどにひっぱられる?)

◯HMDが重いのでTrackerに切り替える(2時間)

VR HMDをかぶってしまうとPC操作ができないのでヘッドバンドのように頭の上部に装着していたのですが、さすがに重くて不安定です。 Vive TrackerをHMDの代わりにFinal IKにアサインすることにしました。

Trackerについての基本的な話は@kohack_vこと坪倉さんのエントリが分かりやすく、そしてすべてです。

HTC Vive Trackerの仕様・使い方まとめ | TsubokuLab - ツボクラボ
http://teruaki-tsubokura.com/Lab/htc-vive-tracker/

Viveのコントローラ・Trackerは起動順にIDが割り振られる(っぽい)ので、Unity上で固定IDにしているとFinal IKでのトラッキング対象がずれておかしなことになります。起動後に手動で入れ替えてしまう運用回避が楽で、Unityエディタ上起動でなくexe起動だったとしても、運用回避のための設定UIを作りこんでしまうほうがTrackerの充電交換などにも勝てそうな気がします。

tracker1.png
tracker2.png
VRIKのターゲットをTrackerに向けるのはこのくらい雑な設定で動きます。

◯OBS StudioでYouTube Live(3時間)

こちらはとくにバーチャルYouTuberに特化した話ではありません。他に参考になるサイトがいっぱいあるのでググってください。
OBS Studioのインストーラのダウンロードに苦戦しましたが、BitTorrentクライアントを利用するとすぐにダウンロードできました。

ViveのHMDに付属するマイクが動かないという罠にハマった(ドライバ入れ直しなどを試してみましたがどうも個体不良っぽいです・・・いつから壊れてたのやら)ものの、結局別ヘッドセットのマイクを首に装着することで回避しました。
また、Viveのシステムは2.4GHz帯を使っているので、2.4GHzのWiFi環境と相性が悪いです。5GHz対応ルータの導入と、母体のPCのネットワーク接続を有線LANに切り替えることで回避しました。

◯マイク入力ベースのリップシンク(2時間)
Unity でリップシンクができる OVRLipSync を試してみた - 凹みTips
http://tips.hecomi.com/entry/2016/02/16/202634
Oculus Lipsync Unity | Developer Center | Oculus
https://developer.oculus.com/downloads/package/oculus-lipsync-unity/
1.16.0 | Published 2017/06/30をダウンロードします。

単独ではさっくり動いたのですが、既存のSceneに組み込んだら動かない問題が出て苦戦しました。Sceneをほぼ作り直すことで回避という力技のせいで2時間かかりました。
なお、順調に行けば1時間で済みますが、前提として3Dモデルが音素別の口の形にあわせたBlendShapeに対応している必要があります(ミニマムだと閉じた口と母音5つぐらい?)。ねこますさんのMikokoモデルはVRChatのリップシンク仕様(15種類の音素仕様が同一です)に基づいた音素が全てBlendShapeとして対応しているため、OVRLipSyncの適用はとくに悩む必要がありません。(詳しくないですがたぶんVRChatがOVRLipSyncを使ってるんじゃないかな・・・)

・UnityにフォーカスがないとMic Inputが動かない
 →OVRLipSyncMicInputにバックグラウンドで録音を一時停止する処理がかかれている、スクリプトをコメントアウトする
・キーボード操作でループバック音声再生のON/OFFが切り替わる
 →OVRLipSyncContextにデバッグ用機能として実装されている、邪魔ならキーバインドを変更またはコメントアウトする
・consoleにエラー「OVRPhonemeContext.Start ERROR: Could not create Phoneme context.」が出て動かない
 →OVRLipSyncContextより先にOVRLipSyncがAwakeしないとダメっぽい、新しめのUnityでよく出る。Script Execution Order設定や[DefaultExecutionOrder(-n)]属性の指定などでOVRLipSyncを優先させる。(OVRLipSyncスクリプトの再アタッチよりはOrder設定が望ましい)


何度か敗北したので色々おいかけて動画にまとめました。一番最初に試す際などに参考にしていただけると役に立つかもしれません。

◯自動まばたき(1時間)


プロ生ちゃんに瞬きさせる - Onoty3D
http://onoty3d.hatenablog.com/entry/2015/03/24/211247
を参考に、最低限の動作を確認したのち、ユニティちゃんの瞬きを滑らかにするスクリプト
https://dskjal.com/unity/unitychan-blink-smoother.html
をベースに改造しました。

まぶたまわりのモーフ構造に依存しますので、モデル毎に調整が必要ですが、スクリプトを読むと比較的シンプルな力業で、モデル側が目をつぶるBlendShapeに対応さえしていれば難しくはありません。

Mikokoモデル向け自動まばたき:AutoBlink.cs

◯キー入力によるモーフ切り替え(1時間)
他のYouTuberの方々は、リアルタイムでモーフ切り替え担当者が居るか、モーションキャプチャデータを使った動画編集時に手動で追加している模様です。
僕は個人なので特定キーの押下でを切り替える力技スクリプトを実装しました。

Mikokoモデル向けキー入力モーフ切り替え:MorphKeyController.cs

◯ワキからインゴット召喚+投げ(2時間)


Vive Trackerでモノを掴んで投げる話はFixedJointとColliderの組み合わせで以下のエントリの通りです。

HTC Vive向けにアプリケーションを開発する〜コントローラでインタラクション編〜 - VOYAGE GROUP VR室ブログ
http://vr-lab.voyagegroup.com/entry/2016/10/13/003204

で、インゴットをInstantiateしてFixedJointコンポーネントを追加すると物理特性を扱えるようになるRigidbodyコンポーネントが自動的につきますので、今まで登場していなかった重力まわりが影響するようになり、腕が勝手に下がっていく、といった動きをするようになります。
ViveコントローラのController(left)やController(right)にRigidbodyコンポーネントを追加した際に、「他の仕組みで運動学上の制御が行われるので(RigidbodyとしてUnityの物理演算の影響を受けないようにする)」という意味のisKinematicのチェックを入れておく必要があります。

ViveコントローラでPrefabを生成して投げる:IngotGenerator.cs

◯Viveコントローラで指の形を制御(2時間)



前述のとりすーぷ氏のエントリではMMD4FingerControllerなる「任意の指を好きな度合いで曲げる」便利そうなスクリプトがあったので、HumanoidのFingerまわりにもそういうAPIがあったりするのかな?と思ったのですが、AnimatorからHumanoidの仕様に基づいた指定部位のTransformの参照をもってくるAPIまでしかありませんでしたorz

次に期待したのは、せっかくモデルがMecanim Humanoid対応なので、「グー・チョキ・パーのHumanoid対応モーション拾ってきて、AnimatorControllerで制御すればいけるだろう」と思ったのですが、シンプルな手の形だけのモーションが都合よく見つかったりはしませんでしたo..rz。

もっとサボりたかったのですが、結局「指が5本x3関節x両手分の2=30箇所のlocalRotationを直接いじる」という力技スクリプトを書きました。
今は1フレームで指の形が変化し終わってしまうので不自然なのですが、Lerpでなまして5フレぐらいかけて指の形が変化するあたりまでは実装しようと思っています。

Viveのコントローラのタッチパネルは、少々癖があって「狙ったところを少し指を滑らせるようにしてタッチ」する必要があります。十字キーのように使わせるプログラムをいくらか見るのですが、Viveのチュートリアル中での風船カラーの選択のように「左上・右上・左下・右下」という四象限制御の方が操作難易度が低いように思えます。

Mecanimの指の角度を直接指定する力技グー・チョキ・パー制御:HandController.cs, MecanimHandController.cs

ingotandhandcontroller.png
mecanimhand.png
インゴット投げとグー・チョキ・パー制御スクリプトはViveコントローラ側にアタッチしています。Mecanim手指の制御スクリプトはAnimator.GetBoneTransform APIを使うのでAnimatorコンポーネントがついたMikokoモデルにアタッチしています。

◯モーション録画+音声録音と動画編集(尺5分で3時間)

ここまで動いたらあとはネタを考えて喋って動画を編集します。Unity上で適当なグリーンバックを作ってOBS Studioで必要なところにクロマキー設定を挟みつつ録画・録音したのち、AviUtlの拡張編集でひたすら字幕をつけました。

・台本はがっつり用意した方がいいです。
・字幕だけ読んでも話が通るぐらい字幕もがっつりつけた方が見る側のコストが下がるので良さそうです。
・週報を題材にしたためいきなり数分オーダでしたが、30秒〜1分の小ネタでおさえたほうが色々楽そうです。
・BGM・効果音は次回やる気があったらチャレンジしたいと思います。

あなたも今日からバーチャルYouTuber, 今すぐインストー

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月 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)