5/01/2021

タイタンフォール2:ヘルメットの場所と報酬

タイタンフォール2では、キャンペーンのフィールド上にヘルメットが隠されています。

すべて集めることでトロフィー/実績の解除ができたり、ゲーム内で使用できるコールサインバナーを獲得出来るので、時間を見つけてコンプリートしたいところです。

遠くからでも分かるように青く光っていて、よく目を凝らせば見つかるのですが、わかっていないと見逃しそうな場所にあるヘルメットもあります。

ヘルメットの隠された位置を紹介している動画があるので、集められなくて困っている方は参考にしてみましょう。



報酬のコールサインバナーは全部で3つ、「10個」「25個」「全部」のヘルメットを入手するとアンロックされていきます。
バナーには"ジャック・クーパー"が表示され、25個では炎のようなエフェクトが入り、全て獲得すれば虹色のようなエフェクトが入りIDの帯もゴールドと高級感がアップ。
歴戦の猛者の雰囲気が出るいいバナーですので、まだ持っていない方はキャンペーンを隅々まで走り込んでオンラインで装備してみても良いかもしれません。



VRChat:Unityに読み込ませたモデルの色が...?

VRChatでオリジナルのアバターを使うとなると、Unityでアレコレ設定をする必要があります。

Unityも大人しくしていれば良いのですが、だいたい余計なことして思った通りにしてくれません。
今回は諸々の作業の序盤も序盤、モデルを読み込んだ時点で既に色がおかしかった現象についての話です。

Blenderなりでアバターを作成した後、FBX形式で書き出したモデルをUnityへ入れました。
デフォルトの表示でUnityの下部分にある Project の中にFBXファイルをドラッグ&ドロップ。


何も問題なければFBX形式のファイルを入れただけで「Materials」のファイルが作成され、色付きのマテリアルが並び、Sceneに配置するだけで良いのですが...。
今回はアバターが真っ白だったり透明だったり、奇妙な姿になってしまいました。



マテリアルを確認してみると、どれも白くテクスチャが球状になった見た目になっていません。
テクスチャ自体はあるので、マテリアル1つ1つに割り当てれば良いのですが...マテリアルが10個20個となるようなアバターの時は流石に面倒です。
そこで、FBXを入れるだけで個々のマテリアルに正しいテスクチャが貼られるようにツールを使います。

Autodesk から FBX 2013.3 Converter というものが出ているのでダウンロード。
使用しているパソコンにもよりますが、今回は「FBX 2013.3 Converter for Windows 64-bit」を使用しました。


ダウンロード後、インストールして起動したら早速FBXファイルを「Source files」にドラッグ&ドロップ。
右下の「FBX 2013」の項目にある「Embed media」にチェックを入れ、更に右下にある 「Convert」を押します。
うまくいくと、Converted と表示され、モデルが保存されているフォルダに「FBX 2013」というフォルダが作成され、中に新しいFBXファイルが作成されます。
この新しいFBXファイルをUnityに入れると、マテリアルにテクスチャが張られた状態になり、アバターにしっかりと色がついた状態になります。

が、部分的に半透明であったり、暗く影がかかって見た目があまりよろしくありません。


次にUnity側でマテリアルの設定を変えて見た目を良くしていきます。
Unityに生成されているテクスチャ付きのマテリアルの設定を見ると、画面右上「Rendering Mode」の部分が「Transparent」になっていたので「Opaque」に変更します。
これで半透明な部分は無くなりました。


Transparentはガラスやプラスチック等、透明度を必要とするものを再現する際に使用するといいそうですが、今回は使用しません。
代償として腕の番号から透明度が失われて黒くなりましたがここはあとで誤魔化します。

次に、アバターが暗く不気味なのを何とかしたいので、マテリアルに使用するシェーダーを変更します。
マテリアルを全て選択し、右上の「Shader」の項目を押すと、シェーダーを選ぶことが出来ます。
「とりあえず影を無くしたい」という人は「Unlit > Texture」に変更するとテクスチャの色をそのまま表示してくれます。


シェーダーはインターネット上で配布されているものも、UnityのProjectに入れれば使用する事ができます。
VRChatのWikiでは下の画像のような感じになるシェーダーが紹介されていました。


今回は場所の暗さに関係なく常にテクスチャの色が出るよう「Unlit > Texture」で進めます。

腕の部分が黒いので何とかしたいですが、番号の周りが透明なテクスチャを用意する事ができなかったので、肌色に塗って消す事にしました。
ただ、このマテリアルは他の表情モーフなり目のハイライトで使用するパーツも入っているので、目のハイライトを担当している左上が白、後は肌色のテクスチャを用意しています。
(モーフは使わないということで)
該当のマテリアルのシェーダーを「Unlit > Texture」にしてマテリアルのテクスチャを差し替えると、だいぶいい感じになりました。完成で良さそうです。


ここまで来ればアバターをVRChatにアップロードするためにスクリプトを付けたりアニメーションをつけたりと先の作業に進めます。
ここでは書きませんが、またそういった記事を用意できればと思います。

※この記事はUnity5で行われた作業を記載していますが、新しいUnityでも大体似たような手順で再現できると思います。

VRChat:ダイナミックボーンの設定項目の効果メモ


ダイナミックボーン(Dynamic Bone)はキャラクターの服やアクセサリー、動物のしっぽ、その辺にぶら下がってる物体など、関節が繋がってるものを物理っぽい動きでゆらゆら勝手に揺らしてくれる便利な有料アセットです。

設定方法については VRChatのWiki にも書かれていますが、難しくてよくわからんなと思い自分なりの言葉でメモしながら使っていました。
メモ帳に保存していても無くしそうなので「せっかくなら記事として残しておくか」というのが今回の記事になります。
結局、よくわからない部分もあるので、そこは原文引用。


ここから先はそのメモ。
ダイナミックボーンは揺れ物の先っちょに1つ取り付けて使っています。

Root (ルート) 
揺れ物の根本を設定します。 設定したところからスクリプトの付いたボーンまでがゆらゆら。
Update Rate (更新レート)
物理シミュレーションのフレームレート。フレーム/秒で測定。 (原文)
UpdateMode
ノーマル:通常のアップデート。
AnimatePhysics:フィジックスエンジンと同期するためにフィジカルループ中に更新されます。
UnscaledTime:Time.timeScaleから独立して更新されます。(原文)
Damping (摩擦)
摩擦(空気抵抗的な)を調整します。
数が大きいほどフワッと軽そうになり、少なほどブルブルと重みのある動きになります。
Damping Distrib(摩擦)
曲線や直線を設定し、だんだんと揺れが変化するようになる設定が可能。
Elasticity (弾力性)
ボーンが元の形に戻ろうとする力を調整します。
値を大きくしていくと元に戻る力が強くなり、揺れにくくなります。
値を小さくしていけば元に戻る力が弱くなり、戻るまでに時間がかかります。
0になると戻りません。
Elasticity Distrib(弾力性)
曲線や直線を設定し、だんだんと揺れが変化するように... 
Stiffness (剛性)
ボーンの曲がりやすさを調整します。
値を大きくするとあまり揺れなくなり、値を小さくすると大きく揺れます。
Stiffness Distrib(剛性)
曲線や直線を設定し、だんだんと...
Inert (不活性)
キャラクターが移動した際の揺れ具合を調整します。
0に近いほど揺れ、1に近いほどキャラクターが移動しても変形しません。
Inert Distrib(不活性)
曲線や直線を...
Radius (半径)
各ボーンに見えない球体を設定し、「ボーン同士」が接触するのを防ぐことが出来ます。
End Length (終わりの長さ)
0よりも大きい値を入力した場合、そのボーンから入力された値分離れてボーン?が生成されます。
末端に使用して挙動を変える? Offsetとの併用は出来ません。
End Offset (終わりの座標オフセット)
XYZに0よりも大きい値を入力した場合、そのボーンから入力された値分離れてボーン?が生成されます。
末端に使用して挙動を変える? Lengthが優先されます。
Gravity (重力)
ボーンに対して重力のような力を加えます。
-か+かで重力の向きを変更できます。
Force (フォース)
ボーンに対して常に一定の力を加え続けます。
XYZは全てグローバル座標です。
Colliders (コライダー)
物理的に衝突するボーン(についたコライダー)を設定します。
Sizeでいくつのボーン(略)と衝突するようにするかを設定し、Elementにそれぞれ当たるボーン(略)を割り振ります。
Exclusions (除外)
ボーンが揺れて曲がらないように出来ます。
Sizeで数を指定し、Elementにボーンを割り振ります。
割り振ったボーンから先方向は一切動きません。 
Freeze Axis (軸固定)
XYZで指定した軸方向への揺れが無くなります。
Distant Disable, Reference Object, Distance To Object
(遠隔ディスエーブル、参照オブジェクト、オブジェクトまでの距離) キャラクターがカメラやプレーヤーから遠い場合、物理シミュレーションを自動的に無効にします。
参照オブジェクトがない場合、デフォルトのメインカメラが使用されます。(原文)