aviutl_psdtoolkit icon indicating copy to clipboard operation
aviutl_psdtoolkit copied to clipboard

多目的スライダーがシーンチェンジと相性が悪い

Open oov opened this issue 3 years ago • 3 comments

image

通常、スクリーンショットのように 多目的スライダー のアニメーション効果またはカスタムオブジェクトとして2回現れた場合、これらは内部的にはスライダーが8個ある、ひとつのオブジェクトとして保持される。

シーンチェンジの使用中は現在の画面を描画したのち、前の画面を作るために前の画面にあったオブジェクトを仮想的に現在時刻にまで延長した上でスクリプトが実行される。 この動作によって、同じレイヤー上に多目的スライダーが4個あるものとして誤作動してしまい、内部的におそらくスライダーが16個ある、ひとつのオブジェクトが形成されてしまい、表情が正しく適用されなくなってしまうと思われる。

oov avatar Jun 08 '21 15:06 oov

レイヤー上に配置する都合上、最初に現れるのは必ずカスタムオブジェクト版の多目的スライダー、あるいは統合準備オブジェクトのテキストオブジェクトであることを前提とすれば、それらの登場タイミングでは必ずリセットするようにすることで問題を回避できるかもしれない。

oov avatar Jun 08 '21 15:06 oov

↑ この案はシーンチェンジの前後どちらにも多目的スライダーが存在するときは正常に動作するが、シーンチェンジ後にだけ多目的スライダーがある状況下では正しくリセットが実行されないので上手く行かない。

oov avatar Jun 08 '21 16:06 oov

この問題がシーンチェンジだけに限られるのであれば、シーンチェンジと <? require("PSDToolKit").valueholder.states = {} ?> のスクリプトを含むテキストオブジェクトを「専用のシーンチェンジオブジェクト」としてエイリアスなどを用意することでお茶を濁せる。

ただ今までの経験上、レイヤーの上から順に描画されるというルールはスクリプトによる呼び出しなどによって何度も破壊されているので、今までずっと避けていた「リセット用にレイヤー1を専有する」という処理をする時期がきているかもしれない。 結局これらの問題の元を正せば、現在フレームが変わった瞬間に初期化処理が行えない内部構造に原因がある。

oov avatar Jun 08 '21 16:06 oov