3Dキャラクター†
ここでは、手に入りやすいBlenderという3D制作ソフトウェアを使います。
バージョンは2.83以降です。Blenderの詳しい使い方はここでは省略させていただきます。
Blenderの環境設定†
はじめに、Blenderの環境をBakinに適したものに変更しておきます。
- シーンの単位について
シーンの単位が以下の設定となっている事をご確認下さい。
設定が異なると FBX 出力時にモデルが適切なサイズとなりません。
- FBX エクスポートについて
Bakinの仕様に適した FBX エクスポートの設定は、以下のように設定してください
モーションの設定方法†
モーションの設定方法は 2 種類あります。
①モデルとモーションを一緒のファイルとして読み込む方法
②モデルとモーションを別fbxファイルとして読み込む方法
- ①モデルとモーションを一緒のfbxファイルとして読み込む方法
キャラクターモデルとモーションの付いたボーンをすべて選択し、
まとめてエスクポートすると、モデルとモーションが1つになったfbxファイルが出来上がります。
Bakinでfbxファイルを読み込むと、モデルが生成されるので、モーション管理でそのモデルを選択することで
内蔵されたモーションが読み込まれます。
- ②モデルとモーションを別fbxファイルとして読み込む方法
モデルとボーン、同じ構造のモーション付きボーンを、それぞれ別々にエクスポートすると、
別のfbxファイルとしてエクスポートされます。
モデル側のボーン構造と、モーション側のボーン構造は同じである必要があります。
Bakin でそれぞれのfbxファイルを読み込み、「モデルに使用したいfbx」と「モーションに使用したいfbx」をそれぞれ設定していきます。
自作のモデルを作る際のアドバイス~プリセットのモデルをベースに作ってみる~†
- Bakinからモデルをエクスポートする
ここでは、3D_Tutorialゲームファイルの「Standard_A」キャラクターモデルを参考に説明していきます。
※事前にDLC「3D_Tutorial」のダウンロードが必要です。
3D_Tutorialゲームファイルを開き、「リソース管理>モデル>standard_A」の3D キャラクターモデルを選択し、エクスポートボタンを押します。
任意のフォルダを選択し、エクスポートします。
続いて、モデルリストの「motion_A」フォルダを選択し、こちらもエクスポートしておきます。
- Blenderにインポートする
Blender を立ち上げ、ファイル>インポート>FBX を選択し、以下の設定でインポートします。
今回はモデルとモーションを別ファイルとして扱う方法なので、
モーションの設定方法「②モデルとモーションを別fbxファイルとして読み込む方法」で進めます。
この方法では、同じボーン構造の異なるキャラクターモデルに、同じモーションを使用できるという利点があります。
モデルをインポートしたら、必要に応じてポリゴンメッシュやテクスチャなどを好みに編集してください。
モデル追加時の下準備†
- 追加したい素材のファイルを⼊れるフォルダを⽤意します。
このフォルダは追加の際に⼀時的に使⽤するだけで、ファイルの場所やフォルダ名は問いません。
追加したモデルは、ゲームファイルフォルダ内のresフォルダ下へ、同じファイル名の別ファイルとして追加されます。
- ⽤意したフォルダの直下にモデルファイル(.fbx)とテクスチャファイル(.png)、モーション設定ファイル(.def)を⼊れます。
例:[standard_A]フォルダに、追加したい素材(standard_A)を⼊れた場合
Bakinへモデルを追加する際、エクスポート時に生成された standard_A.def を一緒のフォルダに置いた状態で追加してください。
このファイルには、マテリアルとテクスチャの紐づけ設定が記述されています。
マテリアル名、テクスチャ名を変更した場合は、こちらを編集する必要があります。(編集しなくてもBakin上で手作業にて設定することは可能です。)
自作のモデルを作る際のアドバイス~自作の3Dキャラクターを追加する~†
⾃作の3Dキャラクターを Bakin に追加する⽅法を説明します。
追加⽅法は、モーションデータの持ち⽅の違いにより2種類あります。
- モデルとモーションをそれぞれ別個の FBX ファイルとする⽅法
ポリゴンとスケルトン構造を持つモデルファイルと、
スケルトン構造とモーションデータを持つモーションファイルに分けて追加します。
この⽅法の⻑所は、同じスケルトン構造を持つモデルであれば、異なるポリゴン形状でも既存のモーションを適⽤することが可能です。
(※Bakin の⼈型キャラクターは、この⽅法を使⽤しています。)
※追加に必要なファイルは、モデル(.fbx)・テクスチャ(.png)・モーション(.fbx)ファイルです。
モデルとモーションのスケルトン構造及び名称は同⼀とします。
- モデルとモーションを⼀つの FBX ファイルとしてまとめる⽅法
ポリゴンとスケルトン構造とモーションデータをまとめて⼀つのファイルとして追加します。
複数のモーションを持つ場合は、該当ファイルをモデルで読み込み、モーション管理で該当モデルを選択します。
すると含まれるモーション(アクション)がリストされるので、フレーム数やループ設定を調整します。
追加に必要なファイルについて†
3Dキャラクターは、モデル・テクスチャ・モーションのデータが必要です。
これらの作成には3Dグラフィックスの知識や所定のソフトウェアが必要です。
各ファイルの形式や仕様については、以下のようになります。
1)モデルファイル(.fbx)
- ファイル形式: FBX 形式。
- FBX のバージョンは、FBX7.4(FBX2014)を推奨します、
※Bakin の⼈型キャラクターは、Blender2.83 にて制作しています。
- FBX 形式はアスキー、バイナリの両⽅に対応しています。
- FBX7.4(FBX2014)より以前のバージョンの場合、Bakin へ追加の際に最適化オプション設定を有効にすると、読み込み可能となります。(※正しく表⽰されない場合もあります。)
詳しくは、後述の Bakinへの追加⽅法の項⽬を御覧下さい。
- 三⾓ポリゴン以外は正しく表⽰されません。
予め三⾓ポリゴン化を⾏うか、Bakin へモデル追加の際に最適化オプション設定を有効にして下さい。
(※最適化オプションを有効にすると⾃動的に三⾓ポリゴン化が⾏われます。)
- Bakinの地形1ブロックのサイズは、Blender ではプリミティブ⽴⽅体(寸法1m:拡大縮小0.5)と同等のサイズです。
Bakin の標準的なキャラクターサイズは地形1ブロックに対して収まるようなサイズ感となっています。
- 1つのモデルに対し、マテリアルは複数設定できます。Bakin側でモデルの設定マテリアルを変更することも可能です。
- ファイル名は、半⾓英数字で設定して下さい。
- スケルトン構造のジョイント数の制限については、モデル1体に対して最大1365を上限としています。
ただしこの上限は、OpenGLの仕様により、マシンスペックによって最低341、最大で1365の間で変化します。
また、ウェイトのインフルエンスは最大4として下さい。(最大4を超えた場合は、ウェイトの大きいものを優先して4つ採用されます。)
- モーションデータを別個とする場合は、キャラモデルのボーンにはアニメーションを付けずに、
ポリゴンとスケルトン構造だけの FBX ファイルとして出⼒します。
- モーションデータをまとめる場合は、このモデルファイルに複数のアニメーションを設定し、
モデルとベイク処理したアニメーションをまとめて⼀つの FBX ファイルとして出⼒します。
なお、モーションの作業単位は、60fps となります。
2)テクスチャ(.bmp、.png)
- ファイル形式:BMP 形式 または PNG 形式。
- テクスチャのピクセルサイズは、
64×64、128×128、256×256、512×512 などの2のべき乗と呼ばれる数値を推奨します。
256×128 なども使⽤可能です。
2のべき乗以外のサイズのテクスチャを設定すると表⽰に不具合が起る事があります。
- テクスチャのファイル名は、モデルの FBX 内で指定されているものです。
- BMP にアルファチャンネルの設定することで、透過表現が可能です。
また、PNG についても透明部分を設定することで、透過表現が可能です。
- Bakinでは PBR ( Physical Based Rendering )を採用することにより、よりリアルな質感表現が可能です。
PBR表現を使用する場合、1つのモデルに対し、用途に合わせてテクスチャを3枚設定する事を推奨します。
アルベドマップテクスチャ:モデルの色を設定するテクスチャ
ノーマルマップテクスチャ:モデル表面の凹凸を設定するテクスチャ
マスクマップテクスチャ:RGBA各チャンネルにそれぞれ、R(発光量)、G(ラフネス)、B(金属)、A(スペキュラ強度)を設定するテクスチャ
マスクマップはこれらを正しく設定することで、よりリアルな質感表現が可能です。
また、マスクマップがなくても、
マスクマップで制御される設定はマテリアルプロパティによりある程度調整が可能です。
- ファイル名は、半⾓英数字で設定して下さい。
- テクスチャファイルの例
アルベドマップ テクスチャ ノーマルマップ テクスチャ マスクマップ テクスチャ
3)モーションファイル(.fbx)
追加する素材をモデルとモーションを別個のファイルとする場合、モーションだけのファイルが必要となります。
FBX の対応バージョンや形式は、モデルファイルの項⽬と同じ仕様になります。
- ファイル形式: FBX 形式。
- ポリゴンデータは削除して下さい。
- スケルトン構造及び名称は、モデルファイルと同⼀にして下さい。
- モーションの作業単位は、まとめた場合と同じ 60fps となります。
- 1つのモーションファイルの中にモーション(アクション)が複数あった場合、それぞれ別のモーションとして読み込まれます。
- 出⼒したいモーションの開始フレームと終了フレームを指定し、ベイク処理を設定して FBX ファイルを出⼒します。
- モーションのファイル名は自由ですが、、mot_モーション名(半⾓英数字).fbx など、特定の文字列を含めておくと作業しやすいかと思います。
例 mot_walk.fbx mot_wait.fbx mot_run.fbx
- モーションはループ再⽣なしが初期設定となっています。
ループ再⽣させたい場合は、モーションプロパティで該当モーションの「ループ」設定をONにしてください。
モデル追加時の下準備†
- 追加したい素材のファイルを⼊れるフォルダを⽤意します。
このフォルダは追加の際に⼀時的に使⽤するだけです。ファイルの場所やフォルダ名は問いません。
追加したモデルは、ゲームファイルフォルダ内のresフォルダ下へ追加されます。
- ⽤意したフォルダの直下にモデルファイル(.fbx)とテクスチャファイル(.bmpまたは.png)を⼊れます。
例:[standard_A]フォルダに、追加したい素材(standard_A)を⼊れた場合
●Bakin への追加⽅法†
Bakin への追加⽅法は、モデルとモーションが別個の場合でもまとめた場合でも同じです。
- 【リソースメニュー】>【モデル】>【追加 ボタン】を選択、【Asset Picker】ウィンドウを開きます。
- 【ファイルから選択】タブを選択します
- 追加したいモデルの入ったフォルダを開き、fbxファイルを選択します。
- 必要に合わせて【FBXファイルのインポート時、自動で最適化を行う】をチェックします。
最適化は以下の処理を自動で行います。
・スキンウェイトの正規化
・ポリゴンの三角化
・スケールの適用
・FBX7.4より以前のFBXフォーマットの場合、FBX7.4への変換
※もしモデルファイルが正しく取り込めなかった場合は、チェックを外してください。
- 【追加して終了】を押します。
★1~5の手順は、モデル リストにfbxファイルをドラッグ&ドロップすることでも可能です。
- 【モデル リスト】にキャラクターモデルが追加されます。
追加されたファイルの格納場所は、【モデル設定 > 基本 > フォルダー名】に表⽰されます。
またテクスチャは⾃動的に texture フォルダが作られ、そこにまとめられます。
※【ファイルから選択】で追加した素材は、初めから登録されているシステム素材【reserved】とは区別され、黒字のモデル名で表⽰されます。
また、ユーザー素材は、ゲームを保存する際に、ゲームファイル内に保存されます。
元のファイルがそのまま使⽤されるわけではありません。
- 追加したキャラモデルを選択し、スタンプ ボタンでスタンプ登録しておきます。
モーションの追加†
続けて、モーションのfbxファイルがある場合は、以下を行います。
- 上記と同じ手順でモーションファイルをモデルとして追加し、そのあとモーションメニューで追加したモーションのモデルを選択します。
- モーションのモデルを選択すると、モーション リストに設定が登録されます。
モーション設定名は好きなものに変更してOKです。
- モーション設定登録後、一度スタンプに戻り、キャラモデルのスタンプにモーション設定を登録します。
- スタンプでモーション設定を登録したら、モーションメニューに戻り、設定したいモーション設定を選択します。
- 画面右のプロパティ【モーション】に、最初に追加したモーションモデルに入っていた、モーションが登録されているのでフレーム数やループ設定など、必要な設定を行います。
- さらに追加したいモーションがある場合は、【プロパティ>モーション】の[+]追加ボタンをクリックし、モーションモデルを追加していきます。
モーションプロパティの「モーション名」は、ゲーム中の挙動と紐づいているので、以下モーション名を付けることで、ゲーム中の動作として自動的に登録されます。
wait:待機モーション
battle_wait:戦闘時の待機モーション
walk:歩きモーション
run:走りモーション
attack:戦闘時の攻撃モーション
skill:戦闘時のスキルモーション
damage:戦闘時のダメージモーション
設定が終わったら、キャスト設定などを行い、テストプレイで動きを確認してみましょう!
以上でキャラモデル追加の一連の手順は終了です。
キャラシェーダ【cha_hair】について†
キャラシェーダを使用する場合、モデルに以下のマテリアルが含まれている必要があります。
・分離してるマテリアルは顔パーツのみ?
・顔マテリアルは1つ。その中に目や口のテクスチャが貼られる。
モデルとしては顔matのみ
目や口の位置はどうやって判断している?
インポートしたモデルでも、それらしい位置に出た。
これはdefの情報を読んでいる?読んでいるならインポート時に同じフォルダにあることが条件?
体のマテリアルは1つでもよい
重要なのは顔のマテリアルだけ
・顔パーツの位置は、シェーダで定義しており、
正面から投影する形で、目や口をキャラモデルに表示させている。
マテリアルプロパティで「目の高さ:1」と設定すると、Bakin上の高さ1の位置に、目が表示される。
※DCCツール側のモデルサイズが1の場合の話