ツクロウヤ

Unityによるゲーム開発記

【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 ドライブ

Common.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種のみとか。
おそらくショートストーリー的な形で一連の物語の中で一通りのシステムを体験して、ラスボス倒して終了的な形になるかと。

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

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