AnyPortrait > マニュアル > PSDファイルと既存のオブジェクト
PSDファイルの再インポート機能を使用すると、修正されたPSDファイルを既存の作業物に適用することができます。
しかし、この機能はPSDファイルがどのように修正されたかによって、多くの問題を引き起こす可能性があります。
以前のマニュアル(リンク)では、PSDとメッシュグループ間のマッピング方法や、レイヤーに変更があった場合の対処法について解説しました。
PSDファイルを再インポートすると、既存のメッシュグループ内のオブジェクトは、PSDファイルの画像と最も一致するように位置やサイズなどが再調整されます。
しかし、この場合、意図しない結果が生じることがあります。
オブジェクトが意図しない位置に移動してしまったり、位置の補正を行わずにアトラス(Atlas)のみを更新したい場合もあるでしょう。
「AnyPortrait v1.7.0」では、既存のオブジェクトをどのように処理するかを選択できるオプションが追加されました。
このページでは、それらのオプションについて説明します。
PSDを再インポートすると、基本的に、マッピングされたオブジェクトの位置、サイズ、回転値がPSDファイルに合わせて調整されます。
そのため、PSDの再インポートを実行すると、PSDファイルとほぼ同じ状態になります。
この際、既存のオブジェクトの位置を調整する方法によって、内部的な処理方式が若干異なります。
PSDファイルから生成されたロボットのキャラクターです。
(1) このロボットの腕の画像を修正した後、オプションによる位置調整の違いを確認してみましょう。
(2) 「Edit Default Transform」モードを有効にし、このロボットの腕のメッシュの位置が約「(-253, -147)」であることを覚えておきましょう。
右の画像のように、ロボットの腕を「ハサミ」から「錐(きり)」の形状になるようPSDファイルを修正しました。
それでは、修正したPSDファイルを再度インポートしてみましょう。
(1) 変更されたPSDファイルを再インポートすると、ロボットアーム部分の形状が以前とは変わっていることが確認できます。
(2) 左側のUIには、「Adjusting Transforms of Existing Objects」という項目と2つのオプションが追加されていることが確認できます。
このオプションは、PSDファイルに合わせて既存のオブジェクトをどのように処理するかを決定します。
- Connected Objects : マッピングが完了し、PSDのレイヤーと接続された既存オブジェクトの位置を調整する方法を決定します。
- Unconnected Meshes : マッピングされていないメッシュオブジェクトをそのままにするか、あるいは少なくともサイズだけでも調整するかを決定します。
(1) 「Connected Objects」オプションには、次のような値があります。
- Adjust to PSD (Legacy) : PSDに合わせて既存のオブジェクトの位置などを調整する、旧バージョンの処理方式です。
- Adjust to PSD (Pivot Moved) : PSDに合わせて既存のオブジェクトの位置を調整しますが、メッシュの「Pivot」を優先的に調整します。
- Keep Current : アトラスのみを更新し、既存のオブジェクトの位置などは調整しません。
ここでは、「Adjust to PSD (Legacy)」と「Adjust to PSD (Pivot Moved)」のオプションをそれぞれ選択し、その違いを確認してみましょう。
これら2つのオプションの違いは、修正されたPSDファイルの画像形状が変化したことで、既存のオブジェクトと位置が合わなくなり、補正が必要になる場合に生じます。
(1) 位置補正ツールを使用して、PSDの画像と既存のオブジェクトの位置を合わせます。
(2) 位置が合ったら、「Next」ボタンを押して、その後のインポート作業を完了します。
それでは、PSDを再インポートした結果を、2つのオプションそれぞれについて確認してみましょう。
見た目上、両方のオプションによる結果は同じように見えます。
しかし、ロボットアームのメッシュオブジェクトを選択して位置を確認すると、その違いがわかります。
「Adjust to PSD (Legacy)」オプションの結果では、元の位置である「(-253, -147)」とは異なる「(-256, -205)」という値になります。
一方、「Adjust to PSD (Pivot Moved)」オプションを使用した結果では、元の位置とほぼ同様の値になります。
「Adjust to PSD (Pivot Moved)」オプションで、画像の形状が変化してもオブジェクトの位置情報を維持できたのは、メッシュの「Pivot」を移動させたためです。
「Adjust to PSD (Legacy)」オプションの場合、単に新しくインポートしたPSDレイヤー画像の中心にメッシュの「Pivot」を配置します。
「Adjust to PSD (Pivot Moved)」オプションの場合、Pivotが中心から少し移動していることが確認できます。
AnyPortrait v1.7.0では、「Adjust to PSD (Pivot Moved)」オプションがデフォルト設定になりました。
オプションごとの処理の違いを理解しておけば、PSDを再インポートする際に生じる問題に対処しやすくなるでしょう。
PSDファイルからキャラクターを生成した後、AnyPortrait上でオブジェクトの基本トランスフォーム(Default Transform)を直接修正することもあるでしょう。
しかし、その状態で修正済みのPSDファイルを再度インポートすると、せっかく変更したオブジェクトの位置やサイズなどがリセットされてしまいます。
AnyPortrait v1.7.0で追加されたオプションを使用して、この問題を解決してみましょう。
PSDファイルから生成したロボットです。
(1) メッシュグループ編集画面で「Edit Default Transform」ボタンを押します。
(2) ロボットの腕のオブジェクトを、上記のように移動および回転させます。
PSDファイルを再インポートしてみましょう。
今回は、ロボットを作成した際のPSDファイルをそのまま再インポートします。
PSDファイルの再インポートウィンドウで、メッシュグループ内のロボットの腕が変形していることが確認できます。
もしこの状態でPSDファイルの再インポート作業を完了すると、上記のようにロボットアームのトランスフォームが元に戻ってしまいます。
修正した基本トランスフォームを維持するには、オプションを変更する必要があります。
(1) PSDファイルの再インポートにおける「Basic Setting」の段階で、「Connected Objects」オプションの値を (2) 「Keep Current」に変更します。
PSDファイルの再インポート作業を完了すると、既存のトランスフォームが維持されていることが確認できます。
PSDファイルの画像レイヤーから生成されたメッシュオブジェクトを複製する場合を想定してみましょう。
PSDファイルの再インポート作業における鍵となるのは、PSDレイヤーとメッシュグループ内のオブジェクトを関連付ける「マッピング」です。
しかし、PSDファイル内の1つの画像レイヤーを、メッシュグループ内に存在する複数の複製メッシュオブジェクトにマッピングすることはできません。
そのため、一般的に、複製されたメッシュは、マッピングされたメッシュと共有しているアトラスの更新を除き、個別の処理対象とはなりません。
この方法には、一般的に大きな問題はありません。
しかし、PSD画像やメッシュグループのサイズが合わず、全体的なサイズ調整が必要となるような特殊な場合には問題が生じます。
PSD画像ファイルのサイズを半分に縮小し、そのPSDファイルを再度インポートしてキャラクターに適用してみましょう。
(1) 画像サイズが変更されたPSDファイルを再インポートすると、メッシュグループとサイズが一致していないことがわかります。
(2) 「Bake Scale」オプションの値を調整して、PSD画像とメッシュグループのサイズを一致させる必要があります。
(1) 「Unconnected Meshes」オプションには、以下の設定があります。
- Ignore : PSDと接続されていない既存のメッシュオブジェクトに対して、特別な処理は行いません。
- Resize by Scale Factor : 全体的なサイズ調整が必要な場合、PSDの影響を受ける複製されたメッシュに対しても同様のサイズ調整を適用します。
2つのオプションについて、それぞれPSDファイルの再インポート作業を完了させ、結果を比較してみましょう。
サイズ調整が必要なPSDファイルを再インポートする際、「Adjust」の段階で、上記のようなサイズ調整作業を行う必要があります。
2つのオプションについて、それぞれPSDファイルを再インポートした結果です。
「Ignore」オプションでは、複製されたメッシュオブジェクトの腕が小さくなってしまいました。
PSDファイルの画像サイズが小さくなったにもかかわらず、サイズ調整が行われなかったために、このような問題が発生したのです。
一方、「Resize by Scale Factor」オプションの場合は、正常な結果が得られています。
PSDファイルの画像サイズが小さくなった分、メッシュオブジェクトのサイズを拡大する必要がありますが、その処理を複製されたメッシュにも適用することで問題を解決しています。
メモ
この処理は、同一のメッシュを共有するメッシュオブジェクトにのみ適用されます。
PSDファイルをインポートする機能では、PSDのレイヤー位置や領域サイズをAnyPortraitのシステムに適した形式へ変換する処理が行われます。
AnyPortraitはPSDファイル上の値を最大限に活用しますが、ここで一つの問題が生じます。
PSDファイルの「フォルダレイヤー」は、画像レイヤーとは異なり、「位置情報」を持っていません。
一方、PSDファイルのフォルダレイヤーに対応するAnyPortraitの「サブメッシュグループ」は、位置を含むトランスフォーム値を持っています。
この差異を解消するため、AnyPortraitは「フォルダレイヤー」に含まれる各画像レイヤーの位置を利用し、その平均値を「サブメッシュグループ」の位置として適用します。
概ね、この方式は大きな問題なく動作します。
しかし、PSDファイルのレイヤー構造がメッシュグループの構造と異なる場合、位置調整が正しく行われないという問題が発生します。
画像レイヤーの平均位置を算出する過程で生じた誤った値が、サブメッシュグループやその配下のオブジェクトに影響を及ぼすためです。
ここでは、この問題がどのように発生するのか、そしてその解決方法について見ていきましょう。
問題を再現するために、PSDファイルのレイヤー構造とメッシュグループの構造を異なるものにしてみましょう。
まず、PSDファイル上のレイヤー構造です。
ここではフォルダレイヤーを作成していないため、すべての画像レイヤーが同じ階層に配置されています。
一方、AnyPortraitにおけるロボットメッシュグループは、サブメッシュグループを持っています。
サブメッシュグループには、「Arm」という名前のメッシュが属していることが確認できます。
この状態で、PSDファイルの再インポートを試してみましょう。
(1) 「Mapping」の段階で、PSDのレイヤー構造とメッシュグループ内の構造が一致していないことが確認できます。
この状態で「Next」ボタンを押して進めようとすると、上記のような警告メッセージが表示されます。
このメッセージは、マッピングの過程で構造の不一致が検出されたため、PSDファイルとメッセージグループの階層構造を一致させる必要があることを伝えています。
この警告を無視して「Ignore and Proceed」ボタンを押し、その後の作業を強制的に完了させてみましょう。
メモ
この警告メッセージは、マッピングされた対象の「レベル」が一致しているかどうかのみをチェックします。
互いにマッピングされていないフォルダレイヤーやメッシュグループに属している状態でレベルが同じ場合、それは検知されません。
そのため、警告メッセージに頼るのではなく、PSDファイルとメッシュグループの状態を事前に確認しておくことを推奨します。
(1) PSDとの構造的な差異が生じていた「Arm」メッシュを確認してみましょう。
(2) 位置調整の処理が誤って行われた結果、上記のように間違った位置へ移動してしまっていることがわかります。
この場合、最も確実な解決策は、PSDファイルまたはメッシュグループの構造を変更して、互いに一致させることです。
特に、PSDファイル内でフォルダレイヤーを追加する作業の方が容易でしょう。
その後、フォルダレイヤーとサブメッシュグループをマッピングすれば、正常に再インポートが行われるはずです。
しかし、先ほどご紹介した「Keep Current」オプションを利用することでも、この問題を解決できます。
「Keep Current」オプションは位置調整を行わないという特性があるため、この問題を回避できるのです。
先ほど説明した「Connected Objects」オプションの値を「Keep Current」に設定した状態で、PSDファイルを再度インポートしてみましょう。
「Keep Current」オプションが適用されている状態では、「Mapping」の段階でPSDファイルとの構造上の違いがあっても、警告メッセージは表示されません。
位置調整を行うことなく、PSDファイルを正常に再インポートする作業が完了することを確認できます。