お世話になっております。
弊チームでは、Runtimeとシーケンサーエディタで同様の再生を実現させる為に、シーケンサーの再生制御をPlay In Editor(PIE)を実行せずに拡張する方法を模索しております。
一例として、シーケンサーエディタ上で再生ボタンを押した際にマーカーAのフレームに到達した際に、マーカーBに再生フレームを飛ばすといった挙動などを考えております。
方法を模索している中で、ClockSourceをカスタムにすることでTimeControllerを差し替えるという方法を見つけました。
ここで、シーケンサーエディタからクロックソース>Customを選択すると、「アクタ」と「アセット」の2種類の選択肢が出てきます。
弊チームの場合、「アクタ」とするとシーケンサーに都度「アクタ」を配置するか、レベルに配置する必要が出てくると考え、一先ず見送りました。
そこで「アセット」を設定しようと考えたのですが、ここで設定可能な「アセット」、
具体的にはIMovieSceneCustomClockSourceを実装したオブジェクトをアセットとして作成する方法は、デフォルトで用意されていないことに気づきました。
Editor ModuleでFactoryを実装することでアセットの作成自体は可能でしたが、標準では作成手段が公開されていないことから、この用途での利用が正式に想定されたワークフローではないのではないかと懸念しております。
下記スレッドでは、当該機能が主にFortnite向けに提供されているもので、現時点では一般向けにはサポート対象外である旨の記載を確認いたしました。
ここで、今回の主題である「シーケンサーのCustom Clock Sourceにおけるアセット利用のサポート状況について」下記2点伺わせてください。
- UE5.6.1環境において、Custom Clock Sourceの「アセット」設定を利用することは、正式にサポートされた利用方法と考えて問題ないでしょうか。
- もし現時点でサポート対象外である場合、将来的に正式サポートされる予定はありますでしょうか。また、公開可能な範囲で対象バージョンがございましたらご教示いただけますと幸いです。
お忙しいところ恐縮ですが、何卒よろしくお願いします。
[Attachment Removed]
お世話になっております。
本件、お返事に時間を要してしまい、申し訳ございません。
> UE5.6.1環境において、Custom Clock Sourceの「アセット」設定を利用することは、正式にサポートされた利用方法と考えて問題ないでしょうか。
Custom Clock Source 「アセット」は引用いただいたスレッドでのEpic側からの返信にありますように、限定的な実装に留まっており、そのままご利用いただける機能とはなっておりません。また、実はほかにも懸念があり、仮にFactoryを自作してアセットを設定したとしても、Custom Clock Sourceのアセット参照はソフトオブジェクト参照で保持される一方、アセットをロードするコードがないため、エディタ起動直後など当該のアセットが未ロードの状況ではCustom Clock Sourceが機能しないと思われます。
> もし現時点でサポート対象外である場合、将来的に正式サポートされる予定はありますでしょうか。また、公開可能な範囲で対象バージョンがございましたらご教示いただけますと幸いです。
こちらにつきましては、UE5.8最新版でも変更がなく、また社内のチケットなどで実装計画も確認できなかったため、UE5.6.1に限らず、サポートがないという状況です。
もう少し情報を収集して追加の回答を行いたいと考えておりますが、お返事をお待たせしてしまっていることもあり(申し訳ございません!)、一旦ご返信申し上げます。
以上、よろしくお願いいたします。
[Attachment Removed]
お返事ありがとうございます。
今後のサポートを受けられない可能性が高い旨、また懸念点についても承知いたしました。
いただいた情報を踏まえてプロジェクト内で相談したところ、開発面・運用面の双方においてコストが高くなる可能性があると認識しております。
しかし、レベルへのActor配置は全レベルへのアプローチが必要なため、できれば避けたいと考えています。
そこで、当初の質問とは異なってしまうのですが、追加で質問させてください。
- レベルへのActor配置以外でCustomClockSourceを運用する方法はありますでしょうか。
- 現時点で思いついている案としては、以下の2つを考えています。
- SpawnableとしてClockSourceを変更するActorをシーケンサー上に配置する
- EditorSubsystemでClockSourceActorの生成を制御する
- もしClockSourceを変更するActorを設定する方式を採用した場合、「アセットをロードするコードがない」という課題は解消できる認識でよろしいでしょうか。
[Attachment Removed]
お世話になっております。長らく返答が無いままにしてしまい申し訳ございません。
ご提案頂いたPluginでの実装を検討させていただきます。
ありがとうございました。
[Attachment Removed]
お世話になっております。
いろいろ調査したところ、UMovieSceneClockを継承したカスタムクロッククラスを作成していただき、これをシーケンス(UMovieScene)のSetCustomClock()でセットしていただくアプローチがもっともご要件を満たせそうでした。SetCustomClock()でセットしたインスタンスはシーケンスデータにシリアライズされ、PIEかエディタにかかわらずUMovieSceneに対して永続し、ロードを心配する必要がないという利点があります。
欠点としては、Unreal Editor 上で自前で用意したカスタムクロックをシーケンスデータに対してセットするUIが存在しないことが挙げられます。これについては、独自にツールを作っていただくか、クロックソースを構築するUIをフックして自前クラスを選択しとして押し込むのが解決策になりそうでした。
ご参考までに、プロジェクトの「Plugins」フォルダに展開していただくことで、上述のアプローチをテストできるサンプルを用意しましたので、本返信に添付します。このサンプルのカスタムクロックは、再生範囲を0-15フレームに決め打ちで絞る、ほぼ無意味なものですが、メニューへの登録部分などが参考になれば幸いです。
以上、よろしくお願いいたします。
[Attachment Removed]
お世話になっております。
ご確認ありがとうございます。
それでは本件は対応済みとしてCloseさせていただきます。
また何かご質問などありましたら、お気軽にEPSをご利用ください。
以上、よろしくお願いいたします。
[Attachment Removed]