イリュージョンのゲームで使用するノーマルマップですが、独自のツールでデータを圧縮する過程であのようなノーマルマップができるのではないか?と、思っていました。
ところが、そもそもUnityの仕様であることがわかりました。
Unity AssetBundle化する過程で圧縮(なのか?)されていたのです。マニュアルを見たらもしかしたら書いてあるのかもしれませんが、検索しても出てこないので書いておきます。
まずはUnity Hubをダウンロードしてインストール。
Unity HubでMODを作りたいゲームと同じバージョンのUnityをインストールして起動します。
ハニーセレクト 5.3.5
コイカツ 5.6.2
エモクリ 2017.4.10
AI少女 2018.2.2
Assetsフォルダ内に「assetbundles」と「editor」という名前でフォルダを作成。editorフォルダに空のテキストファイルを作成。コチラの名前は任意。
空のテキストファイルに
using UnityEditor;
public class CreateAssetBundles
{
[MenuItem (“Assets/Build AssetBundles”)]
static void BuildAllAssetBundles ()
{
BuildPipeline.BuildAssetBundles (“Assets/Assetbundles”, BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.StandaloneWindows64);
}
}
※スクリプトリファレンス
以上のコードをコピペして保存。あとはテキストファイルの拡張子を「.cs」へ変更します。
これで下準備完了です。
ノーマルマップをUnityへインポートしたら画像をクリック。設定項目があるのでノーマルマップとして設定してApply。
※画像の設定項目(Create from grayscale)にもある通り白黒のグレースケール画像からノーマルマップを作成さることもできます。
※ノーマルマップはOpenGL形式である必要があります。ゲーム用ではDirectX形式とOpenGL形式があり、Unity、BlenderだとOpenGLで、UE4、Substance系だとDirectXです。設定変更可能。いずれもGチャンネルを反転させれば相互変換可能です。
assetbundleをクリックして任意の名前を入力。拡張子は.unity3dにします。
入力した名前になりました。選択したファイルをこの名前で出力しますよ、という意味なので他にも一緒に変換したい画像があれば同じ名前を選択します。
画像を右クリックしてBuild AssetBundlesを押すとassetbundlesフォルダにunity3dが出来上がります。いつものノーマルマップですね。
あとはSB3Uでコピペしても良いし、そのまま使っても良いし、画像をエクスポートだってできちゃいます。
これでノーマルマップ変換とdds圧縮が同時にできますので、一度下準備ができれば後はすごく簡単です。
また、画像以外でもマテリアルやシェーダー、cloth等Unity標準の機能であればなんでもAssetBundles化できるので色々チャレンジしてみると良いかもしれません。