hibitの技術系メモ

数学とか3Dとか翻訳とか

Photoshop持ってなくてもpsdファイルがあるとテクスチャ改変する時に便利だという話

 今回はCGをやっている人からすると鼻で笑われるような話ですが、適当にぐぐった感触だと言及している記事がなかったので一応書いておきます。

アバターをテクスチャ改変したいとき

 アバターを改変するにあたって一番手頃な方法はテクスチャ改変(色変え)だと思います。だいたいの画像編集ソフトには色調補正(色相・輝度・彩度をいじる機能)がついているので、テクスチャ画像(pngファイル)のうち色を変えたい部分を範囲選択して色調補正する、というのがオーソドックスな方法かと思います。

 しかしこれには実は2つのデメリットがあります。

  • 範囲を選択するのがめんどくさい
  • ワークフローが直列かつ破壊的である

 レイヤー管理されたファイル(ほとんどの場合はPhotoshop用のデータであるpsdファイル)を使うことにより、これらのデメリットを解消することができます。でもワイPhotoshopなんてハイカラなモン持ってへんし……と思っているあなた、psdファイルはフリーソフトgimpでも開けるので大丈夫です。これから先は実際にgimpの操作画面を交えながら解説していきます。

範囲を選択しやすい

 これから先は、この間製作者であるみにさんの許可をいただけたので、実際の販売モデルである

miniscape.booth.pm

 みかちゃんのテクスチャで説明していこうと思います。みにさんありがとう! なななんとこのかわいいモデルが2,100円! 買うしかない! 時代の波に乗り遅れるな! マストバイ!

 で、これが実際のテクスチャ。psdファイルをgimpで開いています。

f:id:hibit_at:20181230021716p:plain

 右にあるレイヤーウィンドウで、このテクスチャ画像がいくつかのレイヤーに分かれていることがわかります。例えば、ハートの色をピンクから青に変えたい時は、

f:id:hibit_at:20181230022042p:plain

 ハートのレイヤーの色全体を変えれば、ハートの色だけが変わります。わざわざ範囲の選択や色域の選択で頑張る必要はなかった! というだけでなく、もう1つのメリットも紹介します。というか、こちらの方がより大事かなと。

直列かつ破壊的なワークフロー

 ある画像に対して

  1. 編集→その結果を反映
  2. 更にそれを編集→その結果を反映
  3. 更にそれを編集→その結果を反映

 という風に編集していくのは直列的なワークフローです。3番目の操作をした後で、2番目の操作だけを変えてみた結果を見たい、ということはアンドゥ等で遡らない限り不可能です。また、遡って2番目の操作を修正した後で3番目の操作を繰り返すのはひどく徒労感を伴います。

 そうでなくとも、色合いを変えた後で光沢もつけたいし、色合いもベースカラーと調整用の色を分けたいし……という状況が考えられますし、それぞれの効き具合も独立に確かめたいところです。

 また、pngで上書き保存してしまったら、もう元のファイルには二度と戻せません。そもそも緑色にしたいよね、となっても、もう青色になってしまったファイルしかないのです。元データや作業履歴を残すためには、別にファイルを用意してバージョン管理……とやる必要がありますが、まあスマートではないですよね。

f:id:hibit_at:20190103163757p:plain

 図で表すとこんな感じ。

並列かつ非破壊的なワークフロー

 レイヤーを使うと複数の操作を並列的に処理することができます。

f:id:hibit_at:20181230023257p:plain

 レイヤーウィンドウで右クリックして「新しいレイヤーグループ」を作成。

f:id:hibit_at:20181230023843p:plain

 でてきたグループ(例では「ハートG」と名付けています)にハートレイヤーを格納させた後、その中で「新しいレイヤーの追加」を行う。

f:id:hibit_at:20181230024112p:plain

 この時にレイヤーの描画モードを「標準」ではなく「乗算」にします。とりあえずは色を足すなら「乗算」、明るくするなら「加算」と覚えておいて、他のモードの細かい違いは慣れてきたら気にしていく感じでいいと思います。

f:id:hibit_at:20181230024519p:plain

 影や光を足していくとこんな感じ。それぞれの操作がレイヤーで分かれているのがわかるかと思います。

 図で表すとこんな感じ。

f:id:hibit_at:20190103163817p:plain

 各操作はレイヤーとして独立しているので、その調整にあたって順番を気にする必要はありません。また、元データはオリジナルレイヤーとして残されているので、いくら改変をしても元データに戻るのは容易です。例えるなら、電卓だと途中で1つでも打ち間違えたら終わりですけど、関数電卓だと途中の式を変えて計算結果を変えることができますよね。あんな感じです。余談になりますが私は以上のような理由により(破壊的編集プロセスの塊である)電卓が大嫌いです。

 テクスチャのごく簡単な改変でも、作業の途中で絶対にあ……これ戻りたいとか前やったあそこのパラメータだけ変えたいなとか思ったりすることはあります。元のデータには手を加えず、レイヤー管理ですべて済ませるという考え方を持つと、選択範囲を絞る労力も必要もないし、ムダなく作業ができますよという話でした。