0 支持
423 閲覧
(120 ポイント) 不具合報告
編集
  • 発生バージョン: 7.1.1.6031
  • 動作環境:  Windows11、UnrealEngine 5.1.1、Pluguin1.6.9
  • 症状: アトリビュートのZ座標が、親の相対位置ではなくルートに対する相対位置になっている
  • 再現手順
  1. パーツの親子関係を組みます
  2. 任意のフレームに親のアトリビュートXYZ座標を変更したキーを打ちます
  3. 続いて同様に子のアトリビュートXYZ座標を変更します
  4. UE5にインポートして表示します
  5. 子のXY座標が親の相対位置になっているのに対し、Zがルートに対する相対位置になっているのを確認します

お世話になっております。

親子関係が組まれた子パーツのアトリビュート上のXY座標は、基本的に親のXYを基準とした相対位置として扱われますが、Z座標だけルートに対する相対位置で表示されております。

ルートの位置が原点として、親が「X+10、Y-10、Z-20」だった場合、「X+5、Y+5、Z+5」の子が表示される見た目上の座標は「X+15、Y-5、Z+5」です。
SpriteStudio上ではすべて相対座標での表示状態ですから、こちら不具合かと思いましてご連絡差し上げました。
ご確認よろしくお願いいたします。

先ほど状況を再現した画像をメールにてお送りいたしました。
「1」「2」「3」「4」と表示されているパーツはすべてX+20ずつオフセットし、Zは「1」を-20、「2」を-15、「3」を-10、「4」を-5としました。
Xは親に対し相対位置で表示されていますが、Zはルートに対する相対位置になってしまい、絶対座標のような振る舞いになっています。
このため、Spritestudio上の見た目とUE5上での見た目では前後関係が逆転します。
(親との相対位置であれば「4」は本来Z-50で最前になるはずですが、実際のUE5上の位置はアトリビュートで設定した-5です。)

このページをシェアする

回答 1

0 支持
(4.2k ポイント)
お問い合わせありがとうございます。

只今私事で立て込んでしまっており、返信が遅れてしまい申し訳御座いません。

お問い合わせ頂いた内容について確認したところ、現在のUEプラグインでは「パーツソート基準=「Z座標」」のサポート自体がそもそも漏れてしまっており、常に「優先度」によってソートされている状態になっていたことが分かりました。

そのため、Z座標値に関わらず全てのパーツが同一平面上に描画されている想定となります。(RenderMode=Maked ではZ-Fight回避のためPixelDepthOffsetPerPartプロパティに基づいたPixelDepthOffsetはかかっています)

そのため、ご提供頂いた画像のように、パーツ毎に奥行方向座標に差が出ているのが不可解な状態となります。

こちらの状況について確認したいので、もしよろしければテストデータのsspj以下一式のご提供をお願い出来ないでしょうか?

「パーツソート基準=「Z座標」」については、近日中に対応させて頂きたいと思います。

おおよそいつ頃までにご提供出来ればよろしいでしょうか?

また、これはアンケートになるのですが、Z座標値を単にソート基準でなく3Dシーン上の座標に反映する場合、どのような目的でZ座標値を使用される想定でしょうか?

(Z座標値の差を利用してカメラ方向によって見え方が変わるような形,他Componentのアタッチ用,など)

もしくは、Z座標値をポリゴンの座標には反映せずにソート基準のみに使用するようなオプションがあれば有用でしょうか?

可能な範囲でご返答頂ければ、組み込み時の参考にさせて頂きたいと思います。

よろしくお願い致します。
(120 ポイント)

お世話になっております。
ご返信いただきありがとうございます。

>そのため、ご提供頂いた画像のように、パーツ毎に奥行方向座標に差が出ているのが不可解な状態となります。

こちらなのですが、確認したところ開発内で改造をしていたことがわかりまして、Z座標が(位置だけ)機能するようになっていたようです。
それとは知らずプラグインの不具合だと思っておりましたので、こちらの確認不足につき大変申し訳ありませんでした。
ただ「対応漏れ」とのことですので、そちらについてはお手数ですがよろしくお願いいたします。

テスト作成したSSプロジェクトは、後ほどメールにてお送りいたします。

>おおよそいつ頃までにご提供出来ればよろしいでしょうか?

12月中旬にUE5のバージョンアップを行いますので、それに合わせて対応をしたいと考えています。
~12/15までに更新されるととてもありがたいのですが、あと3週間もありませんから、あくまで希望とさせていただきます。

 

>Z座標値を単にソート基準でなく3Dシーン上の座標に反映する場合、どのような目的でZ座標値を使用される想定でしょうか?
>
もしくは、Z座標値をポリゴンの座標には反映せずにソート基準のみに使用するようなオプションがあれば有用でしょうか?

Z座標ですが、単純なソート機能として今は使用しています。
こちらは経緯も併せて説明をする必要があり、少々長くなりまして恐縮ですが…。
元々Unityで実装していたのですが、独自のPBR用マテリアルに差し替えるにあたって優先度が機能しなかったため、Z座標でソートを行う対応をしました。

奥行きがつくとかえって邪魔になるのですが、小数が入力できたので0.001のような値を入力し、それがうまくいきました。
そのプロジェクトをUE5に移植したので、現在もそのままZ座標で作業をしております。(移植タイミングでZオフセットが機能するよう改造されまして、それとは知らず作業をしておりました…)

今回は単なるソート方法として使っているだけですが、一つのアニメーションの中で奥行空間を保持できるので、別のオブジェクトを間に入れたり出したり、視差による前後感をつけたりなど、さまざまな表現に使えそうだなと、いま改めて感じております。
単なるソート機能として使うようにするのはちょっともったいないので、少なくともMaskedでは正しく空間座標に相対オフセットする仕組みにしていただけると、おそらく他の利用者にも喜ばれるのではないかと思います。

よろしくお願いいたします。

(4.2k ポイント)
諸々情報ありがとうございます。

パーツの奥行方向の座標につきまして、御社内でカスタムされていたとのことで、合点がいきました。

「Z座標」の使用方法についてもご教示ありがとうございます。

ひとまず現状では単にソート基準としての使用ということで、デフォルトではソート基準としてのみ使用してポリゴンは「優先度」ソート時と同様に同一平面上に配置,SsPlayerComponentのプロパティからZ座標の3D反映も可能、という形で実装を進めたいと思います。

12/15までであれば、おそらくお渡し可能だと思います。この際のUEバージョンアップは、UE5.3の想定でよろしいでしょうか?

もしUE5.2 で使用されるようであれば、お知らせ頂ければ「Z座標」対応を組み込み後の最新版を5.2に対応したものをご用意致します。

また、余談にはなりますが、前述のようにUEプラグインではMaskedマテリアルでもPixelDepthOffsetを利用してZ-Fightを回避しています。

そのため、今後新規にUEプロジェクト向けに制作されるアニメーションでは「優先度」ソートでも正常に動作出来ると思いますので、使いやすい方をご利用頂ければと思います。

※1.もしカメラ距離によってZ-Fightが発生してしまう場合は、SsPlayerComponentの「PixelDepthOffsetPerPart」プロパティでオフセット値を調整可能です。

※2.カスタムマテリアルを使用される場合は、デフォルトマテリアルと同様のMaterialFunctionをPixelDepthOffsetに接続して頂ければ、同様の結果を得られるはずです。

それでは、実装が完了しましたら再度ここで連絡させて頂きますので、しばらくお待ち下さい。

よろしくお願い致します。
(120 ポイント)

ご返答ありがとうございます。

>ひとまず現状では単にソート基準としての使用ということで、デフォルトではソート基準としてのみ使用してポリゴンは「優先度」ソート時と同様に同一平面上に配置,SsPlayerComponentのプロパティからZ座標の3D反映も可能、という形で実装を進めたいと思います。
承知いたしました。
お手数をおかけしますが、ご対応よろしくお願いいたします。


>UE5.3の想定でよろしいでしょうか?
はい、次回のバージョンは5.3.2を想定しております。

>※1.もしカメラ距離によってZ-Fightが発生してしまう場合は、SsPlayerComponentの「PixelDepthOffsetPerPart」プロパティでオフセット値を調整可能です。

Zファイティングについては、未改造のもので正常動作確認できました。
どうもUnityからの移植改造の影響でソート系が不具合を起こしていたようですので、こちらも次回更新時の見直しで一通り解決しそうです。
こちらの不手際にて大変ご迷惑をおかけしました。

(4.2k ポイント)
お待たせ致しました。

プラグインバージョン1.6.16 にて「パーツソート基準=Z座標」に対応致しました。GitHubより最新版を取得して下さい。

既存アセットの場合、プラグイン更新後にsspjを再インポートして頂くことで反映されます。

デフォルトの状態では、Z座標は単にソート基準のみとして使用され、3D座標には反映されません。

SsPlayerComponentの「Reflect Ss ZCoord」プロパティをONにして頂くことで、3D座標に反映されるようになります。また、「Ss Z Scale」プロパティからZ値の適用スケールを指定出来ます。(「Sprite Studio Render Settings」カテゴリ「Advanced」内)

これは、子Componentをアタッチする際などのソケット座標にも反映されます。

何かお気づきの点が御座いましたら、こちらへご返信頂ければ幸いです。

よろしくお願い致します。
(120 ポイント)
ご対応いただきありがとうございます!
もうすぐチームのエンジニアがエンジンの更新作業に入りますので、ご対応いただいたプラグインについても併せて更新をしてもらいます。
動作確認後また改めてご連絡差し上げます。

よろしくお願いいたします。
(120 ポイント)
お世話になっております。

概ね動作確認ができまして、少なくとも新規作成されたプロジェクトにおいては想定通りの挙動になっておりました。
ありがとうございました。
開発環境での動作不良がありましたが、おそらく実装側の問題ですのでそちらは調査中です。

プラグインを更新して気付いた点が2つほどございまして、お伺いさせてください。

1.
インポートされたSSプロジェクトのアニメについて、描画優先度がZ座標になっているアニメでも、プロパティ上の表示が「見た目上」Priorityになっています。
Refrect Ss ZcoordをOnにすると奥行がつくことから内部的にはZ座標にはなっていると思われるのですが、こちらは不具合、もしくは実装漏れと考えて良いでしょうか?

2.
プラグインに含まれるBP関数でパーツのマテリアル入れ替えを行った際、1つのアニメ内で不透明と半透明が混在すると、優先度にかかわらず半透明の描画順が優位になります。
Refrect Ss ZcoordをOnにして座標をずらして同一平面でなくすると問題ありませんでした。
この同一平面で半透明優先になる事象ですが、こちらはプラグインというよりUE5の都合で合っていますでしょうか?

以上です、よろしくお願いいたします。
(4.2k ポイント)
ご確認、ご返信ありがとうございます。

>1.

おそらく、「Anime List」->「Index[*]」->「Settings」->「Sort Mode」のプロパティのことかと思います。

こちら確認したところ、SSエディタのみで使用されるデフォルト設定の情報で、ランタイムでは参照されていないものでした。次バージョンにてこの「Settings」プロパティ自体を削除してしまいたいと思います。

実際に参照されているアニメーション毎のSortModeは、「Anime List」->「Index[*]」->「Anime List」->「Index[*]」->「Settings」->「Sort Mode」の方になります。

>2.

申し訳ありませんが、マテリアルのBlendModeが元と違うものへのマテリアル変更はサポートが難しく、対応外となっております。

混在してしまう場合は、既にお試し頂いたようにZ座標をずらして頂くか、RenderMode=MaskedとしたうえでPixelDepthOffsetperPartにて調整して頂く形になってしまいます。

以上、よろしくお願い致します。
(120 ポイント)

ご返信いただきありがとうございます。

>実際に参照されているアニメーション毎のSortModeは、「Anime List」->「Index[*]」->「Anime List」->「Index[*]」->「Settings」->「Sort Mode」の方になります。

表示されているところが、二か所あったのですね。
私の確認不足でした、大変失礼しました。

混在してしまう場合は、既にお試し頂いたようにZ座標をずらして頂くか、RenderMode=MaskedとしたうえでPixelDepthOffsetperPartにて調整して頂く形になってしまいます。

こちらも承知いたしました。
チームにも伝えさせていただきます。
ありがとうございました。

...