いつもお世話になっております。
LevelSequenceをムービー出力するときのみ、配置してあるモデルの(マテリアルの)参照するテクスチャを差し替えることが可能かをご相談させて下さい。
弊社プロジェクトでは、ゲームプレイ中、シーケンサーのアニメーション(デモシーン)中のいずれも、同じモデル、マテリアルを使用する想定でワークフローをしいていたのですが、
ムービーとして出力する場合のみ、テクスチャの見栄えを良くしたいという要望があがりました。
デモシーン専用のモデル・マテリアルを用意することなく、レンダリング時のみレベル中のメッシュが参照するテクスチャのアセットの差し替えを行うことをサポートする機能は、UE4の既存機能にありますか?
別アセットへの置き換えが難しければ、例えば、インポート元のテクスチャは高解像度で作成しておき、ゲーム中は現実的な圧縮(LOD Bias, Maximum Texture Sizeなど)をほどこしておいて、レンダリング時のみ、その制限を外して(テクスチャを再インポートして)レンダリングを開始するようなことはできますか?
いずれも現状サポートされていない場合は、改造箇所や規模がどうなりそうかについて、ご意見を頂けますと幸いです。
お世話になっております。
デモシーン専用のモデル・マテリアルを用意することなく、レンダリング時のみレベル中のメッシュが参照するテクスチャのアセットの差し替えを行うことをサポートする機能は、UE4の既存機能にありますか?
現状のUE4ですと、Dynamic Material Instanceを使ってテクスチャパラメータに指定しているアセットを変更する手法が一般的です。ただし、BP又はC++による制御を追加する作業コストが発生します。
もう一つ思いついたのが、アセットローカライゼーションの仕組みを利用する方法です。ローカライズ対象外の言語をムービー出力用とし、高解像度版のアセットをその言語用アセットとして割り当てるという手です。これであれば、追加実装コストはほぼないかと思います。
別アセットへの置き換えが難しければ、例えば、インポート元のテクスチャは高解像度で作成しておき、ゲーム中は現実的な圧縮(LOD
Bias, Maximum Texture
Sizeなど)をほどこしておいて、レンダリング時のみ、その制限を外して(テクスチャを再インポートして)レンダリングを開始するようなことはできますか?
"r.MipMapLODBias"を使えばMipレベルを制御することができます。ですので、普段はゲーム中は"r.MipMapLODBias -1"を指定してMipレベル1以降を使用するようにし、ムービー作成時は "r.MipMapLODBias 0"にすることでご質問頂いた内容を実現可能です。ただ対応・調整コストの観点から難があるかと思います。
まずはこれらの手法をご検討いただけますと幸いです。
よろしくお願いいたします。
ローカライズの機能を利用するプランはトリッキーではあるものの、現状のアセットへの影響を最小化できるかもしれませんね
弊社の事情にあいそうなものから試していきたいと思います。
ご返答ありがとうございます!