ツクロウヤ

Unityによるゲーム開発記やUnity,3dsMaxのTipsなどを記載していきます。

【3dsmax】メッシュ&UVのAtlas化ツール

今回は前回に引き続きAtlas化ツールの紹介です。

今回のツールは「モデルなどを作成していて、負荷軽減のために複数のメッシュ、マテリアル、テクスチャを統合してDrawCall数を抑える」といった際に使用するツールです。

このツールは今回紹介する3dsmax側のツールとテクスチャをAtlas化するPhotoshopのツールで分かれています。

テクスチャをAtlas化する際は以下の記事のツールを使用してください。

スクリプト概要

f:id:ArtAwA:20170919224206j:plain

3dsmax側では「メッシュの統合」「UV座標の変更」「Atlas化したテクスチャの割当」を行います。
具体的には以下のような感じでメッシュが統合されてUV座標が変更されます。

f:id:ArtAwA:20170919224225p:plain

使い方

今までのスクリプトはGistなどに貼り付けていましたが、今回は汎用処理などを分け、複数のファイルがあるため、zipで落とす形にしました。

スクリプトの準備】

MeshBaker.zip - Google ドライブ

  1. 上記の右上にある「ダウンロード」ボタンからスクリプトをダウンロード
  2. zipを解凍する
  3. スクリプト用のフォルダに「ArtAwA」のフォルダを格納
    ※フォルダの階層は変えない→念のため他のファイルと競合させないため

 格納場所例:
  「Win」:D:\Program Files\Autodesk\3ds Max 2017\scripts

スクリプトの実行】

  1. 上部タブのスクリプトより「スクリプトを起動」で「MeshBaker.ms」を選択
  2. 「PSD - FilePath」「CSV - FilePath」に「TextureAtlasmMaker(Photoshop)」で作成したファイルを設定
  3. Atlas化したいオブジェクトを選択してApply

※応答なしの表示が出るかもしれませんが、アタッチなどの重い処理があるため遅くなっているだけです。

今後の追加予定

・同一座標頂点の連結処理(有無は任意)

背景などをタイリングしている場合はよくありますが、隣接した頂点は連結してしまった方が負荷が下がるので、その処理を追加しようと思います。ただ、連結したくない場合もあるため、チェックボックスで有無を判定しようかと。

・テクスチャの処理もまとめて3dsmax側から呼び出せるように

テクスチャをAtlas化するツールは別の利用用途があるため分離しておいてもいいのですが、出来れば3dsmax側からで完結したいため、3dsmax側からPhotoshopのツールを呼び出す方法を検討中。DOS経由でPhotoshopの起動はいけるみたいですが、インストール場所が一定ではないですし、パラメータを渡してPhotoshopスクリプトを起動する方法が分からないため模索中です。

・処理の高速化

手作業でやるよりは圧倒的に早いですが、応答なしに見えたり、遅めなので調整。
現状100個くらいをまとめても動きが止まることはなさそうでした。

 

本当は今回GIFを取ろうと思いましたが、ScreenToGifやLICEcapなどで取ったら色がガビガビになっていたので、諦めました... お手軽に取れるなぁと一瞬思ったのに...

改修は一旦後回しで自主制作の開発に戻ろうかと思います。
それでは今回はこの辺で
(´・ω・`*)ノシ

【Photoshop】2乗テクスチャのAtlas化ツール

モデルなどを作成していて、負荷軽減のために複数のメッシュ、マテリアル、テクスチャを統合してDrawCall数を抑えるといったことが多々ありますが、バージョンが遥か昔から開発中止されたものやMaya用のものしか見当たらなかったので、3dsMax用が欲しいなということで作成しました。
Unityでもそういったアセットがありますが、同一座標の頂点がマージされていなかったり、DCCツール側で出来ればエンジンに依存しないという点もあり作成しようかと。

今回の紹介するツールではテクスチャの統合だけを分離した機能です。
下の画像のようなことだけをやります。
f:id:ArtAwA:20170918200852p:plain
この機能はエフェクトの素材を個別に作成しておき、後で統合する際などにも使用できます。(もうちょっと改良した方がよいけど...)
この後記載する3dsmax側のツールと併用することでメッシュ、マテリアルも統合することが出来ます。

スクリプトの概要

f:id:ArtAwA:20170918194448j:plain

メインの機能としては「2の乗数テクスチャをAtlas化するツール」です。
「Atlasサイズを最適化」にチェックを入れるとTextureSizeは無視され、最適なサイズで出力されます。
「UV座標用ファイルを出力」にチェックを入れると3dsmax用のファイルが出力されます。
出力されるファイルはAtlas化する素材ファイルと同階層に「export」フォルダを作成し、その中に出力されます。

使い方

今までのスクリプトはGistなどに貼り付けていましたが、今回は汎用処理などを分け、複数のファイルがあるため、zipで落とす形にしました。

スクリプトの準備】

TextureAtlasMaker.zip - Google ドライブ

  1. 上記の右上にある「ダウンロード」ボタンからスクリプトをダウンロード
  2. zipファイルを解凍する
  3. スクリプト用のフォルダに「ArtAwA」のフォルダを格納
    ※フォルダの階層は変えない→念のため他のファイルと競合させないため

格納場所例:
 「Mac」/Application/PhotoshopCC2017/Presets/Scripts/
 「Win」C:¥Program Files¥Adobe¥Adobe PhotoshopCC2017¥Presets¥Scripts

スクリプトの実行】

  1. 全てのドキュメントを閉じた状態にする(しないと警告)
  2. 「ファイル」→「スクリプト」→「TextureAtlasMaker」
  3. FilePathの参照より「統合したいファイルのあるフォルダ」を選択
  4. 必要であれば他パラメータも設定し「実行」

今後の追加予定

・マージン機能
 マージンを入れないとUVが境界にピッタリくるもので横の色を拾う可能性があるが、入れてしまうと隙間が無駄に出来るため、どうするか検討中。
 UVが境界にピッタリくるもののみ3dsmax側のツールで見た目に影響が少ない範囲で微妙にスケールを掛けるのもありかも。

・追加配置機能
 現状だと統合した画像の並び順がサイズが大きい>名前順なので、素材を追加した際に配置が一定ではありません。モデルの方だけであれば特に要らないかなと思いましたが、エフェクト素材の統合ツールとしても使うため、位置が一定じゃないと何かと不便...(UnityのParticleでSlice指定で特定のエフェクトを選択している場合など)
 場合によっては冗長になるため、エフェクト用のAtlasツールとして別途作成するかも。

次回は3dsMax側のAtlasツールの紹介をしようと思います。

それでは今回はこの辺で
(´・ω・`*)ノシ

【開発記】進捗報告(8月:3回目)

キャラのリグ周りや装備関連の処理が一通り落ち着きましたので更新更新。

前回から以下のようなことをやっていました。
・キャラのリグ入れ
・武器の切り替え構成検討
・武器の装備処理

今回も一旦スクショをペタッと。
キャラ以外は代わり映えなし... 武器が見えにくいかも... 要調整。

f:id:ArtAwA:20170831012427j:plain

【キャラのリグ入れ】

リグの構成に関しては以前に紹介していたリグの構成とほぼ変わりはありませんので割愛。リグの確認ついでにアイドル状態のモーションも作成しています。
武器の部分がちょっと違いますが、その辺りは武器の構成検討にて。
ということで早速武器の構成検討について。

【武器の構成検討】

ナイフと銃を戦闘中に切り替えることが出来るという仕様上、ナイフと銃を持ち替えたり、ホルダーの中に入れたりということが発生します。
そこでその切替(手に追従、ホルダーに追従)をどう対応するか検討していました。
おおまかに以下の2パターンが思い浮かびました。

1.プログラム側で親子関係を制御
2.アニメ側で追従するように制御

「1.プログラム側で親子関係を制御について」

装備の切り替えが発生する場合にアニメにイベントなどを仕込み、手のボーンや太もものボーンに親子関係を付けて、相対座標を設定してあげるというものです。

メリット
 ・既存のボーンを使うので、ボーンが増えない
デメリット
 ・アニメの中にイベントを設定してあげないといけないので、少し面倒
 ・武器単体にアニメをつけることが出来ない

「2.アニメ側で追従するように制御」

このやり方では武器が追従するための専用ボーンを追加し、武器はその子として配置します。手や太ももへの追従は、DCCTool側でコントローラーにリンクコンストレイントを付けてあげて行っています。

メリット
 ・アニメの制御がDCCTool側で完結する
 ・武器単体を回したりなどのアニメが出来る
デメリット
 ・専用のボーンを追加する必要がある

今回の実装では「2.アニメ側で追従するように制御」を採用しました。
理由としては武器を回したり、手の回転だけでは実現出来ないアニメを入れる予定があったこと、既にアニメイベントでエフェクトなどの制御を行っているため、アニメイベントがごちゃごちゃしないようにアニメ側で完結する点が都合が良かったためです。

この後は一旦キャラの見た目の調整は置いておいて、未作成のモーションや実際の武器の切り替え処理辺りを対応して行こうかと思います。

それでは今回はこの辺で
(´・ω・`*)ノシ

【開発記】進捗報告(8月:2回目)

前回からキャラの作成をやっていましたが、やはり背景よりテンションが上がりますね。

前回から以下のようなことをやっていました。
・キャラの作成(仮から本番用に→リグとかはまだ)
・武器の切り替え用構成検討
・キャラ制御周りの調整

「キャラの作成」
とりあえず今回もスクショをペタッと。

f:id:ArtAwA:20170821015547p:plain f:id:ArtAwA:20170821021738p:plain

3dsMax上のキャプチャなので、シェーダーは反映されていません。
実際にUnityで使う際は今までと同様にトゥーンのアウトラインシェーダーを使用します。
前回武器の切り替えがどうとか書いていましたが、今回は武器はナイフ(近接)、銃(遠距離)の2種にしようかと思います。
この2種は戦闘中に切り替えられるようにしようかと。

「武器の切り替え用構成変更」

武器2種を切り替えられるようにしたので、以前のキャラのPrefab構成、リグの構成が変わるので、その検討を行っていました。
今回は量産はしないので別のナイフとかに装備切り替えがないので、キャラに武器を持たせたまま出力しても良いのですが、今後のことを考えて仕組みだけは作っておこうと思います。
そのため、Prefab構成でどう武器を持たせるかを検証していました。
ココに関してはまだ実際に動かしていないので、後日改めて記載します。

この後はキャラのリグ入れと武器の切り替え構成の続きをやっていきます。

それでは今回はこの辺で
(´・ω・`*)ノシ

【開発記】進捗報告(8月:1回目)

今日はまだ制作を進めますが、一旦背景のスクショを撮ったので忘れないうちに進捗記載。

今週は以下のようなことをやっていました。
・背景の作成
・背景の構成変更に伴う各種調整
・仕様、スケジュールの再検討

「背景の作成」

とりあえずスクショをペタッと。

f:id:ArtAwA:20170806122049j:plain

背景はアニメ調ではなく、少し描き込むようにしました。
まだ作っていませんが、攻撃できるオブジェクトがわかりやすくなっていいかも。
背景構成としては基本的には壁床に対して、リピート感を回避するためにモニターや扉も板ポリの別オブジェクトで配置しています。
そのため、位置によってはペラいのがバレる可能性も。
柱など嘘がバレやすいものは別途ポリゴンで作成しようかと。

「仕様、スケジュールの再検討」

以前にちょっと書いていましたが、注力する箇所を絞ることにしました。
体験版的な感じでメインのアクションゲームの要素は全て入っているけど、量産などは無しにしようと思います。武器の切り替えはあるけどそれぞれ1種のみとか。
おそらくショートストーリー的な形で一連の物語の中で一通りのシステムを体験して、ラスボス倒して終了的な形になるかと。

この後はキャラ関連の作り直しとプログラムの調整を行っていこうと思います。

それでは今回はこの辺で
(´・ω・`*)ノシ

【開発記】進捗報告(7月:2回目)

先週の進捗報告。
先週は以下のことをやっていました。

・背景の作成
・キャラリグ構成変更に伴う調整

背景で2Dを描く練習をやっていますが、仕事でやっていなかったことなので、思ったよりも遥かに時間がかかる... 精進精進...

それから、しばらく前にアニメーションの移動値を反映する方法で紹介していましたが、キャラクターのリグ構成などを変えていますので、これまでのアニメを適応するとキャラがぐちゃぐちゃの状態になっていました。なので、一旦の見た目の調整。
この辺りは背景を作成したら、どちらにしろキャラは仮モデルから世界観に合わせて修正するつもりだったので、後できっちりやろうと思います。

とりあえず背景に関しては次の土日辺りにはスクショを取れる状態にしたいかと。

それでは今回はこの辺で
(´・ω・`*)ノシ

【開発記】進捗報告(7月:1回目)

久しぶりの更新...
しばらく放置してしまっていましたが、連休から開発を再開し始めましたので、進捗を報告していきたいと思います。
今までは画像とかまとまった内容とかがないと書くのもなぁと思っていましたが、日頃の記録がてら、これからは短文でもやったことを記載していこうと思います。

というわけで、連休とかは以下のことをやっていました。

・Unityのアップデート(2017が出ましたね!)
・アップデートに伴うエラーの修正
・仕様、世界観の策定
・背景の構成変更+モデル作成(途中)

これからは勉強しつつも完成させることを目標に動いていこうと思いますので、メインでスキルアップしていきたいキャラ、テクスチャ、モーション、エフェクト以外の要素はコンパクトにしていこうかと思います。
背景は視点を横からに絞って、触れる(壊せる)ものとかはモデルを作成し、触れないものはモデルではなく板ポリに2Dとかで。
テクスチャを描く作業は増やしつつ、工数は減らしていこうかと。

背景は一旦完成したら、スクショを取りたいと思います。

それでは今回はこの辺で
(´・ω・`*)ノシ