Adobe Caractor Animator(下書き中)
サイクルレイヤー:アニメーションを追加(髪の揺れ、手を振る、など)
フェーダー:フェードイン、フェードアウト
サイクルの一時停止:アニメーションを停止
スワップセット:パーツの置換
WinMR Headset のセットアップとアプリ作成
HP Windows Mixed Reality Headset (開発者版)が届いたので使ってみました。
※日本HPの通販分ではなく、米国の友達に頼んでいたもの
以下セットアップの手順など
まだスクリーンショットを貼っただけなので諸々あとで書き足します~~
外観写真
軽いしかさばらないし、個人的にはすごく着け心地いいです(たまたま頭の形に合っただけかも)
箱の外観
同梱物 本体とケーブル、取り扱い説明書
後頭部のつまみをカチカチと回すことで絞めたり緩めたりできます。簡単!
両レンズの間に脱着センサー
スポンジは面ファスナーマジックテープで固定されています。簡単に交換できそう。(交換部品は販売されてません)
レンズ部分はフラップ機構になっています。
頭に装着したままでレンズだけカチッと上げることができます。(ただし、上げるとバランスが崩れてヘッドバンドがズレてしまう…)
上げたところ
Acerのヘッドセットはベルトがもっとコンパクトですね。
セットアップ手順
DLファイルは Windows Dev Center Installation checklist for immersive headsets を参照
USBとHDMIケーブルをPCに接続
WindowsUpdateを実行
OS再起動後、仮想現実ポータル画面が起動します。
開発者モードに設定
Windows 10 Creators Updateをインストール
もういちど仮想現実ポータルを起動
(机の周りが狭かったのでスキップしてしまいました)
仮想現実ポータル(あとで書き足します)
HMDをつけない状態でストアからHoloTourを選択しても起動しない
仮想現実ポータルの内部から起動する必要がある
でもこの画面から先に進めない…
Unityでアプリをつくる
Windows Insider Preview SDK をインストール
DLには上記の開発者モード(Windows Insider program)が有効になっている必要がある
MS推奨の対応UnityバージョンはUnity 2017.2 Beta4
なおMMD4MecanimはUnity 2017.2 Betaに未対応(後日対応予定とのこと)
(あとで書きたします)
設定項目
HEARTalk UU-001であの子とおしゃべり
HEARTalk™ UU-001
ふあーーーHEARtalkめっちゃたのしいです!!テレル!!(音源については個人的な楽しみのためのあれなのでご容赦ください…) pic.twitter.com/cQf1YGfhiF
— はいぬっか (@hinzka) 2017年6月21日
ヤマハ株式会社が開発した自然応答技術の呼称が「HEARTalk™」(ハートーク)
これを搭載した基板が『HEARTalk™ UU-001』です。
体験者が発話する内容の「音律」・「長さ」・「語尾変化(上げ下げ)」を自動的に判断し、対応する音声データを選択して機敏に再生します。
音源にはwavファイルを使っていて、ユーザーが自由に差し替えることができます。
つまりこれを使うと、任意の「声」ときわめて自然な雰囲気で対話することができてしまうのです。これはヤバイ。
詳しくはこちら
やったことざっくり書いておきます。
①音源作成
・wavファイル、モノラル、16ビット
・ABCとEFGの6グループそれぞれに1種類以上の音声を用意
・冒頭の空白はなるべく削除(応答を機敏にするため)
・本体の容量が小さいのと、自然な応答になりにくいので、あまり長い音声はNG
会話に対して応答する音声を作成。
自分の声をスマホで録音したり、既存の音源をむにゃむにゃしたり。
mp3データなどはiTunesでwavファイルに変換できます。
トラックの編集やピッチシフトができるフリーソフトも色々あります。
製品公式アカウントさんからのおすすめ
https://t.co/vPXhbUBZtw
— HEARTalk UU-001 (@HEARTalk_UU001) 2017年6月27日
vocalshifterを使ってみてください。
無料版でかなりのことができます。
よく分からない音程の問題も解決するかも。
②音源整理、リネーム
グループの特性を考慮しながら音源を整理。
下記のような表を作って埋めていく感じ。
(音律のことよくわからないので相対的な高低でなんとなく並べました)
表に従い、対応するファイル名にリネーム。 例:A05.wav(=Aグループでファの音律)
ABC、EFGの6グループそれぞれに最低1つファイルがあればとりあえずOK。
ピッチ変換ソフトで別音階のファイルを作ってもいいかも。
③HEARTalk UU-001に接続
PCにUSBで接続するとUU-001に電源が入り、PC上に外部記憶装置として表示される。
④デフォルトの音声データを削除
(新しい音源と古い音源が混ざらないように古いほうは削除しておく)
公式サイトから"allclr"ファイルをDL。
これをHEARTalk UU-001のrootにドラッグ&ドロップでコピー(メモリ内の音声データが削除される)
⑤音声データを転送
④同様、rootにドラッグ&ドロップでコピーすることでデータが書き込まれる。
(同名のファイルは上書きされる)
HEARTalk UU-001のrootにコピーしたファイルはUSBの抜き差しで消えますが、内部のデータはちゃんと書き換わっています。
UU-001をスピーカーにつないで話しかけてみると相槌をうってくれるはず。
こちらの声を認識すると緑のランプが点滅します。
ヒミツのくまちゃんに接続
HEARTalk が届いたので、ヒミツのクマちゃんにつないでみました。音声は東北きりたんです。コミュ障なので何を話しかけたら良いかよくわからない、、、。 #HTUU-001 pic.twitter.com/oRiVbH1INv
— ミクミンP/Kazuhiro Sasao (@ksasao) 2017年6月13日
ミクミンPさんの真似をして買ってみました。ぬいぐるみ型トランシーバーユニットです。Amazonで3000円くらいで購入できます(2017年6月現在)。
ヒミツのくまちゃんには本体に単三電池3本、ハートシーバー側に単四電池3本が別途必要です。また、電池フタを開けるのに小さいドライバーが必要です。
右の背中にポケットがあり、オーディオミニジャックを差し込むことができます。
HEARTalk UU-001と接続して電源を入れると、応答の音声がスピーカーから聞こえ、それにあわせてくまちゃんが首ふり動作をします。
ViveTracker3つ追加で全身トラッキング
頭部のViveと左右のハンドコントローラに3つのTrackerを追加し、合計6点のトラッキングでキャラクターモデルを操作します。(今回は指の動きはとっていません)
Viveのデモをちょっと触ってみたら難しくてうまく使えなかったのですが、FinalIKのVRIKだけでもかなり動かせたのでまとめておきます。
環境:Unity5.6.0f3
(左足に引っかかったケーブルを手探りでよけるの図)
使用デバイス
HTC Vive、Viveコントローラ(左右)
Vive Tracker 3個
3つのTrackerは、腰の後ろ、左右の足の甲にそれぞれ装着します。
取付の際には、坪倉さん(@kohack_v)が3Dデータを公開されているアダプター(HTC Vive Tracker Band Adapter)がとても便利です。お近くの3Dプリント出力サービスなどを利用してもいいかも。
更にVive Trackerを手や足に巻きつけられるアダプターをThingiverseで公開しました。マジックテープや結束バンドで固定すると良さそうです。#HTCVive
— 坪倉輝明 @5/8Unite登壇 (@kohack_v) 2017年3月30日
→HTC Vive Tracker Band Adapterhttps://t.co/PokSlSyCyP pic.twitter.com/NIGrNrKFw9
Vive Tracker用のバンドアダプター、ちょっと小さすぎて強度と安定性が不安だったので少し大きめサイズも作っておきました👍 #HTCVive https://t.co/PokSlSyCyP pic.twitter.com/4d4KLgAtW6
— 坪倉輝明 @5/8Unite登壇 (@kohack_v) 2017年4月1日
百円ショップの穴あきサンダルに結束バンドで固定すると簡単で安上りです。
VIVEトラッカーの足への固定を仮でこんな風にやってみたが、安定してるし着脱も簡単なんで本採用に昇格した。キャンドゥの100円スリッパ+100本400円のタイラップ8本で132円(税抜き)という驚きの低コスト。 pic.twitter.com/wYjWxCQcEh
— ROBA@ヨレヨレ (@vjroba) 2017年4月18日
ウエスト用には同じく百円ショップのマジックテープ式結束バンドが使えました。
幅38ミリのベルト、大きいほうのアダプターにぴったり。
使用アセット
・SteamVR Plugin(無料)
https://www.assetstore.unity3d.com/jp/#!/content/32647
ViveやViveTrackerを扱うために使います。
・Final IK(有料)
https://www.assetstore.unity3d.com/jp/#!/content/14290
Trackerで取得した座標から、キャラクターの姿勢を補完するのに使います。
・Vive Stereo Rendering Toolkit(無料)
https://www.assetstore.unity3d.com/jp/#!/content/71255
鏡を作るのに使います。これはなくても構いません。
手順
キャラクターを配置します。
鏡を設置します。
Planeを作成して、垂直にするためにZ座標を-90回転させます。
HTC.UnityPlugin > Scripts > StereoRenderer スクリプトをアタッチし、StereoRendererコンポーネントのIs Mirrorにチェックを入れるだけです。
VRで見ると鏡に映った状態を確認できます。裏表があるので注意してください。
SteamVR
デフォルトのカメラを削除し、SteamVR PluginのPrefabより[CameraRig]をシーンに置きます。
この中に左右のコントローラが配置されています。
これを(左右どちらでもいいので)Trackerの数だけDuplicateしてリネームします。
[CameraRig]のSteam VR_Controller ManagerコンポーネントにTrackerを登録します。
Objectsの項目を開き、SizeにTrackerの個数を指定します。
各Elementに、さきほど作成したTrackerを設定します。
VRIK
キャラクターにVRIKコンポーネントを追加します。VRIKコンポーネントは、手や足をトラッカーに追従させながら、姿勢全体を適切に調整してくれます。
ただし、ターゲットにViveのHMD位置をそのまま設定するとモデルの頭部が視界に入ってしまいます。必要に応じてオフセットさせるため、[CameraRig]の各オブジェクトに子オブジェクトを作成します。
各Transformで、頭部はZ座標のPositionを-0.3、腰はZ座標のPositionを-0.15しています(モデルやトラッカーの装着状態によって調整が必要と思います)。
VRIKにターゲットを設定します。
SpineのHead Target:上記で作成したCamera (head)の子オブジェクト
SpineのPelvis Target:腰にあたるTracerの子オブジェクト
LeftArm、RightArm:左右のControllerのModel
LeftLeg、RightLeg:左右の足にあたるTrackerのModel
上記の6個のターゲットについて、それぞれPosition WeightとRotation Weightを1(=100%のこと)に設定します。
この状態で確認すると腰の追従がおかしくなってしまいました。
腰のTrackerだけが縦位置になっているためだと思います。
腰のターゲットにしているTrackerの子オブジェクトのTransformで、X座標を180回転させるとうまくいきました。(結果的にこれで動いてるだけで、どういう意味なのかはよくわかりません。Z軸を-90度なのでは?と思ったのですがこれだとダメでした。不思議。)
ああっ腰のトラッカーは縦になってるから回転させないといけないのでした!ぐるんぐるんしなくなりました、椅子にも座れるよー。Neuronではできなかったジャンプもできる。ジャンプ力は中の人しだいだ。 pic.twitter.com/f0zIbSOHS7
— はいぬっか (@hinzka) 2017年5月7日
また、この状態で深くしゃがむと腰がぐるぐる回転してしまいました。
キャラクターに空のAnimatorControllerを設定すると回転しなくなりました。
しゃがむとどうしても腰が回転してしまってたのですが、空のAnimatorControllerを設定することであっさり解決しました、ワーイ! pic.twitter.com/t8RZGMf8Xf
— はいぬっか (@hinzka) 2017年5月7日
なお、コントローラやトラッカーがベースステーションから隠れるとロストしてしまいます。Trackerは小さいので特にロストしやすいです。
装着したトラッカーがスーッと遠くに行っちゃうときは、服とかで隠れてないか確認するといいかも。動画のこれはズボンの裾をまくったら直りました。 pic.twitter.com/q4yhn6Mucy
— はいぬっか (@hinzka) 2017年5月7日
VRIKは頭の向きで膝の曲がる方向を決めているようで、体をひねった状態だと逆関節になってしまいます。追加で両膝にもTrackerをつければ正しく曲げることができそうです。
以上ざっくりとですが、全身トラッキングのVRコスプレで遊べるようになりました!
ここでは指の追従はできていません。また、モーションの保存と再生もまだ試していません。
※この記事で使っているモデルはこちらです。
♯惑音イド (まどねいど)は惑さん @madoi_88 によるUTAU音声ライブラリのキャラクターです。https://t.co/V6IonCVtrK
— はいぬっか (@hinzka) 2017年1月6日
MMDモデルはゴゴさん @3str6 作成。Unity学習のテストモデルにお借りしてます。スゴイカワイイ。特に脇と鼠蹊部。 pic.twitter.com/1atAZByzPb
MMDキャラクターモデルをVRでとにかく見る
Unityを使って、任意のMMDモデルをVRで見るための手順(いろいろ省略版)
※MMDモデル・モーションを利用するにあたっては、同梱されているReadmeなどの利用規約の確認・遵守をお願いします。
公開・配布を目的とするコンテンツに利用する際は(明示的に許可されている場合を除き)モデル・モーション制作者への問い合わせが必要です。
必要なもの
ダウンロードするもの
- Unityエディタ(ゲーム開発エンジン。3Dオブジェクトやアニメーション、音源、エフェクト等を設定し、HMD向けに出力するアプリを作成できる。Personalエディションは無料で利用可能)
- MMD4Mecanim(MMDのモデルデータを変換し、Unityで扱える形式にするツール )
- 1.Unityのインストール
- 2.MMD4Mecanimのインポート
- 3.MMDモデルファイルのインポート
- 4.MMD4Mecanimを用いたモデルデータ変換
- 5.シーンへの配置とカメラの調整
- 6.アニメーションコントローラの追加
- 7.プレイモードで確認
- 8.VRモードに設定
- 9.ビルド(実行ファイル作成)
- 10.シーン保存
1.Unityのインストール
Unity公式サイトよりインストーラをダウンロードします。無料版で問題ありません。
インストール完了後、Unityエディタを起動すると、ログイン画面が表示されます。
「create one 」をクリックし、Webブラウザでアカウント作成を行ってください。
メールアドレスの登録が必要です。
ログイン画面でメールアドレスとパスワードを入力すると、プロジェクト作成画面が表示されます。
Project name:任意のプロジェクト名を入力します。
Location:プロジェクトのデータを格納するフォルダを指定します。
プロジェクト初期画面
デフォルトのレイアウトは少し見づらいかもしれません。
Window > Layout からレイアウトを変更できます。(ここでは「2 by 3」に設定しています)
2.MMD4Mecanimのインポート
MMD4Mecanimの開発者Noraさんのサイトより、ZIPファイルをダウンロードして解凍します。
Unityのプロジェクトにインポートします。
UnityPackageをダブルクリック、またはAssetsフォルダの中にドラッグ&ドロップしてください。
UnityPackageの内容が表示されます。
Importをクリックするとインポートを開始します。
インポートが完了すると、Assetsフォルダにファイルが追加されます。
3.MMDモデルファイルのインポート
MMDモデルファイルを用意します。
プロジェクトのAssetフォルダに、フォルダごとドラッグ&ドロップします。
プロジェクト内にモデルフォルダがコピーされます。
pmxファイルと同名のMMD4Mecanimファイルが追加されていることを確認します。
4.MMD4Mecanimを用いたモデルデータ変換
MMDモデルファイルを、Unityで扱える形式に変換します。
MMD4Mecanimファイルを選択します。
規約の内容を確認し、利用に問題なければチェック欄にチェックを入れて「同意する」をクリックします。
変換設定の画面に遷移します。
MMDのモーションを入れたい場合はVMDファイル(MMDのモーションファイル)を追加します。
プロジェクトフォルダにVMDファイルをドラッグ&ドロップします。
(ここではMMD4Mecanim同梱の 歩き.VMD を使っています)
MMD4Mecanimの変換画面で、VMDの欄にこのファイルをドラッグします。
Processをクリックすると変換実行します。
コマンドプロンプトが開き、変換処理が開始されます。
このアイコンのファイルは「Prefab(プレハブ)」といい、複製のためのひな形となるものです。
モデルのPrefabを選択するとモデル情報が表示されます。モデルの画像が正しく表示されていれば変換成功です。
5.シーンへの配置とカメラの調整
Unityでは、シーンを編集することでゲームコンテンツを構成していきます。
モデルのPrefabを、Hierarchy(ヒエラルキー、階層)タブまたはSceneタブにドラッグ&ドロップします。
モデルのオブジェクトがシーンに出現します。
このように、Prefabをもとに作成されたオブジェクトを「Instance(インスタンス)」と言います。
配置したあと、矢印をドラッグすることで移動させることができます。
カメラも同様の方法で移動させ、GAMEタブの表示を調整します。
6.アニメーションコントローラの追加
アニメーションさせるためのコントローラを追加します。
Projectタブのすぐ下にあるCreateボタンから、
Create > Animator Controller でAnimatorControllerが作成できます。
または、Assetsフォルダ内で右クリックし、
Create > Animator Controller でも作成できます。
追加されたコントローラは適宜リネームしてかまいません。
モデルのInstanceを選択し、Inspectorタブを確認します。
AnimatiorコンポーネントにあるController欄に、作成したAnimatorControllerをドラッグ&ドロップします。
設定したAnimatorControllerファイルにアニメーションクリップを設定します。
VMDモーションファイルから変換されたアニメーションクリップを、Animatorタブにドラッグ&ドロップします。
モーションファイルはモデルのPrefabの中に格納されています。
7.プレイモードで確認
テスト用の簡易モードで実際の動作を確認します。
左端の三角ボタンをクリックするとプレイモードを開始します。
再度クリックすると停止します。
モーションを設定している場合、モデルがアニメーションします。
設定していない場合は動かないままです。
プレイモードで動作させている間は、オブジェクト移動などの変更を行っても、プレイモード終了と同時にリセットされてしまいます。
初期状態ではプレイモードと編集モードが紛らわしいため、上記のように、プレイモード中のUnityエディタ画面に色をつけると便利です。
Edit > Preferences で Unity Preferencesウインドウを開き、Playmode tint の項目でわかりやすい色を選択します。
8.VRモードに設定
Unity側の機能で、デバイス用のファイルを追加することなくHMDへの出力を行うことができます。
Edit > Project Settings > Player と選択していき、PlayerSettingsの画面を開きます。
Virtual Reality Supported のチェックボックスにチェックを入れます。
Virtual Reality Supported にチェックを入れると、その下にSDK選択リストが表示されます。
利用するHMDデバイスがOculus Riftの場合は、SDKに「Oculus」を選択します。
利用するHMDデバイスがHTC Viveの場合は、SDKに「OpenVR」を選択します。
HMDが正しく接続されていれば、この状態でプレイモードを開始するとHMD側に映像が表示されます。
9.ビルド(実行ファイル作成)
ビルドを行い、実行ファイルを作成します。
File > Build Settings... を選択します。
ビルド設定ウインドウが開きます。
PlatformがPC、Architectureが環境に合ったものになっていることを確認してBuildをクリックします。
実行ファイルの名前を設定して「保存」をクリックします。
ビルド処理が完了すると、ビルド先のフォルダが開きます。
上記で設定した名称の実行フォルダとデータフォルダが作成されます。
これでVRアプリが作成できました!
10.シーン保存
このままUnityエディタを終了すると、シーンに設定した内容は失われてしまうので、シーンを保存します。
File > Save Scene as... を選択します。
任意のシーン名を設定し、「保存」をクリックします。
シーンファイルが保存されます。
以上、MMDキャラクターをVRでとにかく見る手順でした。
キャラクターと「会う」というにはまだまだこれからです。
こまった.txt
デスクトップに置いてる こまった.txt のうち解決してる内容
去年くらいから困った順に追加している。あとでちゃんとまとめます。
■standard assetsはバージョンで構成が異なる。解説サイトで使われているファイルが現行バージョンでは含まれてないことがあるので注意
■トスカーナデモ
0.4.4-beta Updated 2014-12-04 にあります。
Unity 4 Legacy Integration | Developer Center | Oculus
Tuscanyフォルダのみをインポートすること。
Terrainのテクスチャが表示されない件は、InspectorのTerrainコンポーネント>Base Terrainの項目で、Materialを「Built In Legacy Diffuse」⇒「Built In Standard」に変更
■HeadLookをアニメーションレイヤーでコントロール
アタッチされたコンポーネントのいちばん上にないとアニメーションのコンポーネントリストに表示されない
⇒Mecanimをコピーして二つ作って間にHeadLookをはさむ。
上のMecanimを削除すると、Headlookをいちばん上に持ってくることができる
■Vuforiaで、WEBカメラの画像が取得できない
Unity5.1.0f3(32bit)で保存する必要がある。その後はUnityバージョンを変更してもいいけどVuforiaをインポートしてはいけない。
https://developer.vuforia.com/forum/unity-3-extension-technical-discussion/cannot-use-web-cam-user-has-not-authorized
■VRIK
Solverじゃなくてスクリプトをアタッチすること。
ターゲットはカメラの中につくった空のゲームオブジェクト。目はちょっと前にずらす。
面倒なのでカメラは人物のデフォルトの方向に置いておくこと!!
鏡の方向を示す看板をおいておくといいかも。
LeapMotionのファイルはなんか配布されてた…
足の設置もなんか配布されてた
■VRカメラと別カメラをモニタに表示する
カメラ二つのディスプレイ番号は同じ!
http://qiita.com/Rauziii/items/5fc45844b551f33184b3
(マウス操作が効いてしまうので入力を切ったほうがよさそう)
■ImageEffect
ovrcamerarigの右目と左目に設定してるけど、効かない。
Oculus Utilities1.6.0にはCenterEyeAnchorにCameraがあって、ImeageEffect効くんだけど、
1.8.0と1.9.0はLeftEyeAnchorとRightEyeAnchorの両方にあって、各々に同じ設定のBloomとか置いても、効かない。
⇒
CenterEyeAnchorに設定したImageEffectsは
5.3.6p5x64+OculusUtilities1.9.0 ⇒ 効かない※HMD点灯しなくなる
5.4.1p4x64+OculusUtilities1.9.0 ⇒ 効く
結論:Unityは推奨バージョンを使おう
■ミラー表示
UnityProの機能で解決(ReflectionProbeのやりかたはあとでしらべる)
MirrorReflectionスクリプト
DisablePixelLightsのチェックが入ってると映ったモデルが暗くなるので外す
■衝突判定
Playmakerを使うとらくちん。
MMD4MFaceのMMD4MFaceControllerをPlaymakerにドラッグ&ドロップ→ScriptControl→CallMethodでSetFace+表情名を指定
■OculusTouch
MMD4Mecanim物理接触用のrigidbodyは、LocalAvatarの両手のコライダ(GrabVolumeBig、GrabVolumeSmall)につけること
■追従して動くオブジェクト
オブジェクトにFixedJointを設定すると、モデルにアイテムを持たせたり取り上げたりできる。
Break Forceの値によってプルプルしたり消し飛んだり⇒30に設定
■HeadLookのオンオフ
ふつうにやるとオフにしたときガクンと戻っちゃう。
デフォルトの視線の先にもう1つターゲットを置いて切り替えるといいかんじ。Enterをトリガーにすると判定がせわしないので遅延フェーズを追加する。