- 2018/02/25 【Unity】ARCore を使って現実世界にプロ生ちゃんを召喚してみる
- 2016/12/11 【Unity】SDプロ生ちゃんを動かす!
- 2015/07/12 【Unity】【C#】Unity4 Free版で RenderTexture のようなオフスクリーンレンダリングをして、ユニティちゃんステージのバックスクリーンを作る
- 2015/06/23 【Unity】プロ生ちゃんを飛行させる!(Unity4)
- 2015/06/21 【Unity】プロ生ちゃんを動かす!(Unity4)
« prev next »
【Unity】ARCore を使って現実世界にプロ生ちゃんを召喚してみる 
2018/02/25 Sun [edit]
やっと ARCore の正式版が 2/23 にリリースされたので、さっそくいじってみることにした。というのはベータ版段階では Galaxy S8 や Google Pixel 等の最新機種しか使えなかったんだよね。正式版(掲載時点:ver.1.0.0)の「Supported Devices」では Android 7.0(Nougat) and later となっている。Galaxy S7 Edge(2016/5/19発売)でも使えるみたいだ。
|
ドキュメントはうん、まぁ、英語だよね(笑)。数ヶ月したら日本語化されてたりするけど、はじめは大体こんなもんだ。GearVR作ってみたときもまだ英語だけだった(今は少し日本語化されている)。なのでとりあえず Google翻訳使いながら、機械的に作ってみた。
※バッテリー温度やコンディション等の取得プラグインはこちら(Android の色々な機能を使える Unity プラグイン)
■デバイスを用意する(Prepare your device)/a>
■新規プロジェクトを作成する(Create a new project)
■SDK をインポートする(Import the SDK)
■ビルド設定を構成する(Configure the build settings)
■サンプルアプリケーションをビルドして実行する(Build and run the sample app)
■次のステップ(Next Steps)
■キャラを入れ替える(オマケ)
(※) Unity 2017.3.0f3 / ARCore 1.0.0 / Windows10(x64) / Galaxy S7 Edge (Android 7.0) で確認
■開発環境の設定(Setting up your development environment)
※基本的にはここの翻訳である。
1.Android SDK のバージョン 7.0(API Level 24)以上をインストールするには以下のようにする。
・「Android Studio」をインストールする。
・Android Studio でメニューから「Tools>Android>SDK Manager」で「Android 7.0 (Nougat)」にチェックを入れてインストールする)。
2.Unity 2017.3.0f2 以上をインストールする(「Personal」(無料)でも良い)。インストールの際には「Android Build Support」にチェックを入れてコンポーネントをインストールする。

※ドキュメントには書かれてないが初回の場合は、インストールした「Android SDK」のパス(Android Studio の SDK Manager を開けばパスがわかる)を Unityエディタのメニュー「Edit>Preferences...」の設定ダイアログの「External Tools」でパスを設定する必要があるかも知れない)。

3.以下のいずれかの方法で「ARCore SDK for Unity」もダウンロードする。
・Unity パッケージ「SDK for Unity」(.unitypackage)をダウンロードする。
・リポジトリから(Gitなどで)Clone する。
git clone https://github.com/google-ar/arcore-unity-sdk.git
4.サポートされているデバイスが必要である。
■デバイスを用意する(Prepare your device)
※基本的にはここの翻訳である。
・サポートされているデバイスを用意し、「開発者向けオプション」を有効化し、「USBデバッグ」をオンにする。
![]() | ![]() |
■新規プロジェクトを作成する(Create a new project)
※基本的にはここの翻訳である。
・Unity で「HelloAR」という名前でプロジェクトを作成し(※名前は任意で良い)、「3D」にする。そして「Create Project」ボタンを押す。

■SDK をインポートする(Import the SDK)
※基本的にはここの翻訳である。
1.Unity のメニューから「Assets>Import package>Custom Package」でダウンロードした「arcore-unity-sdk-vX.X.X.unitypackage」(X.X.Xはバージョン番号が入る)を全てインポートする(プロジェクトエクスプローラでドラッグ&ドロップでも良い)。

2.Unity のプロジェクトエクスプローラでは SDK のファイルと「Assets/GoogleARCore/Examples/HelloAR」にサンプルシーンが見られる。


■ビルド設定を構成する(Configure the build settings)
※基本的にはここの翻訳である。
・Unity でメニューから「File>Build Settings...」を開く。
・次に以下のように設定する。
1.「Platform」のターゲットを「Android」にし、「Switch Platform」ボタンを押す。

2.「Player Settings」ボタンを押し、開いた「PlayerSettings」を以下のように設定する。
・「Other Settings>Rendering>Multithreaded Rendering」をオフにする。
・「Other Settings>Identification>Package Name」にアプリ固有のIDとなる Java のパッケージ名を入れる。例えば:"com.example.helloAR" など(※パッケージ名は任意で良い)。
・「Other Settings>Identification>Minimum API Level」で「Android 7.0 'Nougat'(API level 24)」以上に設定する。
・「Other Settings>Identification>Target API Level」で「Android 7.0 'Nougat'(API level 24)」または「Android 7.1 'Nougat'(API level 25)」に設定する。
・「XR Settings>XR Settings>ARCore Supported」をオンにする。


3.「Scenes In Build」にビルドするシーンを追加する。「HelloAR」の場合は、以下のようにして追加する。
・プロジェクトエクスプローラで「Assets/GoogleARCore/Examples/HelloAR」を探す。
・シーン「HelloAR」をクリックし、「Scenes In Build」にドラッグ&ドロップする(※既にシーンを開いている場合は、「Add open scenes」ボタンでも追加できる)。
■サンプルアプリケーションをビルドして実行する(Build and run the sample app)
※基本的にはここの翻訳である。
・デバイスとPCがUSBで接続されていることを確認したら、「Build And Run」ボタンを押す。すると Unityはプロジェクトを Android APK にビルドし、それを自動的にデバイスにインストールして起動する。

●2回目以降は、メニューから「File>Build & Run」(Crtl+B) でダイアログを開かなくてもビルド→アプリ起動できる
※初回起動時にはデバイス(スマホ)側で ARCore のインストール、またはアップデートを促されることがある。

(※以下、ドキュメントをまるっと google翻訳→コピペ)
・あなたのデバイスを移動すると、アプリは自動的に平面を検出し、ダイヤモンドグリッドを描画します。 グリッドをタップすると、Androidロボットが地面に置かれます。
・Android Logcatを使用してログメッセージを表示するか、Android Device Monitor を使用してデバイスをより包括的に分析することができます。
■次のステップ(Next Steps)
※基本的にはここの翻訳である。
※ARCore を自分のアプリに組み込むには、以下を参照(ARCore の対応機種やインスト状態、アップデートの必要性などの事が書かれている)。
・Enable ARCore
・ARCore for Unity API Reference
■キャラを入れ替える(オマケ)
これはただのオマケだが、ヒエラルキーの「Exsample Controller」を選択肢、インスペクタで「Andy Android Prefab」(海外ではドロイド君ではなくて、アンディ君と言うのか(?))のプレファブを入れ替えれば、AR でクリックしたとき出て来るキャラを他のキャラにすることもできる。サイズは原寸(SDプロ生ちゃんは約1m)みたいなので、特にスケールはいじる必要は無いようだ(元がオリジナルサイズの場合)。色々試してみよう。
|
|
|
|
●飛行ARユニティちゃんver
| ●ARでドラゴンとバトル!
|
|
PronamaChan CRS with ARCore from Fantom on Vimeo.
(関連記事)
【Unity】GearVR アプリをビルドする
【Unity】SDプロ生ちゃんを動かす!
【Unity】【C#】クエリちゃんを飛行させる!
【Unity】【C#】ユニティちゃんを飛行させる!

【Unity】SDプロ生ちゃんを動かす! 
2016/12/11 Sun [edit]
以前、標準サイズのプロ生ちゃんを動かす方法を書いてみたのだが、その後、Unity エディタやモデルのバージョンアップに伴い、記事の内容がかなり古くなってしまったので、改めて記事を書き直してみることにした。
せっかくなので当時のモデルには入ってなかった「SDサイズ」を動かしてみようと思う。内容的には標準サイズのプロ生ちゃんを動かす方法と変わらないので、SDプロ生ちゃんを動かした後、標準サイズのモデルに入れ替える方法も兼ねてやってみよう。最新版(掲載時点:Ver.3・2016/11/06)には Tシャツ姿なども入っているので、試しに動かしてみる。基本的には簡略のため、ほとんどがデフォルト状態のままいくので、微調整は各自で適当にやって欲しい。
※ Unity 5.5.0f3 / Windows10(x64) で確認
■動かすためのセットアップ
■標準サイズ(Tシャツ)のプロ生ちゃんに変更してみる
■ドラッグでアングルを変えられるカメラをセットアップする
■簡単なステージを作ってみる
■スカイボックスを設定する
■インポート等前準備
1.はじめに「暮井 慧(プロ生ちゃん) MMD/Unity/FBX 公式データ」をダウンロードしよう。ニコニコのアカウントが必要なので、無ければ適当にアカウントを作れば良い。右側にある「ダウンロード」ボタンを押せば、zip がダウンロードできる。ダウンロードが完了したら解凍して、「Pronama-chan_Ver3>Unity(Ver.3)」フォルダにある「PronamaChan_Ver3.unitypackage」を新しいプロジェクトにでもインポートしよう(SDだけなら「PronamaChanSD_Ver3.unitypackage」でも良い)。またエディタがUnity5.5以降なら「PronamaChanShaderForUnity5.5.unitypackage」(5.5用シェーダ)もインポートしても良いかも知れない。
2.次にモデルを動かすために、ユニティちゃんのオフィシャルサイトからユニティちゃんモデルのパッケージをダウンロードしよう。右上の「DATA DOWNLOAD」を押して、キャラクター利用のガイドラインの一番下まで行き、「ユニティちゃんライセンス」に同意すればダウンロードページへ行ける。ここから「ユニティちゃん 3Dモデルデータ」(掲載時点 Version 1.2 [UnityChan_1_2.unitypackage])をダウンロードする。これも同じようにプロジェクトへインポートしよう。
3.準備ができたら、とりあえず動き回れる床を作りたいので、「GameObject>3D Object」メニューから「Cube」などで床を作ろう。「Transform」で Y 軸とスケールだけ調整しよう。大きさなどは任意で良い。


4.次にプロ生ちゃんのモデルを配置しよう。プロジェクトエクスプローラで「PronamaChan>Prefab>SD>Unlit」を開き、「PronamaChan_SD_dynamic_xxx.prefab」(xxx はスパッツなどのバリエーション)をヒエラルキーにドラッグ&ドロップする。ちなみに「~_dynamic」は「揺れ物(髪やスカートなどの揺れ)」がセットアップされているプレファブだ。自力でセットアップするのは非常に大変なので、製作者様には本当に感謝としか言いようがない(笑)。位置だけは (0, 0, 0) にしておこう。ずれてしまった場合は Transform の Position で修正できる。


5.モデルを配置したら、「GameObject」メニューから「Create Empty」で空オブジェクトを作り、適当に名前を付け、Position を原点(0, 0, 0) に合わせよう。そしたらこの中に、先ほど配置したモデル「PronamaChan_SD_dynamic_xxx」(xxx はスパッツなどのバリエーション)をヒエラルキーでドラッグ&ドロップして子要素にする。これは後でモデルだけ簡単に入れ替えるため措置だ。空オブジェクト(親)の名前は「PronamaChanSD_Locomotion」にしておいた。


6.また、カメラが少し遠いので、位置も調整しておこう。ここでは正面からにしておいた。シーンは適当な名前で保存しておく。


■動かすためのセットアップ
前準備ができたら、ユニティちゃんパッケージには移動用アニメーターとスクリプトが付いているので、これを改造したものを使ってプロ生ちゃんを動かしてみよう。
1.まずはアニメーターから設定する。プロジェクトエクスプローラで「UnityChan>Animatiors」フォルダを開き、「UnityChanLocomotions」を探そう。次に、ヒエラルキーから配置したモデル「PronamaChanSD_Locomotion」の子要素「PronamaChan_SD_dynamic_xxx」(xxx はスパッツなどのバリエーション)をクリックし、インスペクターの「Animator>Controller」に見つけた「UnityChanLocomotions」(移動用アニメーター)を設定しよう。これはユニティちゃん用だが、表情レイヤー以外ならそのまま使える(今回は表情は固定のまま)。また「Apply Root Motion」のチェックは外しておく。



2.次に移動用スクリプトを設定しよう。ダウンロードしたサンプルの中に「UnityChanControlScriptWithRgidBodyForAny.cs」というファイルがある。これをインポートして、ヒエラルキーのモデルの親要素「PronamaChanSD_Locomotion」をクリックし、インスペクターにドラッグ&ドロップしよう。これはユニティちゃん用のスクリプトを少しばかり改造したものだ。内容的にはアニメーターの取得を子要素まで拡げたり、衝突判定を無視するレイヤーの設定、ジャンプカメラの無効化くらいで、基本はほとんど変わってない。
※ Unity5 用のユニティちゃんスクリプトの修正パッチ「UnityChanScript_ver1.2.1_Unity5only.unitypackage」にも合わせてある。内容的には AnimatorStateInfo のプロパティ: nameHash (Unity4) → fullPathHash (Unity5) に変更されただけ。


3.スクリプトを追加したら、「Capsule Collider」も自動的に追加されたと思うが、インスペクターで「Center>Y」と「Radius」あたりを調整しておこう。値は好きにして構わない。なお、サイズを調整するとき等はシーンギズモの真ん中の■を押して「平行投影モード」にした方がわかりやすい。もう一度押すと元に戻る。


平行投影モード
4.次にインスペクターで「Rigidbody」の「Constraints」の▼を開き、「Freeze Rotation」を全てチェックを入れておこう。これを入れておかないと、移動したとき、コケる(笑)。

5.最後に、カメラは固定で移動するとプロ生ちゃんが見えなくなってしまうので、カメラをキャラに追従させよう。一番簡単な方法は「Main Camera」を「PronamaChanSD_Locomotion」の子要素にしてしまう方法だ。ヒエラルキーで「Main Camera」を「PronamaChanSD_Locomotion」にドラッグ&ドロップして、カメラの位置を調整するだけで良い。こうするとプロ生ちゃんと一緒にカメラも動く。これでとりあえずは目的達成だ。


走り出すプロ生ちゃん
プレイボタンを押して動作を確認してみよう。上手くできていれば、カーソルキー上下で前進・後退、カーソルキー左右で旋回、移動中にスペースキーでジャンプ、停止中にスペースキーで伸びポーズをするハズだ(床が光っていてわかりずらいかも知れないが)。
■標準サイズ(Tシャツ)のプロ生ちゃんに変更してみる
ここからはオマケになるが、せっかく色々なモデル(衣装)が入っているので、上記の完成した SDプロ生ちゃんを使って標準サイズのプロ生ちゃんも動かしてみよう。実際にはプロ生ちゃんではなくても、「ニコニ立体ちゃん」や「東北ずん子」などメカニムを使用しているモデルなら同じ方法で動かせる。
1.ヒエラルキーで先ほど作った「PronamaChanSD_Locomotion」を選択し、Ctrl - D で複製しよう。複製したらわかりやすいように名前を変更し、複製元のオブジェクトはインスペクタの一番上のチェックを外して非表示にしよう。


2.複製した方の子要素「PronamaChan_SD_dynamic_xxx」(xxx はスパッツなどのバリエーション)は削除し、プロジェクトエクスプローラで「PronamaChan>Prefabs」以下から好きなモデルを選んで、先ほどの複製(ここでは「PronamaChanT_Locomotion」とする)にドラッグ&ドロップして子要素にしよう。モデルによっては「Equipments Changer」(衣装変更)と「Blend Shape Value Changer」(表情変更)が付いているかもしれない。その場合はチェックを外しておこう。


アタッチされていたらチェックを外す
3.あとはSDプロ生ちゃんのときのセットアップと同じだ。追加したモデルに「UnityChan>Animators」内のアニメーター「UnityChanLocomotions」を設定し、親オブジェクトの「Capsule Collider」を調整しよう。以下は設定例だが任意で良い。



4.最後にカメラがSDサイズのときの高さになっているので、Y軸だけ調整しよう。値は任意で良い。セットアップし終わったら、プレイして動くことを確認してみよう。他のモデルもこの方法で簡単に入れ替えられる。

■ドラッグでアングルを変えられるカメラをセットアップする
上記のセットアップではカメラは移動ブジェクトの子要素になっていたため、アングルが固定されたままだった。せっかなので、以前「SmoothFollow に回転アングルと高さと距離の遠近機能を付けてみる」で作ったスクリプトをカメラに追加して、キャラの回りをドラッグでぐるりと眺めてみよう。
※ここからは元のSDサイズでやるので、「PronamaChanSD_Locomotion」をインスペクタで表示に、「PronamaChanT_Locomotion」を非表示にして下さい。
1.ヒエラルキーで先ほど作った「PronamaChanSD_Locomotion」をクリックし展開しよう。先ほどのままの場合、「Main Camera」が子オブジェクトになっていると思うが、これをドラッグして外に出してしまおう。

2.カメラをオブジェクトの外に出したら、ヒエラルキーで再び「PronamaChanSD_Locomotion」を選択し、右クリックから「Create Empty」で空の GameObject を追加しよう(子要素にする)。これをカメラの視点とするので、Y軸だけ調整し、名前を「TargetPos」とでも付けておこう(名前は任意)。


3.次に、ダウンロードしたアーカイブに「SmoothFollow2.cs」が入っているのでインポートして、カメラに追加しよう。追加したら先ほど作った視点用の空オブジェクト「TargetPos」を「Target」にドラッグ&ドロップして設定しよう。その他のパラメタはデフォルトのままで良いが、ここではプロ生ちゃんを正面から見たいので「Pre Angle」(開始時のアングル)だけを 180度にしておく。後ろからにしたい場合は 0 のままで良い。

これだけでとりあえずセットアップは完了だ。プレイして確認してみよう。ドラッグやホイールでアングルや距離が変えられるハズだ。またデフォルトでは[Z][X][C][V][B][N]キーでも操作できるようにしてある。設定パラメタの詳細・図解などは「SmoothFollow に回転アングルと高さと距離の遠近機能を付けてみる」を見て欲しい。

■簡単なステージを作ってみる
Unity Technology が提供している Sample Assets には便利なカメラスクリプトやマルチプラットフォームUI、パーティクルやエフェクト、車や飛行機などのモデル等も入っている。このアセット内にモックアップパーツのようなものも入っているので、プラットフォームゲームの仮置きにも良いかも知れない。
(※) 入っている素材は例とは少し異なるが、メニューから「Assets>Import Package>Prototyping」をインポートして使っても良い。
1.Ctrl - 9 で Asset Store を開き、検索ボックスに「Sample Assets」を入れて検索してみよう。「無料のみ」のボタンを押すと絞り込みやすい。リストが出たら「Sample Assets (beta) for Unity 4.6」を探して「ダウンロード」しよう。既に落としてあるなら「インポート」するだけで良い。
(※) Unity5.5 にアップグレードしたばかりのときは Asset Store にログインできない(エラーが出る)かも知れない。その場合は Unity エディタを再起動するとログインできるようになる。
2.インポートダイアログが出たら一旦ダイアログ下にある「None」ボタンを押して全てのチェックを外そう。全部入れても良いが、かなりの量があるので、今回はステージに使うパーツだけにする。スクロールバーで 2/3 過ぎたあたりに来たら、「Prototyping」というフォルダがあるので、そこにチェックを入れる。以下の階層のアセットは自動でチェックが入るので、あとはダイアログ下の「Import」ボタンを押して、エディタにインポートしよう。

3.インポートが終わったら、とりあえず床にテクスチャ(マテリアル)を貼ってみよう。プロジェクトエクスプローラで「Standard Assets>Prototyping>Materals」フォルダを開いて、「PrototypeGhecker」を Ctrl - D で複製しよう。複製したら「PrototypeGhecker 1」等の名前になっていると思うので、それをシーンビューの床(Cube)にドラッグ&ドロップしよう。あとはインスペクタでタイリングのサイズなどを調整すれば良い(任意で良い)。
(※) プロ生ちゃんの壁紙などでも可。



4.あとはプロジェクトエクスプローラで「Standard Assets>Prototyping>Prefabs」フォルダ以下にあるオブジェクト(プレファブ)を適当に置くだけだ。配置するときはシーンギズモで平行投影モードにするか、レイアウトを 4分割(メニューから「Window>Layouts>4 Split」)にするのも良いかも知れない。また、Ctrl を押しながらオブジェクトを移動すれば、一定間隔でスナップしながら配置できる(スナップ量はメニューから「Edit>Snap Settings...」で設定できる)。自由にステージを作ってみよう。

■スカイボックスを設定する
最後にスカイボックスを設定してみよう。上記の「Sample Assets (beta) for Unity 4.6」にも Unity4 時代の Skybox が入っているが、せっかくなので別のスカイボックスを使ってみよう。
1.再び Ctrl - 9 で Asset Store を開き、検索ボックスに「Fantasy Skybox」を入れて検索し、「無料のみ」のボタンを押してみよう。リストが出たら「Fantasy Skybox FREE」を探して「ダウンロード」し、続けて「インポート」しよう。
(※) Unity5.5 にアップグレードしたばかりのときは Asset Store にログインできない(エラーが出る)かも知れない。その場合は Unity エディタを再起動するとログインできるようになる。
2.ダイアログが出たら「Import」ボタンでインポートしよう。インポートが終わったら、プロジェクトエクスプローラで「Fantasy Skybox FREE>Materials」フォルダにある「Sunny 01A」を探そう。


3.見つけたらメニューから「Window>Lighting」を開き、一番上にある「Enviroment Lighting」の「Skybox」に「Sunny 01A」を設定する。これでとりあえずは完成だ。
ほとんどの設定がデフォルトのままなので、色々変更・調整してみると良いだろう。特に Unity5 になってからはライティングやシェーダーの仕様が大幅に変更されたようで、そういう意味では今回はかなりいい加減だ、その辺はきちんと調べた方が良いかも知れない。とりあえず動かせれば良い人向けということで(笑)。
|
(関連記事)
【Unity】プロ生ちゃんを動かす!(Unity4)
【Unity】【C#】ユニティちゃんをサクっと簡単に動かす!(Unity4)
【Unity】【C#】SmoothFollow に回転アングルと距離の遠近機能を付けてみる
【Unity】【C#】FPS(フレームレート)をリアルタイムに測定して表示するv2(4隅選択可能で、画面サイズの変更にも対応版)

【Unity】【C#】Unity4 Free版で RenderTexture のようなオフスクリーンレンダリングをして、ユニティちゃんステージのバックスクリーンを作る 
2015/07/12 Sun [edit]
Unity5 では、Unity4 で制限されていた機能が Free版(Personal版と改名)でも使えるのだが、どうも Unity5 と Unity4 ではライトやシェーダーの仕様が変更されたようで、プロジェクトによっては上手くアップグレードされず、見た目がおかしくなってしまうものも多い。
そんなわけで Unity4 のまま、ユニティちゃんステージのバックスクリーンが使えないかな~と思って調べてみたら、いくつか資料があったので、色々試してみたらそこそこ上手くいった。
(参考)
・Render Camera To Texture Unity Free (You Tube)
・Unityのオフスクリーンレンダリング
●カメラの映像をテクスチャに映し出すスクリプト(Fullscreen[可変]対応)
using UnityEngine;
using System.Collections;
public class RenderCameraToTexture : MonoBehaviour {
Texture2D renderedTexture;
public Material mat; //出力先
Rect rect; //領域用
public int width = 512; //映像領域のサイズ
public int height = 512;
public TextureFormat format = TextureFormat.ARGB32; //ARGB32 or RGB24
//Fullscreen(可変)対応
public int orgScrWidth = 960; //オリジナル画面サイズ(基準サイズ)
public int orgScrHeight = 540;
int oldScrWidth; //画面サイズ変更チェック用
int oldScrHeight;
// Use this for initialization
void Awake () {
orgScrWidth = (orgScrWidth <= 0) ? Screen.width : orgScrWidth;
orgScrHeight = (orgScrHeight <= 0) ? Screen.height : orgScrHeight;
width = (width <= 0) ? Screen.width : width;
height = (height <= 0) ? Screen.height : height;
createTexture(width, height);
oldScrWidth = orgScrWidth;
oldScrHeight = orgScrHeight;
}
void OnPostRender () {
//Fullscreen(可変)対応
if (oldScrWidth != Screen.width || oldScrHeight != Screen.height) {
int w = width * Screen.width / orgScrWidth;
int h = height * Screen.height / orgScrHeight;
createTexture(w, h);
}
oldScrWidth = Screen.width;
oldScrHeight = Screen.height;
renderedTexture.ReadPixels(rect, 0, 0, false);
renderedTexture.Apply();
}
//映像用テクスチャを準備する
void createTexture(int w, int h) {
renderedTexture = new Texture2D(w, h, format, false);
mat.mainTexture = renderedTexture;
rect = new Rect(0, 0, w, h);
}
}
内容的には、参考資料の You Tube 動画の中のコードと、Qiita のコードを混ぜあわせたもの。資料の説明にある通り、このやり方は非常にパフォーマンスが悪いので、色々なパターンを試したら、上記のコードのような感じが一番良かった。
やってみて非常にパフォーマンスが改善されたのは、動画中の Texture2D のコンストラクタを Texture2D(width, height) としないで、Texture2D(width, height, format, false) の方を使い、mipmap をオフにすることだ。オフスクリーンサイズが固定ならば必要もない。
あとは単純にスクリーンを読み込むサイズを Screen.width, Screen.height から、なるべく小さいサイズにすること。サンプルでは 512x512 にしているが、256x256 だと、だいぶ速くなる。しかしもちろんサイズが狭いので、動きが大きいものでは上手く追従できなくなるので注意。ただし、このサイズ固定のやり方だと、画面サイズを変更したときスケールが異なってしまい、映し出す領域が違ってしまう欠点がある。なので、基準となる元の画面サイズと現在の画面サイズを比較して、映し出す領域を比率で再計算するようにした。
あと OnPostRender() の呼び出し回数をカウントして、数回おきに更新する方法もやってみたが、あまり効果はなかった。むしろ2~3回おきに更新ではパフォーマンスは悪く、6回おき以上にすれば良くなるが、バックスクリーンがカクカクしたコマ送り状態になるのでやめた。あまり動きがないものには効果的かも知れないが、思ったより良くはならない(少なくとも見た目は)。といってもテストしているのは PC なので、Android や iPhone ではまた事情が違うだろう。たぶん PC の場合は CPU や GPU のハードウェアキャッシュやレンダリングパイプラインなどで高速化されているので、そのままの方が速いのかも知れない。
Texture2D のテクスチャフォーマットは ARGB32 と RGB24 の2種類しか使えないが、PC ではどちらも変わらない。スマホなどメモリの少ない端末なら RGB24 も効果があるかも知れないが、試してみるのが一番だろう。
使い方は映像を取得したいカメラにスクリプトを追加して、映像の出力先となるマテリアルを登録するだけだ。width と height は0にすると画面いっぱいのサイズになるので、必要なだけのサイズに設定しておこう。ここでは、ユニティちゃん Candy Rock Star コンサートプロジェクトのバックスクリーン用カメラ「Back Screen Camera」に使用することとする。他のテクスチャに出力しても構わない。

※全て設定し終えたら(Apply)、プレファブは削除して良い
●「RenderCameraToTexture」スクリプトを追加して設定する

●出力先マテリアルを選択する

以上でOK。
まぁ、おとなしく Unity5 使えって感じでもあるけどね。5なら床の鏡面反射もデフォルトで使えるし。とはいえ、Unity4 で作ったプロジェクトを5でそのまま読み込んでも、変な影が付いたり、光の加減が強すぎたり、一部のシェーダが機能してないで、別の何かになってたりと(笑)、移行するにはしばらく時間かかりそう。そういえば昔、PhotoShop なんかもメジャーバージョン変わったときに、古いファイルが上手く再現できないことがあったけど(フォントサイズとかレイヤー効果やブレンド値など)、バージョンアップもなかなか大変なものだな…。
(関連記事)
【Unity】プロ生ちゃんを動かす!
【Unity】SDプロ生ちゃんを動かす!

【Unity】プロ生ちゃんを飛行させる!(Unity4) 
2015/06/23 Tue [edit]
以前「ユニティちゃんを飛行させる!」で使ったスクリプトを少し修正し、「クエリちゃんを飛行させる!」で作ったアニメーターをそのまま利用して、今度は「プロ生ちゃん」を空へ飛ばしてみたいと思う。いい加減、なんでも飛ばせば良いってもんじゃないと言われそうだが、ただのテストなので気にしない。まぁ、アイデアというものは、わりとどうでもいい事から始まるものだ。これを見た人がまた面白いことを考えて、それを見た人が更に手を加えて…と文化が発展していく…と願いたい(笑)。
(※) Unity 4.6.1f2 / Windows8.1(x64) で確認
■用意するもの
今回は前回「プロ生ちゃんを動かす!」の続きのようなものなので、プロ生ちゃんモデルのダウンロードやシェーダーの設定、プロ生ちゃん用のレイヤーの作成の準備ができていることが望ましい。無い場合は、ユニティちゃんのシェーダーなどがあらかじめ組み込まれている「プロ生ちゃん(暮井 慧) ユニティちゃんライセンス版」を使うと良い。これも「ユニティちゃんライセンス」に準拠すれば無料で使える。
・「暮井 慧(プロ生ちゃん) MMD & Unity 公式データ」をダウンロードして、解凍し、「PronamaChan_s.unitypackage」または「PronamaChan_standard.unitypackage」(Unity5)をインポート。
・「ユニティちゃん 3Dモデル」(掲載時点 Ver.1.2)をダウンロードして、解凍し、パッケージをインポート。
・「クエリちゃん 通常モデル」(掲載時点 Ver.2.1.0)を AssetStore からインポート。
シェーダーなど設定済みのプレファブを使いたい場合は、
・「プロ生ちゃん(暮井 慧) ユニティちゃんライセンス版」をダウンロードして、解凍し、パッケージをインポート。
※詳しいやり方は前回記事「プロ生ちゃんを動かす!」を見て欲しい。
今回も使用したスクリプトやアニメーターをあらかじめ用意しておいた。といっても以前公開したものとほとんど変わらない。スクリプトから Animator を取得する部分を子要素まで広げただけだ。これらもインポートしておこう。
■プロ生ちゃんを飛行させる!
それではさっそくモデルに組み込もう。以前作ったシーンを [Ctrl - D](Duplicate)で複製して設定するのが一番手っ取り早い。
1.プロジェクトエクスプローラで「PronamaChan>Prefabs」フォルダを開き、使いたいモデルをヒエラルキーにドラッグ&ドロップしよう。ヒエラルキーで空の GameObject(「GameObject>Create Empty」) を作り、適当に名前を付ける。ここでは「PronamaChan_Flying」としておいた。Position を原点に合わせたら、その中に子要素としてモデルをドラッグ&ドロップしよう。前回のシーンを複製したのなら、「PronamaChan_Locomotion」を「PronamaChan_Flying」などにリネームするだけで良い。

2.次にダウンロードしたサンプルスクリプトの「CharacterFlyingController.cs」をモデルの親オブジェクト「PronamaChan_Flying」に追加する。もしこの親オブジェクトに「Unity Chan Control Script With Rigid Body For Any(Script)」が組み込まれているなら、「Remove Component」で取り除き、「Capsule Collider」や「Rigidbody」も削除しよう。「CharacterFlyingController(Script)」は「Character Controller」を使うので、同居できない。

3.「CharacterFlyingController(Script)」を追加したなら「Character Controller」も自動追加されたハズだ。追加されてなかったら、メニューから「Component>Physics>Character Controller」で追加しよう。設定は適当で良いが、これから使うクエリちゃんの飛行モーションは基準座標が中央になるので、「Center>Y」だけは「0」にしておこう。

4.また初期座標(Transform)もインスペクターで少しばかり Y 軸の値を上にしておこう。編集画面上ではモデルとコライダがずれているように見えるが、実行したとき、少しばかり空中に浮いていないと、床にめり込んでしまう。


5.次にアニメーターを設定しよう。ヒエラルキーで子要素にしたモデル「pronamachan」(名前はモデルによる)をクリックし、インスペクターで「Animator>Controller」をダウンロードしたサンプルにある「PQchan_Flying」(飛行用アニメーター)に変更する。また「Apply Root Motion」をオフにしておく。あと、ついでにレイヤー設定をプロ生ちゃん用のレイヤー「pronama」(User Layer 8)に設定しておこう。ダイアログが出たら「Yes, change children」にする。レイヤー自体の作り方は前回の記事を参照して欲しい。

6.また、カメラを追従させておこう。一番簡単な方法は「Main Camera」を「PronamaChan_Flying」の子要素にしてしまう方法だ。ヒエラルキーで「Main Camera」を「PronamaChan_Flying」にドラッグ&ドロップして、カメラの位置を調整するだけで良い。こうするとプロ生ちゃんと一緒にカメラも動く。ここでは微妙に上から見下ろす角度にしておいた。


7.最後にプロ生ちゃんモデルが持っているコライダと、親オブジェクトが持つ「Character Controller」のコライダが衝突しないように、物理設定をしておこう。このままだとプロ生ちゃんの髪やスカートが爆発したようになってしまう(笑)。このためにプロ生ちゃん用のレイヤーを設けていたわけだ。「Edit」メニューから「Project Settings>Physics」で「Physics Manager」(インスペクター)が開いたら、プロ生ちゃん用のレイヤ(「pronama」)と「Default」が交差している所のチェックを外す。これで互いに干渉しなくなったハズだ。シーンは適当な名前で保存しよう。これでめでたく完成だ。


デフォルトでは[↑][↓]で上昇下降、[←][→]で左右旋回、[Shift](左)で前進加速、[Ctrl](左)で前進減速となっている。「Character Flying Controller(Script)」のインスペクターで「Rotation Mode」のチェックを外せば、左右キーはシューティングの様な移動になる。シーンを再生して確かめてみよう。
スクリプト自体の解説は「ユニティちゃんを飛行させる!」や「クエリちゃんを飛行させる!」を参照して欲しい。基本的には同じものだ。
また、「プロ生ちゃん(暮井 慧) ユニティちゃんライセンス版」(ユニティちゃんライセンスに準拠すれば無料利用可)に入っている「~_dynamic」のプレファブを使えば、髪やスカートなどが「揺れもの」としてセットアップされているため、より良い感じになびいたりする。試してみるのも良いだろう。
(関連記事)
【Unity】プロ生ちゃんを動かす!
【Unity】SDプロ生ちゃんを動かす!
【Unity】【C#】ユニティちゃんを飛行させる!
【Unity】【C#】クエリちゃんを飛行させる!
【Unity】【C#】SDクエリちゃんを飛行させる!
【Unity】【C#】SmoothFollow に回転アングルと距離の遠近機能を付けてみる


【Unity】プロ生ちゃんを動かす!(Unity4) 
2015/06/21 Sun [edit]
モデルによっては元々 MMD のものでも、Unity 用のパッケージも同梱されているものもあり、せっかくなので、そのまま unitypackage 版を使って、ユニティちゃんやクエリちゃん付属のモーションとスクリプトを使って動かしてみたいと思った。細かい不具合は色々あるだろうが、いつものただのテストなのであまり気にしない(笑)。
※この記事はプロ生ちゃんモデル「Unity 4 & 5 向け(2015/9/20 以前)」でやっているので、「Unity 5 向け(Ver. 2 モデル、2015/9/20 以降)」の場合は「SDプロ生ちゃんを動かす!」を参照して下さい。標準サイズモデルでもやり方は同じです。
これからやる方法は公式や他のブログなどの情報の寄せ集めだが、いくつもページやサイトをまたがって調べる必要があったので、とりあえず必要なものだけをまとめたという感じ。スクリプトやアニメーターなどは基本部分は使いまわしで、少しばかり修正を加えたものばかりだ。なので、もっとこだわりたい人は各自で改造して欲しい。
※ Unity 4.6.5f1 / Windows8.1(x64) で確認
■まずはインポートから
1.はじめに「暮井 慧(プロ生ちゃん) MMD & Unity 公式データ」をダウンロードしよう(掲載時点:Unity 4 & 5 向け(2015/9/20 以前)。
※2015/9/20 以降のモデルははじめからセットアップされているのがいくつか入っているので、「プロ生ちゃんを動かす!」まで読み飛ばして良い。以下のURLはその情報。
[3Dモデル情報]
プロ生ちゃん(暮井 慧) 3D モデル一覧
[2015/9/20 以降のモデル]
プロ生ちゃん Unity 向け 3D モデル (ver. 2) の使い方
ニコニコのアカウントが必要なので、無ければ適当にアカウントを作れば良い。右側にある「ダウンロード」ボタンを押せば、zip がダウンロードできる。ダウンロードが完了したら解凍して、「Pronama-chan>unity」フォルダにある「PronamaChan_s.unitypackage」を新しいプロジェクトにでもインポートしよう。ちなみに「Pronama-chan>unity-user-model」にある「PronamaChan_standard.unitypackage」でも良いが、こちらは Unity5 用である。今回は Unity4 でも使えるようにしたいので、わざわざ「PronamaChan_s.unitypackage」の方を使った。
2.次にモデルを動かすために、ユニティちゃんのオフィシャルサイトからユニティちゃんモデルのパッケージをダウンロードしよう。右上の「DATA DOWNLOAD」を押して、キャラクター利用のガイドラインの一番下まで行き、「ユニティちゃんライセンス」に同意すればダウンロードページへ行ける。ここから「ユニティちゃん 3Dモデルデータ」(掲載時点 Version 1.2 [UnityChan_1_2.unitypackage])をダウンロードする。これも同じようにプロジェクトへインポートしよう。
3.準備ができたら、とりあえず動き回れる床を作りたいので、「GameObject」メニューから「Plane」や「Cube」などで床を作ろう。テクスチャなどはユニティちゃんときと同じように適当で良い。また、このままだと真っ暗なので(Unity4 の場合)、「GameObject>Light」から「Directional Light」を追加しておく。設定は適当で良い。

4.次にプロ生ちゃんのモデルを配置しよう。しかしその前に、プロ生ちゃんのスケールを少しだけ小さくして置くと良い。そのままだとユニティちゃんや他のキャラに比べて、少し大き目になってしまう。プロジェクトエクスプローラで「PronamaChan>Prefab」を開き、「pronamachan.prefab」または「pronamachan_s.prefab」を見つけたらクリックし、インスペクターで Scale を調整しよう。その後、ヒエラルキーにドラッグ&ドロップする。ちなみに「~_s」の付いている方はスパッツバージョンらしい。今回は履いてない方を使っている。どちらでも構わない。


5.モデルを配置したら、スケールなどを変更していることもあり、少々扱いが面倒なので、空の GameObject の子要素にして、動かすことにする。またこの方が、モデルを入れ替えるときもラクだからだ。「GameObject」メニューから「Create Empty」で空オブジェクトを作り、適当に名前を付け、Position を原点に合わせよう。そしたらこの中に、先ほど配置したモデル「pronamachan」をヒエラルキーでドラッグ&ドロップして子要素にする。空オブジェクト(親)の名前は「PronamaChan_Locomotion」にしておいた。


6.また、カメラが少し遠いので、位置も調整しておこう。ここでは正面からにしておいた。シーンは適当な名前で保存しておく。


■シェーダーを変更する(2015/9/20 以前モデル)
動かすこととは直接関係ないのだが、モデルを配置してみて気になるのは、雰囲気がイラストっぱくないことだろう。これはシェーダー(陰影)の関係だ。シェーダー自体は好みで構わないのだが、とりあえず今回はユニティちゃんのシェーダーを使うこととする。他には「Standard Assets」の「Toon」なども、いかにもアニメっぽい感じになって良い。やり方は公式サイトに掲載してある。
(参考)
・暮井 慧(プロ生ちゃん)Unity 3D モデルにユニティちゃんシェーダーを適用する
・[Unity] プロ生ちゃんをトゥーンレンダリング
ここではもう少し具体的に解説してみよう。やり方がわかっている人は「■プロ生ちゃんを動かす!」まで読み飛ばしても良い。
1.ヒエラルキーで「PronamaChan_Locomotion」(名前を付けたモデルの親オブジェクト)の▼を開いて、「pronama>SkinnedMesh」をクリックし、インスペクターを表示しよう。

2.ここから、例えば「Tex_skin」の「Shader」のドロップタウンリストから「UnityChan>Skin」を選択しよう。するとインスペクターが更新されて「Falloff Control」と「RimLight Control」が設定できるようになるので、右側の「select」ボタンから、公式サイトにある設定例のように、それぞれ「Falloff Control」に「FO_SKIN1」、「RimLight Control」に「FO_RIM1」を設定する。

3.あとは同じように設定する。「Tex_eyelight」のみ「Skin – Transparent」を設定するとあるので、そこだけ注意する。分かりやすいように一覧にしておこう。
●ユニティちゃんシェーダー設定例
Material | Shader | Falloff Control | RimLight Control |
---|---|---|---|
Tex_skin | UnityChan/Skin | FO_SKIN1 | FO_RIM1 |
Tex_Dress | UnityChan/Skin | FO_CLOTH1 | FO_RIM1 |
Tex_eyes | UnityChan/Skin | FO_SKIN1 | FO_RIM1 |
Tex_eyelight | UnityChan/Skin - Transparent | FO_SKIN1 | FO_RIM1 |
Tex_face | UnityChan/Skin | FO_SKIN1 | FO_RIM1 |
eye_white | UnityChan/Skin | FO_SKIN1 | FO_RIM1 |
Tex_hair | UnityChan/Skin | FO_SKIN1 | FO_RIM1 |
tokei | UnityChan/Skin | FO_CLOTH1 | FO_RIM1 |


4.シェーダーをユニティちゃん用にした場合は、プロジェクトエクスプローラから「UnityChan>Prefabs」内にある「Directional light for UnityChan」をヒエラルキーにドラッグ&ドロップしよう。ちなみにこのライトはユニティちゃんシェーダーが良い感じになる光源だ。普通に使うにはかなり明るい気がする。先に置いた通常の「Direction light」は無効にするか、削除してしまっても良い。これで見た目が変わったハズだ。

ついでに「トゥーンシェーダー」をもう1つ別に設定する方法を書いておこう。
1.トゥーンシェーダーは「Assets」メニューから「Import Package>Toon Shading」を実行すると、インポートできる。素材は「Standard Assets>Toon Shading」に追加される。

2.プロジェクトエクスプローラで「PronamaChan>Models>Materials」フォルダを開いて、各マテリアル(~.mat)を見てみると、先ほど設定したものが反映しているのがわかるだろう。だから別のシェーダーを比較したい場合はこれを複製して使うのが良い。あらかじめ新しく「Toon」用のフォルダでもを作っておいて、「Materials」フォルダにある「~.mat」ファイルを全選択して複製([Ctrl - D])しよう。複製したマテリアルを、「Toon」用フォルダにまとめて移動しておくと分かりやすい。

3.次にヒエラルキーにあるモデル「PronamaChan_Locomotion」を複製([Ctrl - D])する。モデルを複製したら、▼を開いて、「pronama>SkinnedMesh」をクリックし、インスペクターを表示しよう。インスペクターで「Skinned Mesh Renderer」の「Materials」の▼を開き、先ほど複製したマテリアル(自動リネームなら、末尾に番号がついている)をプロジェクトエクスプローラからドラッグ&ドロップで登録する。

4.あとはインスペクターを下の方へスクロールさせ、トゥーンシェーダーを設定する。やり方はユニティちゃんシェーダーを設定したときと同じだ。これも公式サイトの設定をそのまま使い、ドロップタウンリストから、「Tex_eyelight」のみ「Transparent/Diffuse」または「UnityChan/Skin - Transparent」(「Directional light for UnityChan」を使っている場合はこっちの方が良い(?))に設定する。他は「Toon/Basic」(別のものでも良い)に設定してみよう。これでモデルを2つ並べてみれば、比較できる。

●シェーダーの比較

(左)ユニティちゃんシェーダー / (右)トゥーンシェーダー
■プロ生ちゃんを動かす!
ここまでくれば、あともうひと息だ。ユニティちゃんパッケージには移動用アニメーターとスクリプトが付いているので(※要インポート)、これを改造したものを使ってプロ生ちゃんを動かしてみよう。
1.まずはアニメーターから設定する。ヒエラルキーから配置したモデル「PronamaChan_Locomotion」の子要素「pronamachan」をクリックし、インスペクターの「Animator>Controller」に「UnityChanLocomotions」(移動用アニメーター)を設定しよう。これはユニティちゃん用だが、表情レイヤー以外ならそのまま使える(今回は表情は固定のまま)。また「Applay Root Motion」のチェックは外しておく。

2.次にスクリプトを設定しよう。ダウンロードしたサンプルの中に「UnityChanControlScriptWithRgidBodyForAny.cs」というファイルがある。これをインポートして、ヒエラルキーのモデルの親要素「PronamaChan_Locomotion」にドラッグ&ドロップしよう。これはユニティちゃん用のスクリプトを少しばかり改造したものだ。内容的にはアニメーターの取得方法と衝突判定を無視するレイヤーの設定、ジャンプカメラの無効化くらいで、基本はほとんど変わってない。

3.スクリプトを追加したら、「Capsule Collider」も自動的に追加されたと思うが、インスペクターで「Center>Y」と「Height」だけは調整しておこう。値は好きにして構わない。

4.次にインスペクターで「Rigidbody」の「Constraints」の▼を開き、「Freeze Rotation」を全てチェックを入れておこう。これを入れておかないと、移動したとき、コケる(笑)。

5.ここで試しに再生してみるとわかるのだが、プロ生ちゃんの髪やスカートが爆発したり、どこかにすっ飛んで行ってしまったりと大変なことになる(笑)。これはプロ生ちゃんのプレファブに初めから組み込まれているコライダと、先ほど追加された「Capsule Collider」が互いに干渉しあっているためだ。この修正方法は公式サイトに掲載されている「物理設定の修正」のやり方で直せる。とりあえずここに載っているようにインスペクターの上にある「Layers」から「Edit Layers...」を実行し、「User Layer 8」に適当な名前を付けよう。そして再びヒエラルキーで、モデル「pronamachan」をクリックし、インスペクターの「Layer」に先ほど付けた名前のレイヤー(ここでは「pronama」)を選択する。すると「Change Layer」のダイアログが出るが、「Yes, change children」を押して、モデル内のレイヤーも一緒に変更する。親オブジェクト「PronamaChan_Locomotion」のレイヤーは「Default」のままで良い。これで衝突判定が別々のレイヤーに設定されたので、再生してもプロ生ちゃんが普通に立っているハズだ。そしてこれは「Unity Chan Control Script With RgidBody For Any(Script)」の「Ignore Collision Layer」の番号にデフォルト設定(8)してある。「User Layer 8」は既に使っているなら、別のレイヤー「User Layer 9」などでも良い。その場合は「Ignore Collision Layer」の番号(9)も合わせる。


●作ったレイヤーをモデルに設定する

●モデルの子要素も同時にプロ生ちゃん用レイヤーに設定する

●スクリプトとレイヤーの番号を合わせる

6.最後に、カメラは固定で移動するとプロ生ちゃんが見えなくなってしまうので、カメラをキャラに追従させよう。一番簡単な方法は「Main Camera」を「PronamaChan_Locomotion」の子要素にしてしまう方法だ。ヒエラルキーで「Main Camera」を「PronamaChan_Locomotion」にドラッグ&ドロップして、カメラの位置を調整するだけで良い。こうするとプロ生ちゃんと一緒にカメラも動く。これでとりあえずは目的達成だ。


ついでにクエリちゃんのモーションも使ってみよう。スクリプトも同じように改造してある。ユニティちゃんモーションとあまり変わらないので、大雑把に説明する。だいたい想像つくのなら、「■スカートに足がめり込むのを修正する」まで読み飛ばしても構わない。
1.まずは Asset Store から、クエリちゃんのモデルをインポートしよう。

2.ダウンロードしたサンプル内にクエリちゃん用スクリプトを改造した「QueryLocomotionControllerForAny.cs」が入っているので、プロジェクトにインポートしたら、モデルの親オブジェクト「PronamaChan_Locomotion(PQ)」にドラッグ&ドロップして追加する。

3.スクリプトを追加したら、「CharacterController」も自動的に追加されるので、インスペクターで「Center>Y」と「Height」だけは調整しておこう。値は適当で良い。

4.次にアニメーターを設定しよう。ヒエラルキーから配置したモデル「PronamaChan_Locomotion(PQ)」の子要素「pronamachan」をクリックし、インスペクターの「Animator>Controller」に「PQchan_Movement」(クエリちゃん用移動アニメーター)を設定する。また「Applay Root Motion」のチェックは外しておく。ついでにレイヤーもプロ生ちゃん用に設定しておこう。ダイアログは「Yes, change children」にする。これでクエリちゃんモーションで動くようになったと思う。


同じやり方で他のキャラも同様に動かせる。モデルの中身を入れ替えるだけでOKだ。
■スカートに足がめり込むのを修正する(2015/9/20 以前モデル)
ここまででとりあえずは動かすのは成功したのだが、少しばかり足がスカートにめり込むのが気になったのではないだろうか?凝ろうと思えばいくらでもできるのだろうが、今回は手を抜いて、元々設定されているコライダを少しばかり調整して、その場しのぎをしようと思う。
1.ヒエラルキーで配置したモデル「PronamaChan_Locomotion」の▼を次々と展開していこう。「pronamachan>root0_Arm>root>center>lower_body」まで開くと、各パーツのコライダーが見えてくる。太もものコライダは「lower_body」以下の「foot_L>coll_foot_L」(左足)と「foot_R>coll_foot_R」(右足)となる。少しばかり両足の「Capsule Collider」の「Rudius」(半径)を大きくしよう。



2.あとは足がぶつかりそうなスカートの前部分をいくつか調整しておこう。「lower_body」以下の「skirt_0_0」(手前)、「skirt_0_1」(左前)、「skirt_0_11」(右前)を展開して、同じようにコライダを調整する。「skirt_0_0>skirt_1_0>skirt_2_0>phys_skirt_2_0」(手前の上から3段目)まで開いたら「Box Collider」の「Z」を少し大きくする。同じように「skirt_0_1>skirt_1_1>skirt_2_1>phys_skirt_2_1」(左前の上から3段目)、「skirt_0_11>skirt_1_11>skirt_2_11>phys_skirt_2_11」(右前の上から3段目)の「Box Collider」の「Z」も同じように調整しておく。これで少しだけ「まし」になる(完全に突き抜けなくなるわけではない)。スカートの上から2段目なども調整しても良いかもしれないが、それほど代わり映えはしない。とりあえずはこれで完成だ。



まだまだジャンプしたとき、スカートがめくり上がったままになったり、コライダを大きくしたため、スカートが微妙に広がったりと問題はあるだろうが、その辺りは各自で研究して欲しい。ユニティちゃんのプレファブを見てみると「Spring Manager(Script)」「Spring Bone(Script)」というものを使っていて、「Spring Collider(Script)」で髪や服などの衝突判定をしているようだ(「UnityChan>Prefabs」にある「unitychan_dynamic_locomotion」をヒエラルキーにドラッグ&ドロップして、中身を見てみるとわかる)。これは髪を綺麗になびかせたり、伸縮してより自然に動くようにしたりするスクリプトだが、たぶんこれを使った方がより良い感じになるのだろうが、自分で設定するには結構手間がかかりそうだ。「揺れもの」として試している記事やサンプルなどもあったので、参考に色々やってみて欲しい。上手くいったらプレファブでも公開してくれるとありがたい(笑)(→「プロ生ちゃん(暮井 慧) ユニティちゃんライセンス版」(ユニティちゃんライセンスに準拠すれば無料利用可)には「揺れもの」セットアップ済みが入っている)。
(揺れものなど)
・プロ生ちゃんの髪やスカートをユニティちゃんの揺れものでセットアップしてみた
・Unityで揺れものを揺らす
>>完成サンプル Unity5 (別ウィンドウ) [WebGL (Chrome, Firefox)]
(※) Unity5 版は「SDプロ生ちゃんを動かす!」の方法で作ってある。
(※) カメラ追従は「SmoothFollow に回転アングルと距離の遠近機能を付けたもの」を使っている。
(関連記事)
【Unity】SDプロ生ちゃんを動かす!
【Unity】プロ生ちゃんを飛行させる!
【Unity】SDクエリちゃんを動かす!
【Unity】クエリちゃんを動かす!
【Unity】SDユニティちゃんを動かす!
【Unity】【C#】ユニティちゃんをサクっと簡単に動かす!
【Unity】【C#】SmoothFollow に回転アングルと距離の遠近機能を付けてみる


| h o m e |