TexTransTool v1.0.0 についてと歴史と今後
こんにちは! Reina_Sakiria だよ〜!
今回は、v1.0.0 になるに伴って v0.10.0 と同じように概要とかを書いてくのと、以降時の注意点や、今後のセーブデータの方針。そして、歴史や今後について書いてくよ〜!
v1.0.0 へのアップデートの際の注意事項
v0.10.x から
セーブデータに関わる変更点は存在しないため、マイグレーションの必要がなく、そのまま全てのセーブデータが保たれた状態でアップデート可能です!
v0.9.x ~ v0.3.1 から
v0.10.x を経由し、 v0.10.x へのマイグレーションを行ってから、v1.0.0 にアップデートしてください!
マイグレーションを行う前に、Project の バックアップを強く推奨します。
v1.0.0 では v0.8.x またはそれ以前のセーブデータはすべて破棄されているため、 v0.10.0 を経由する必要があります。
今後のセーブデータの方針
実験的ではない機能、たとえば SimpleDecal や AtlasTexture などは セーブデータの破壊的変更が、行われなくなり。マイグレーションする必要がなくなります。
ただし、実験的機能はその限りではなく、Migrator にて追記されていますが、マイグレー ションが用意される機能の場合は 2 マイナーバージョンの範囲でマイグレーションが可能になります。
実験的機能を使用しているならば、マイグレーションが用意されている破壊的変更がそのマイナーバージョンに存在するか否かを Changelog などから参照するよう、お気をつけてください!
TexTransTool の歴史
丁度いい機会です。ある程度記憶を頼りにまとめておきます!
はじまり
2023年 3月~4月
ある日 ... TTT の歴史は私(Reina_Sakiria) が AAO: Avatar Optimizer を見つけたことから始まります。
私は、もともとアバターモデラーであり、自分自身が FBX によく変更を加え、その変更に耐えることができる Prefab Variant を使用していて、 Prefab の解凍 にはじめからかなり強い忌避感を持っていたため、Moduler Avatar のモジュール的な改変やビルド時に結合する仕組みが非常に魅力的だと思い、 MA を発見した当初(UnityPackage で配布されていた頃)から自作アバターや自作のアクセサリーに組み込んでいました。
そこで現れた AAO は MA にて示されたビルド時に処理を行う非破壊のやり方で、AAO は Mesh を結合することを可能にしていました。
それは、分けたほうが扱いやすさのが上がる Mesh をモデルの時点では分割しておき、ビルド時に結合するという、扱いやすさとパフォーマンスの両立を実現できるということ。
私は、それが テクスチャ にもほしいと思ったんです!
モデルの時点では、ある程度の粒度にテクスチャを分割しておき、テクスチャファイル(.clip や .psd など)の複雑度を下げたり、そもそも UV を作るときの並び替えをできるだけ楽をし、どれだけ空白を作ろうが、人が書きやすい配置を優先で UV を作れるようにし。
それを、ビルド時に全て回収し、必要に応じてテクスチャを結合する仕組み。
複数のテクスチャ を 一つのテクスチャ にまとめることを アトラス化 と言います。
そんな強力なツールが私は欲しかった。
それと
私は、AAO を見つける以前から。アトラス化を Blender の ベイク を使用し非常に面倒な手順を踏みやっていたことがあり、それを以前からやめたいとも思っていました。
ですが、 MA のような非破壊的適用は、MA 以外はできないと思っていて、でも AAO は何故か MA と同じように 非破壊的動作や、 VRCSDK にブロックされないコンポーネントの付与ができています。
つまりそれは、MA 以外の存在が MA のような非破壊的適用が可能であるということ。それを AAO を見たときに私は初めて知りました。
こうした、「ビルド時アトラス化がほしいという思惑」と「MA 以外の存在が非破壊的動作が可能であること」を知り、私は 非破壊テクスチャアトラス化ツール の開発を決意しました。
非破壊アトラス化の実現 TexturAtlasCompiler v0.0.0-Beta (2023年 4月頃)
はじめに、非破壊ツールを作るにあたって、AAO の調査をすることから始めました。
なぜ MA のようなビルド時実行や VRCSDK にブロックされないコンポーネントの追加が可能なのか。
AAO は OSS です。なので中身を見ることにしましたが、そこにあったのは MA のコードでした。
どうやら (当時の) AAO は MA のコードをコピーすることによって可能になっていたようです。
MA のコードを解析したところ、 VRCSDK に何故か IVRCSDKPreprocessAvatarCallback
というコールバックを受け取る手段があり、 VRCSDK にブロックされないコンポーネントの追加は (当時) VRCSDK にリフレクションでアクセスし、コンポーネントのホワイトリストに追加することで解決されていました。(...治安がやばいね!)
なお後者に対しては、少した頃に VRCSDK から IEditorOnly が追加され、いい手段で回避が可能になったようです。いい話!
非破壊ツールの作り方は理解できなので次は アトラス化 それ自体の開発なのですが、それに関しては AtlasTexture のドキュメント ReinaSakiria's-Note
にて詳しく書かれているのでここでは省きますが。
やったらできました。(... ? 、まぁできたので Happy!)
そうして AtlasSet と言うコンポーネントを1つを持つ TexturAtlasCompiler v0.0.0-Beta1 ができました!
ついでに作られたデカール TexTransTool v0.1.0 (2023年 6月頃)
ある日、AtlasTexture のための技術を転用すれば テクスチャを貼り付けるような表現が可能であることに気づきました。詳しくは SimpleDecal の ReinaSakiria's-Note
にて詳しく書かれています。
これは、言うなれば、非破壊的に色改変やテクスチャ改変が可能になるという可能性でした。
そうして生まれた SimpleDecal。 しかし、その時のツール名は TexturAtlasCompiler
であり、持つ機能が名前を超過したため、もう少し領域の大きい名前が必要になりまし た。
その時の核となる技術には 2つの UV 間 を転写する 内部名称 TransTexture があったのもあり。
- Tex (テクスチャ、 Texture の省略形)
- Trans (Transform や Transfer など、一意には定まらないが、テクスチャを超越をさせること)
- Tool (道具)
という形で、 TexTransTool という名前に変更し、SimpleDecal が追加された TexTransTool v0.1.0 をリリースしました!
アップデート
v0.2.x (2023年 6月下旬)
おそらく、非破壊ツールで初めての リアルタイム反映 なプレビューを SimpleDecal に実装しました!
それを実現する仕組みは、今使用されているものとは違い Shader によるエミュレーションであり、目安程度にしかならなければ、複数同時プレビューも不可能ですが、これが 非破壊ツールのリアルタイムプレビューの先駆けだったと思います。
他にも、 AtlasSet の更に優れた UV 並び替えアルゴリズムが追加されたりなどがありますが、このバージョンから VPM にて配布されています!
v0.3.x (2023年 9月頃)
全てのコンポーネントの動作が高速化し、以前まで事前 Compile が必要だったのが必要なくなりました!
それまでは、ビルドする前に設定の変更や追加した場合 Compile を実行し、アトラス化やデカールを適用したテクスチャやメッシュを生成していたのですが必要がなくなりました!
この高速化には AAO の作者(anatawa12)からの助言によって可能になっていて、分単位かかっていた アトラス化や 5秒ぐらいかかっていたデカールが、秒単位や0.1秒単位レベルにまで早くなったため、ビルド時に全ての処理を行うことが現実的になりました。 THX!
それと AtlasSet の名前が作り直しとともに AtlasTexture となり今の TTT と同じ名前になりました。
他にもいろいろ、変なものも含め追加されていますが、特筆すべきなのは SimpleDecal に アイランドカリング が追加されたことですね。
これは 後に IslandSelector となるものですが、これが TTT の Decal 系で 部分的に色を帰るなどこの都が可能になり、TTT で可能な色改変の表現力を飛躍的に大きくするものでした!
それと、この頃から AAO の作者(anatawa12) からの PullRequest の提供により Prefab Override を生成しながら行っていた Preview が AnimationMode を(若干悪用な気もしますが)使用することで、Prefab Override を生成せずにプレビューが可能になっています!
これによって本格的に非破壊的な色改変に必要なものが揃ってきていたのを感じていました。
v0.4.x (2023年 10月頃)
ここらへんから マイナー 1つ ごとの変更点が肥大化し始めます ...
このバージョンは様々な変更があるのですが、特筆するならば、コンポーネントを動作させるに必要なものが大幅に減りました。
以前までは ビルドを受け取るマーカーだったり、マーカーとつながるグループの中に居ないといけなかったのが、そのコンポーネント単体で、アバター内に存在するだけで動作するようになりました!
少し前に NDMF が誕生していて、これに対応した最初のバージョンであったり。
他にも、SimpleDecal などのコンポーネントのリアルタイムプレビューが複数同時にプレビュー可能になり、非常に利便性が向上したりしています。
このあたりで、少しづつ、TTT を使う人が増え始めた気がしますね!
このバージョンは Unity2019 に対応する最後のバージョンでもあるので、それも相まって v0.4.5 (v0.4 系の最終バージョン) のダウンロード数は他に比べて非常に多かったのを覚えています。
v0.5.x (2024年 1月頃)
VCC のバグが治るのを待っていたが、しびれを切らし、ワークアラウンドを適用しアップデートをリリースしました。
このバージョンで非常に大きいのはなんと言っても、実験的機能の TTT PSD Importer でしょう。
PSD を TexTransTool が独自に開発しインポーターによって同時に追加された MultiLayerImageCanvas とそれに連なる TTT のコンポーネントに変換し、PSD のレイヤーレベルの改変を可能にし、ペイントソフトがなくとも PSD を扱うことを可能にしました!
正直、この TTT PSD Importer は実験的機能ながら、 TTT の開発者である私が一番使用している機能です。
他にも、プレビューの仕組みが改善されたり、NDMF 無しの非破壊適用機能が削除されたりなど様々ありますが、詳しくは Changelog を参照してみてください!
それと TTT PSD Importer の詳しい生まれについては TexTransToolPSDImporter の ReinaSakiria's-Note
を参照してね!
v0.6.0 (2024年 3月頃)
非常にたくさんの PSD の再現性の向上が行われています。
私が普段使用している衣装などが TTT によって再現できるようになったのもこの頃からですね!
まぁ ... かなり大変だったですが ...
ここで、記事に取り上げられる事があったりと、とても驚いたのを覚えています。
v0.7.0 (2024年 5月頃)
なんと、クリスタ系の PSD の色合成の再現性が向上し、フォトショップで再現不可能な PSD すらをも TTT は再現が可能なものができたりなどもしましたが、特筆するならば。
- AtlasTexture が NDMF の Optimizing Phase にて動作するようになったこと
- SimpleDecal から IslandCulling が切り離され IslandSelector が追加されたこと
- グラデーションに特化した Decal の SingleGradationDecal が追加されたこと
IslandCulling から切り離され生まれた IslandSelector は、同時に追加された SingleGradationDecal と合わせて、非常に細かく、アバターにグラデーションを適用することを可能にしていて、これらコンポーネントによって、(実験的機能ではあったものの)非常に手軽にちょっと高度な色改変が可能になっています!
ほかにも、 実験的機能に TextureConfigurator という、非破壊的にテクスチャの圧縮設定やサイズを変えることが可能なものが追加されていて、軽量化ツールとしての利便性も向上しています。
このバージョンからマイナーバージョンごとに更新の動画を作るようになりましたね!
v0.8.0 (2024年 9月頃)
このバージョンはなんと言うか、 AtlasTexture に非常にたくさんの機能追加削除変更が行われたのと、なんといっても。
NDMF Preview への対応!
TexTransTool の扱いやすさはこの NDMF Preview 以前と以後では大きく違います!
Prefab を表示するだけで、アバタアップデートーの色改変が全部表示される。本当に NDMF Preview は TexTransTool を使った改変に対して、とても革命的でした。
この頃から TTT への Contributor が増えていて、私としては非常にありがたかったですね! Thank you for Contributors!
v0.9.0 (2025 2月頃)
v0.8.0 頃からですが、TexTransTool のコンポーネントは、モジュール的に使用できるという仕様に変更しています。
そうしてみた時、 SimpleDecal がモジュール的に使用できないのに、SingleGradationDecal がモジュール的に使用できているので、そのあたりの仕様の共通化にともない SimpleDecal のモジュール的に使用可能にする変更が入りました。
ほか、SingleGradationDecal や IslandSelector、(長いこと放置されていた)TextureBlender が実験的機能から外れたり、更に PSD の再現性が向上していたりします。
もっと特殊な IslandSelector や 過去に存在していた MaterialModifier が PR の提供により リメイクされ強力なコンポーネントとなって復活していたり、 AAO との連携機能が追加されてたり ... 様々。
余談ですが、ここのあたりで TTCE-Wgpu が生まれ、 TTT が Unity を脱出する足がかりが生まれていたりします。
v0.10.0 (2025 5月頃)
v0.10.x は v1.0.0 に向けて AtlasTexture の持つ機能を整理する方向に強く走っています。
今後が保証できないものや AtlasTexture である必要のないものを 別のコンポーネントに切り離し、削除したりなど。
ほかには、TexTransTool の Core となる部分が TexTransCore と言う別パッケージに分離していたり、実験的機能で少し面白い物が追加されていたりもしますね!
そういえば NDMF の API を用いた アニメーションによるマテリアルの置き換えにも、少しだけ対応が PR の提供によって追加されています。
そして、このバージョンは TexTransTool 最後の開発中マイナーバージョンになります。
正式リリースと今後
TexTransTool v1.0.0 、リリースにまで 2年 もかかってしまいました。
TexTransTool の開発を始める前は、他(MA や AAO などの)非破壊ツールの開発者のような プログラマー としての強力なバックグラウンドがあるわけではなく、当時は プログラマー としては一年にも満たない未熟者だったのもあり、私(Reina_Sakiria) のプログラマーとしての成長に伴い、紆余曲折を繰り返していたり、無限に脱線し続け、巨大化し ていたりと。ここまで時間がかかってしまいました。
私自身、TexTransTool のおかげで、私のプログラマーとして大きく成長できたように感じますが
今後の、私自身の成長のため、とある思惑のため、TexTransTool ではないプロダクトの開発に既に着手しています。(それが表に出せるようになるには時間がかかりますが ...) それによって TexTransTool の開発ペースは今までのペースではなくなります。
少なくとも、1つの機能追加アップデートでありえない量の機能追加をするのはもうしません!!!
告知の際に書くことや何を特筆するかに非常に困ることもしばしばあったため、あまりするべきではありません。もっと粒度を細かくするべきでした。(反省)
今後の機能追加など、予定されているものは マイルストーン にありますが、以前よりもかなり粒度を絞るようになっています。
今後、どれくらいの間隔でマイナーバージョンアップデートができるかわかりませんが、TexTransTool はアップデートを行っていく予定です!ちょっとだけ楽しみにしていてね!
それと、TexTransTool のセットアップ済みアセットを販売しようかな、とも考えています。 v1.0.0 以降は安定した機能に破壊的変更を作らないので、アセットの配布というのが現実的になったのもあるためです!
(それと、多少は開発にかかったお金の回収やもっとたくさん他のアバターもほしいので!)