SpriteStudio / SS5PlayerForUnity

OPTPiX SpriteStudio 5 Player for Unity
http://www.webtech.co.jp/spritestudio/
MIT License
39 stars 15 forks source link

v1.2.17 非表示アトリビュートが反映されません #153

Open DKAlpha opened 8 years ago

DKAlpha commented 8 years ago

1.2.29でも非表示アトリビュートが反映されない現象を確認しました。 こちらは現在調査です。

MasamiYitsuse commented 8 years ago

更新いたしました。

GitHubのDevelopに上がっているVer.1.2.30で対応しました。 非表示・XY反転・テクスチャXY反転の際のアトリビュートのインポート処理を変更しました。

1.2.29以前の動作に戻すには、「LibraryEditor_SpriteStudio.cs」を検索して、 「until Ver.1.2.29」の注釈行の直上の「#if false」を「#if true」にする ことで可能です。

DKAlpha commented 8 years ago

こちらの件ですがSS本体の挙動の方も調査しております。進展がありましたらこちらに追記いたします。

DKAlpha commented 8 years ago

こちらの調査を行っておりまして原因が特定できました。

この現象はSpriteStudio本体の不具合によるものとなります。 パーツの非表示アトリビュートに本来設定できない線形補間が設定された場合に発生します。 これによって右の非表示状態が反映される現象が発生しており、プレイヤーでは再現されない状態となっておりました。

おそらく複数のキーを選択し右クリックのメニューから補間方法を線形に設定した事で、非表示アトリビュートにも補間が設定されてしまったのだと思われます。 来年予定されておりますSpriteStudioVer5.6で補間が出来ないアトリビュートには補間設定がされないように対応をいたします。

今回の現状について対処方法ですが、プレイヤーの修正を行い案内をいたしましたが プレイヤーへ行った変更が本来の仕様の動作ではないため今後予期しない不具合を起こす可能性あり修正前の状態に戻す予定でございます。

手数ではございますが、プレイヤーを1.2.29に戻していただきアニメーションの修正でご対応をお願いいたします。

非表示アトリビュートから補間方法をなしに変更するツールをご用意いたしました。 https://github.com/SpriteStudio/SsipTypeCorrectionTool/wiki こちらを使う事で非表示アトリビュートに設定された補間方法をなしに修正する事ができます。

個別に修正を行う方法はこちらとなります。 1.フレームコントロールのパーツ名左にある+ボタンを押して詳細アトリビュートを開く。 2.非表示の左キーフレームと右キーフレームをShiftを押しながら選択し右クリックメニューから補間なしに設定する。

非表示アトリビュートの補間方法をなしに修正した後、SS上でアニメーションの状態を確認していただき、正しい表示になるように編集をお願いいたします。

ご迷惑をおかけいたしますがよろしくお願いいたします。

sagat64 commented 8 years ago

非表示アトリビュートから補間方法をなしに変更するツールをご用意いたしました。 https://github.com/SpriteStudio/SsipTypeCorrectionTool/wiki こちらのSsipTypeCorrectionTool.exe (53,248 バイト)を実行しても、何も立ち上がりません。 当方の環境は windows8.1 pro 64bit版です。 お手数ですが、ご確認いただけないでしょうか。

DKAlpha commented 8 years ago

申し訳ございません。調査いたしますのでお待ちいただければと思います。

DKAlpha commented 8 years ago

開発環境がインストールされていないWindows8.1のPCでダウンロードしたツールを動作させて確認を行いましたが正常に起動したため現象が確認できずにおります。 何かエラーメッセージが表示される等、情報がありましたらお教えいただけると助かります。

sagat64 commented 8 years ago

エラーメッセージは何も表示されません。 起動待ちを示すスピン(丸い輪が回転するアイコン)がずっと表示されています。

DKAlpha commented 8 years ago

情報ありがとうございます。現象が再現できず原因がわかっておりませんので予想になってしまいますが、管理者権限で起動してみる、別に使えるWindowsPCがあればそちらで実行してみる等を試してみていただけますでしょうか。

sagat64 commented 8 years ago

別のWindowsPC でツールを動かすことができました。 "HIDE" の補完も消えているのを確認しました。

sagat64 commented 8 years ago

ですが、"HIDE" の補間指定を消しても同状態でした。

具体的には、 10/29 にこちらから送らせていただいた、再現できるミニマムなプロジェクト一式 ss5BlinkCheck.rar と sotai_001.rar を解凍して、 sotai_001.ssae をSS5 で開き、非表示のキーを「補間なし」にしてセーブし、 ss5BlinkCheck に再度インポートしても、全く挙動が変わりません。

そちらで、上記で解消されるか、ご確認いただけないでしょうか。

MasamiYitsuse commented 8 years ago

上記対応指針を受けて、SS5PUのGitHub内Developブランチを更新しました。 最新のSS5PUのバージョンは「1.2.29b (1.2.31)」となります。

SS5PUの動作自体は1.2.29と同様ですが、更新時期などの混乱を防ぐ意味と、1.2.30の挙動を念のため・当座残しておく必要性を考え、「1.2.29b」の付番になっております(2回目の1.2.29動作状態のリリース……の意味合いです)。 (LibraryEditor_SpriteStudio.csの中を「1.2.30」で検索していただき・「#if true」を「#if false」に変更することで、1.2.30の動作に戻すことが可能です)

MasamiYitsuse commented 8 years ago

念のための追加情報となりますが、 SS5PUの1.2.29と1.2.30の挙動の違いは、 インポート時の「非表示」「左右・上下反転」「テクスチャ左右・上下反転」のデータの変換方法が異なります。

(非表示を例にとりますと) ●...○..● : アニメーション終端 というデータがあった場合に、

1.2.29(含めてそれ以前) ●●●●○○○● : アニメーション終端

1.2.30(のみ) ●○○○○●●● : アニメーション終端

と展開します。

●...○... : アニメーション終端 であった場合、

1.2.29(含めてそれ以前) ●●●●○○○○ : アニメーション終端

1.2.30(のみ) ●○○○○○○○ : アニメーション終端

と展開します。 (つまり、非補間アトリビュートのキー区間内展開を前データ優先で扱うのが1.2.29まで・1.2.30は後データ優先です)

ただし、上記の案内の通り、1.2.29の動作が正しいものとなりますため、1.2.30の動作がどうしても必要な場合を除いては、1.2.30の動作状態で運用しないことを推奨いたします。

DKAlpha commented 8 years ago

sagat64様 ツールの方で補間を消した状態でSpriteStudio本体でアニメーションを開き確認していただきますと、問題となっている部分がプレイヤーと同じ動作(最後目のパーツが消えない)となっているかと思います。 この動作がSpriteStudioとして正しい動作となります。 今までは非表示アトリビュートに設定できないはずの線形補間が設定されていたため、非表示にしていないのに消えてしまっていました。(表示1から非表示0への補間の結果、次のフレームで0.9...となり少数が切り捨てられ0=非表示となってしまいパーツが表示されなくなります) SpriteStudioで本来パーツを消すタイミングで非表示アトリビュートを作成してパーツを消すようにアニメーションを修正して、プレイヤーに取り込んでみてください。 default お手数ではございますがSpriteStudio本体で改めてアニメーションをご確認ください。 よろしくお願いいたします。

sagat64 commented 8 years ago

SpriteStudioで現象を確認できました。ありがとうございます。

ですが、、大量にアニメデータがあるため、 すべてに修正をいれるのむずかしく、 こちらで、Unity 上で動くPlayer のコードのほうに修正を入れて、

>(表示1から非表示0への補間の結果、次のフレームで0.9...となり少数が切り捨てられ0=非表示となってし >まいパーツが表示されなくなります)

これと同じ挙動にしたいのですが、 該当の場所がどのあたりか、ヒントをいただくことは可能でしょうか?

MasamiYitsuse commented 8 years ago

sagat64様

お世話になっております

こちらで、Unity 上で動くPlayer のコードのほうに修正を入れて、

の件ですが、 上記の私のコメントにあります通り、最新版(1.2.29b)にて1.2.30の動作をさせるように「#if」を書き換えることで可能にはなります。

ただし、SS5PUは、非表示などのbool値のアトリビュートを補間計算できるようにはつくられていないため、厳密に同一な挙動は得られないかと思われます。

また、キーフレーム間のデータの展開や非表示などの一部アトリビュートはの継承などはインポート時に結果を計算しまう仕様になっています。

そのため、SS5PUの(インポート部ではなく)純粋にランタイムのプレーヤー部で解決するのは難しいかと思われます。

ランタイム側のみで解決処理をしようとする場合、Update~系の関数内でStatusのHIDEフラグをチェックしている箇所がありますので、そこを書き換えることになると思いますが……上記の通りインポート時に各種状態を決定する仕組みのため、色々と難しい点が少なくないと思います。

以上、ご参考になればと願っております。

DKAlpha commented 8 years ago

補間計算が非表示キーについて、プレイヤーで際限が可能か検討いたします。 数が多いという事で、問題のあるモーションのパーツだけ手で修正するという事も検討していただいた方がよいかもしれません。

アニメーションを拝見しまして、一点疑問がございましてSS5.5.1では通常パーツのをフレームコントロール上で複数選択して補間方法を変更しても、非表示キーには反映されない挙動でございました。

パーツのアトリビュートを開き、アトリビュートに対して補間方法の変更を行うと非表示に補間方法を設定できるのですが、アニメーションデータではすべてのパーツの非表示に補間方法が設定さておりました。

こちらはどのような操作ですべてのパーツの非表示アトリビュートに補間方法を設定したのでしょうか? 考えられる操作として、 ・1つの1つのパーツの非表示アトリビュートを選択し補間方法を設定していった。 ・非表示アトリビュートに補間方法を設定したパーツを作成しコピーしてパーツを増やしていった。 が思い当たりますが、どのような操作で非表示キーが設定されたのか、本体アップデートの参考にお教えいただけますと幸いです。

sagat64 commented 8 years ago

>補間計算が非表示キーについて、プレイヤーで際限が可能か検討いたします。 ありがとうございます。よろしくお願いします。

>どのような操作で非表示キーが設定されたのか データ作成者に問い合わせます。恐縮ですが、しばらくお時間をください。

sagat64 commented 8 years ago

作成者からの返答です。お役に立ちますでしょうか。。 >作成の際の手順としては、どちらの方法も取っている場合があります。 >ただ、目の補間に関しては後者で作成していることが多いかなという印象です。

DKAlpha commented 8 years ago

情報ありがとうございます。今後の開発の参考にいたします。

データのつくりから、もしかしたらSpriteStudioの旧バージョンを使われていたのかなという気もいたしますが、今回の「まばたき」のような絵が変わるアニメーションは、参照セルアトリビュートを使用しますと1つのパーツで非表示を使用せずに作成する事ができますので、作業をされている方にお伝えいただければと思います。

また非表示状態を左右に設定して囲むようにデータを作成されておりますが、これは補間方法が設定されていたために、そのように作成されたのではないかと思います。 補間方法がなしの場合は左側だけ(変更したいフレームだけ)キーを設定すればよくなり、こちらがSpriteStudioが意図している仕様である事をお伝えいただければと思います。

プレイヤーに関しては担当に再度検討をしていただきましたが、SpriteStudioの意図していない挙動であり、内部的に変数の型を変える所からコンバートの根幹の修正が必要がるという事で、今後意図しない不具合が発生する可能性が高く対応が難しい状態でございます。

もうしわけございませんが、数が多いという事ですのでツールを使わずに今回問題のあったモーションのパーツのみ手で非表示アトリビュートの補間方法をなしに設定していただきアニメーションの修正で対応いただけないかをご検討ください。 以降アニメーションを新規に作成する場合、非表示フラグに補間方法を設定せずに作成していただければ問題は回避できるかと思います。

SpriteStudio5.6ではアニメーションを作成している上でこちらの現象が発生しないように対応いたします。 よろしくお願いいたします。