3D キャラクター†
3DCG制作ソフトやWebサービスを使って3Dキャラクターを追加したり、プリインされている3Dキャラクターを改造することができます。
ここでは、手に入りやすいBlenderという3D制作ソフトウェアと、MixamoというWebサービスを利用する方法を解説します。
Blenderのバージョンは2.83以降に対応しています。Blenderの使い方についてはここでは言及しません。
3Dキャラクターに必要なデータの仕様†
3Dキャラクターは、モデル・テクスチャ・モーションのデータが必要です。
これらの作成や改造には3Dグラフィックスの知識や所定のソフトウェアが必要です。
Bakin で利用できるモデル形式は、FBX形式と VRM形式です。
ここでは、FBX形式のモデル仕様について解説します。
VRM形式のモデルについては、.vrmフォーマットモデル を参照してください。
モデルデータ†
1.モデル (.fbx)
ファイル形式 | FBX形式に対応しています。 |
データ形式 | FBX 7.4 (FBX 2014) を推奨します。 アスキー形式とバイナリ形式の両方に対応しています。 FBX 7.4 (FBX 2014) より前のバージョンで作成したモデルをインポートする場合は、Bakin へモデルをインポートする際、アセットピッカー左下の最適化オプション設定を有効にすると、読み込むことができるようになります。 (ただし、正しく表示されない場合もあります。) 詳細は、後述の「Bakin へインポート」の項目をご覧ください。 |
ポリゴン形状 | 三角ポリゴン以外のポリゴンは正しく表示されません。 あらかじめ三角ポリゴン化を行うか、Bakin へモデルをインポートする際に最適化オプション設定を有効にしてください。 (最適化オプションを有効にすると自動的に三角ポリゴン化が行われます。) |
サイズ | Bakin の地形 1 ブロックのサイズは、Blender ではプリミティブ立方体(寸法 1m、拡大縮小 0.5)と同じサイズです。 Bakin にプリインストールされている標準的なキャラクターのサイズは、地形 1 ブロックに収まるように作られています。 |
マテリアル | 1 つのモデルに対し、複数のマテリアルを設定できます。 |
ファイル名 | 半角英数字で設定してください。 |
ジョイント数の上限 | スケルトン構造のジョイント数の上限は、モデル 1 体に対して最大 1365 です。 ただし、この上限は OpenGL の仕様により、マシンスペックによって最低 341、最大 1365 の間で変化します。 |
ウェイトのインフルエンス | 最大 4 としてください(最大 4 を超えた場合は、ウェイトの大きいものが優先して 4 つ採用されます)。 |
テクスチャデータ†
2.テクスチャ (.bmp、.png)
ファイル形式 | BMP形式またはPNG形式に対応しています。 |
ファイル名 | 半角英数字で設定してください。 |
ピクセルサイズ | テクスチャのピクセルサイズは、64×64、128×128、256×256、512×512 など、2のべき乗と呼ばれる数値を推奨します。 256×128 などのサイズも使用可能です。 2のべき乗以外のサイズのテクスチャを設定すると、表示に不具合が生じる可能性があります。 |
透過表現 | 以下の方法で透過表現ができます。 BMP形式: アルファチャンネルを設定する PNG形式: 透明部分を設定する |
PBR (Physical Based Rendering) | Bakin では PBR (Physical Based Rendering) を採用しており、よりリアルな質感表現が可能です。 PBR表現を使用する場合、1つのモデルに対し、アルベドマップ、ノーマルマップ、マスクマップの3種類のテクスチャを設定することを推奨します。 各テクスチャについての詳細は、3Dテクスチャ を参照してください。 |
モーションデータ†
3.モーションファイル (.fbx)
FBX の対応バージョンや形式は、モデルファイルの項⽬と同じ仕様になります。
ファイル形式 | FBX形式に対応しています。 |
ファイル名 | 自由です。 mot_モーション名(半⾓英数字).fbx など、特定の文字列を含めておくと作業しやすいかと思います。例 mot_walk.fbx mot_wait.fbx mot_run.fbx |
作業単位 | 60fpsです。 |
スケルトン構造及びボーン名称 | モデルファイルと同⼀にして下さい。 |
モデル追加/改造についてのアドバイス(FBX形式)†
FBX形式のモデルを追加したり、モーションを改造する際に流れについて説明します。
VRM形式のモデルの追加の流れについては.vrmフォーマットモデルをご覧ください。
モーションデータの種類†
モデルに対してのモーションの設定方法は2種類あります。
どちらの方法を取るかを決めましょう。
- 1. モデルとモーションを一緒のFBXファイルとしてまとめる方法
- 2. モデルとモーションを別のFBXファイルとして分ける方法
- 1. モデルとモーションを一緒のFBXファイルとしてまとめる方法
メッシュ(ポリゴン)とスケルトン構造、モーションデータをまとめて⼀つのモデルファイル(FBX)にします。
この方法のメリットはBakinにインポートするファイルが1つだけになり、取り扱いが簡単なことです。
- Blender上でデータを作成する際の方法:Blenderでドーブシート>アクションにて新規で各モーションを追加し、フェイクユーザーを押した状態で作業をしてください。
- 2. モデルとモーションを別のFBXファイルとして分ける方法
メッシュ(ポリゴン)とスケルトン構造を持つモデルファイル(FBX)と、スケルトン構造とモーションデータを持つモーションファイル(FBX)を別々に作成します。
この⽅法の⻑所は、同じスケルトン構造を持つモデルであれば、メッシュ(ポリゴン)形状が異なっていても同じモーションを共有できることです。
ただしモーションを共有するモデル同士はボーンの名称や長さも一致している必要があります。
(※ゲームギャラリー>「3Dチュートリアル」プロジェクトにある⼈型キャラクターはこの⽅法を使⽤しています。)
Bakinからモデルをエクスポート†
Bakinにプリインされているモデルを改造する場合は、Bakinからモデルをエクスポートします。
ここでは、ゲームギャラリー>3Dチュートリアルプロジェクトに入っているモデルを使って説明をしていきます。
- まず3Dチュートリアルプロジェクトを開き、リソース>モデルのリストにて下記を選択します。
- 「sb_SampleCast_model_A」
- 「motion_AB」フォルダ
- リストの上部にあるエクスポートボタンを押し、任意のフォルダにエクスポートします。
- defファイル
Bakinにインポート済みのモデルをエクスポートすると、 エクスポート先に.defファイルが生成されます。
このファイルにはマテリアルとテクスチャの紐づけ設定が記述されているので、Bakinにモデルをインポートする際にマテリアルの設定を改めて行う必要がなくなります。
defファイルがなくとも、Bakin上でマテリアルとテクスチャの紐づけを行うことができます。
Blenderの環境設定†
BakinからエクスポートしたファイルをBlenderにインポートする前に、Blenderの環境を設定しておきます。
- シーンの単位
シーンの単位が以下の設定となっている事をご確認下さい。
設定が異なると FBX 出力時にモデルが適切なサイズとなりません。
- フレームレート
フレームレートは60fpsに設定してください。
Blenderへインポートする†
- BakinからエクスポートしたファイルをBlenderにインポートします。
Blender を立ち上げ、ファイル>インポート>FBX を選択し、以下の設定でインポートします。
- Blenderにモデルをインポートしたら、必要に応じてポリゴンメッシュやテクスチャなどを好みに編集します。
- Blenderのテクスチャノードの設定
Blender上で下記のようにテクスチャを繋げると、Bakinにインポートした際に自動的に「a_n_rm」のシェーダーが作られ「アルベド・ノーマル・マスク」が割り当たります。
Blenderからエクスポートする†
Blender上でモデルやモーションの編集が完了したら、Blenderからデータをエクスポートします。
- 1. モデルとモーションをまとめたFBXにする場合
以下の設定でエスクポートすると、モデルとモーションが1つになったFBXファイルが出来上がります。
- エクスポートの設定
FBXエクスポートの設定は、以下のように設定してください。(以下はBlender3.6での設定例)
- ノーマルマップを使用する場合
ノーマルマップが設定可能なシェーダーを使用する場合、
FBXエクスポート設定で、「タンジェント空間」を必ずONにしてエクスポートしてください。
(OFFの場合、Bakinでは正しく表示されません。)
- (!)2.83より新しいバージョンのBlenderを使用し、上記の設定でエクスポートしたデータがBakin上で90度倒れて表示されてしまう場合、FBXエクスポート画面の「トランスフォーム>空間の変換を使用」にチェックを入れていただくと改善する可能性がございます。
- 2. モデルとモーションを別のFBXファイルとして分けてエクスポートする場合
二種類のfbxファイルをエクスポートする必要があります。
- モデルデータ: メッシュ+スケルトン構造を含むデータです。これは上記1.のエクスポート設定で出力してください。
- モーションデータ: スケルトン構造+モーションデータを含むデータです。エディタ上でメッシュ(ポリゴン以外)を選択した状態で、上記1.のエクスポート設定に加えて、エクスポートダイアログ内の「選択したオブジェクト」にチェックを入れて出力してください。
Bakinへのインポート†
- リソース>3Dスタンプの3Dスタンプリストにて追加ボタンをクリックし、アセットピッカー>「ファイルから作る」タブを選択します。
※もしくは項目ツリーにインポートしたいFBXファイルをドラッグ&ドロップします。
- リソース>モデルからインポートする場合の注意
リソース>モデルからもインポートすることができますが、モデルをマップに配置したり、ゲームで使えるようにするためには「スタンプ」にする必要があります。
「スタンプ」については「スタンプ」とはをぜひ一度ご確認ください。
- 追加したいモデルの入ったフォルダを開き、FBXファイルを選択します。
必要に応じてアセットピッカー左下の「最適化(三角分割)」をオンにします。
スケールは基本的に"1"にします。
- 「最適化」をオンにすると以下の処理が自動で行われます。
- スキンウェイトの正規化
- ポリゴンの三角化
- スケールの適用
- FBX7.4より以前のFBXフォーマットの場合、FBX7.4への変換
※もしモデルファイルが正しく取り込めなかった場合は「最適化」をオフにしてください。
- 【追加して終了】を押します。
インポートしたモデルをグラフィックとして持つ3Dスタンプが生成されます。
この際fbxファイル内の「モデル」「マテリアル」「テクスチャ」の情報がBakinに登録されます。(「モーション」は別途インポートする必要があります。下記を参照してください。)
- インポートするFBXのマテリアルと、「テクスチャがすべて同じマテリアル」がプロジェクト内にあった場合、「マテリアルの共有化」ダイアログが開きます。
このダイアログではマテリアルを共有するかどうかを選択することができます。
マテリアルはインポート後でもリソース>3Dスタンプでマテリアルを割り当てなおすことができます。
テクスチャがすべて同じ既存のマテリアルをインポートしたモデルに割り当てることによって、プロジェクト内にあるモデルとマテリアルを共有することができます。
- 共有化のメリット/デメリット
- <メリット>
-1つのマテリアルを調整するだけで、マテリアルを共有しているオブジェクト全ての調整ができます。
-ゲーム内のマテリアルデータ数を抑えることができます。
- <デメリット>
-マテリアルを共有しているオブジェクトのうち、どれか一つだけの質感を調整する、ということはできなくなります。
(Bakinへのインポート後、共有しているマテリアルをコピーし、3Dスタンプに割り当てなおすことで共有をやめることもできます。)
(!)使われているテクスチャサイズが大きいとツールやゲームの動作に影響することがあります。(ローディング等に時間がかかり動作が重くなる)
ゲーム定義>プロジェクト設定>ゲームエンジンの設定 にある「内部フォーマットの設定」機能のご利用をご検討ください。
- 「マテリアルの共有化」ダイアログには下記の選択肢があります。
- 自動的にマテリアルを割り当てる
プロジェクト内にある同じテクスチャを使ったマテリアルを自動で割り当てます。
対象となるマテリアルが複数ある場合は、プロジェクトに登録された順序が早いマテリアルが割り当てられます。
またテクスチャが設定されていないマテリアルはすべて新規のマテリアルとしてインポートされます。
- すべて「新規のマテリアル」として追加する
プロジェクト内に同じテクスチャを使っているマテリアルが存在しても、すべて新規のマテリアルとしてインポートします。
他のスタンプやモデルとマテリアルを共有したくない場合に選択してください。
- 手動で割り当てるマテリアルを選択する
インポートするモデルの各マテリアルに対し、プロジェクト内にある同じテクスチャを使っているマテリアルを手動で選択します。
対象となるマテリアルが複数ある場合は、その中から割り当てるものを選択できます。
テクスチャが設定されていないマテリアルに対しては、プロジェクト内の「テクスチャを使っていないマテリアル」の中から割り当ててください。
- 「テクスチャがすべて同じマテリアル」とは
マテリアルに指定されているすべてのテクスチャが一致するマテリアルのことです(テクスチャが 1 つも指定されていないケースも含まれます)。
例えば、下図のようにアルベドマップ、ノーマルマップ、マスクマップにテクスチャが指定されているマテリアルでは、この 3 つすべてが合致する必要があります。
- 3Dスタンプ化されたモデルのモデルデータはリソース>モデル にも項目として追加されます。
追加されたファイルの格納場所は、【モデルの設定 > 基本 > フォルダー名】に表⽰されます。
またテクスチャは⾃動的に texture フォルダが作られ、そこにまとめられます。
※【ファイルから作る】で追加した素材は、初めから登録されているシステム素材【reserved】とは区別され、
黒字のモデル名で表⽰されます。
また、ユーザー素材は、ゲームを保存する際に、ゲームファイル内に保存されます。
元のファイルがそのまま使⽤されるわけではありません。
- リソース>3Dスタンプ>スタンプの設定>モーション設定>モーション欄をクリック。
アセットピッカー>「リソースから作る」タブにて、先ほどインポートしたモデルを選択して追加します。
これにより「モーションセット」が生成され、3Dスタンプに対してモーションセットが割り当たります。
- リソース>モーションへ移ります。
画面左側のモーションセットリストにて先ほど追加したモーションセットを選択します。
- モデルとモーションをまとめたFBXの場合
先ほどの操作により画面右側のモーションリストにFBXに含まれていたモーションが自動的に登録されています。
- 1つのモーションファイルの中にモーション(アクション)が複数あった場合、それぞれ別のモーションとして読み込まれます。
- モデルとモーションを別のFBXファイルとして分けている場合
この場合は手動でモーションセットにモーションを追加していく必要があります。
モーションリストのモーション追加ボタンをクリックし、アセットピッカー>「ファイルから」タブより、モーション用のFBXファイルを追加していってください。
(!)Bakinへのインポート時、モーションはループ再⽣「なし」が初期設定となっています。
ループ再⽣させたい場合は、リソース>モーションのプロパティにて、該当モーションの「ループ」設定をONにしてください。
(!)追加されたモーションFBXは、リソース>モデルに登録されます。
- モーション名を規定の名前にすることで、ゲーム中の動作とモーションが連動するようになります。
例えばモーション名を"walk"にするとキャストが歩く際のモーションとして使われるようになります。
モーション名についてはモーション名規則をご覧ください。
インポート後のモデル・モーションの更新†
モデルやモーションをBakinにインポートした後、元のFBXファイルの内容を変更した場合は以下の方法でBakin上のデータを更新することができます。
- リソース>モデルに行き、該当するファイルを選択。
- 「情報の更新」を押す。
- モーションのフレームを変更した場合は、リソース>モーションで当該のモーションセットを選択し、そのモーションリストにて開始/終了フレーム数を変更してください。
VRMフォーマットモデル†
3DキャラクターとしてVRMフォーマットのモデルを使用することができます。
VRMモデルはVroid Studioなどで作成してください。
VRMファイル内にあるシェイプキーも利用できます。
VRMモデルのインポート†
リソース>3Dスタンプの3Dスタンプリストにて追加ボタンを押し、アセットピッカーの「ファイルから作る」タブからインポートするVRMファイルを選択してください。
インポート時にBakinにプリインされたモーションが自動的に割り当たります。
割り当たるモーションは、リソース>モーション>reservedフォルダ>VRM にあります。
- モーションについての制限
現時点では下記の制限があります。
- ベースモデルのボーンの長さの違う場合、それらのモーションは混在できません。
- テクスチャについての注意
(!)VRMフォーマットのモデルは使われているテクスチャサイズが大きいケースがあり、そのためツールやゲームの動作に影響することがあります。(ローディング等に時間がかかり動作が重くなる)
ゲーム定義>プロジェクト設定>ゲームエンジンの設定 にある「内部フォーマットの設定」機能のご利用をご検討ください。
- インポート時に生成されるファイル
インポートするVRMファイルがあったフォルダに下記のfbxファイルが自動生成されます。
必要に応じてご利用ください。
.vrm.x100.fbx | VRMモデルを標準的なfbxに変換したファイルです。 |
.vrm.humanoid.fbx | ボーンを簡略し、UnityのHumanoidbodyに沿ったボーン名に変換したファイルです。 |
.vrm.mixamo.fbx | ボーンをさらに簡略化し、Mixamoにインポートしやすくしたファイルです。 |
- ブレンドシェイプの設定
VRMモデルに含まれるシェイプキーをブレンドして、表情の設定をすることができます。
リソース>ブレンドシェイプにて追加ボタンを押し、アセットピッカーの「すぐ使える」タブから既にインポート済みのVRMモデルを選択してください。
シェイプキーをブレンドする方法についてはブレンドシェイプをご覧ください。
VRMモデルへのMixamoを使ったモーションの追加†
インポート時に自動的に割り当てられるモーションに対して、Mixamo (https://www.mixamo.com/) を利用してモーションを追加する場合は下記の手順で行ってください。
下記はすでにVRMモデルをBakinのプロジェクトにインポートしてある前提で書かれています。
1. Mixamo (https://www.mixamo.com/) にログイン
2.「Upload Character」のボタンを押す
3. VRMモデルをBakinにインポートした際、インポート元のフォルダに生成される"(ファイル名).vrm.mixamo.fbx"をダイアログにドラッグ&ドロップする。
もし上記のモデルがMixamoに認識されない場合はBakinをインストールしたフォルダ以下にある下記のモデルをダイアログにドラッグ&ドロップする。
(インストール先によってファイルパスは変わります。)
C:\Program Files (x86)\Steam\steamapps\common\BAKIN\contents\templates\3DAssetTutorial\res\model\SampleMan_vrm\SampleMan_vrm.fbx
4. Mixamoの左の欄から、モーションを選択
5. 必要に応じて右のパラメータで微調整をする
6. 調整し終わったら、Downloadボタンをクリック
Download Settings は下記で設定する
・Format: FBX Binary (.fbx)
・Skin: Without Skin
・Frames per Second: 60
・Keyframe Reduction: none
ここまでがMixamo上の作業です。
7. Bakinにて、リソース>モーションを開き、reserved>VRM>SampleMan_vrm_sample_motion をコピー&ペースト
8. ペーストしたSampleMan_vrm_sample_motion_2を選択、画面右側のモーションリストにある「モーション追加」をクリック
9. アセットピッカーの「ファイルから作る」タブから、先ほどMixamoからダウンロードしたfbxファイルを選択し、「追加して終了」をクリック
10. モーションリストに追加されたデータの「モーション名」を適宜変更し、ループをするか否かを設定する。
(バトル等で自動でモーションを割り当ててほしい場合はこちらのモーション名ルール一覧をご覧ください。)
11. リソース>3Dスタンプに戻り、モーションを追加するスタンプ(VRMモデルから作ったスタンプ)を選択
12. 画面右側のプロパティー「モーション設定>モーション」の欄をクリック
13. アセットピッカーの「すぐ使える」タブ>「モーション」にて、先ほど作ったモーションセットを選択
以上でモーションの追加は終了です。
さらに新しくモーションを追加したい場合は、4~6(Mixamoでの作業)と8~10を繰り返してください。