再現手順の通り、GPU Lightmass プラグインを有効化した状態で iOS の Cook を実行すると、One File Per Actor を設定したレベルでエラーが発生します。
気になる点として、Mac PC 上でエディタを確認すると、コンテンツブラウザ上で GPU Lightmass プラグインのアセットが非表示になっておりました。
Mac PC 上でファイル自体が存在することは確認しておりまして、エディタのコンテンツブラウザ上では GPU Lightmass のフォルダは見えるものの、中身が空の状態になっておりました。
本件は複数の Mac PC にて発生しております。
なお、One File Per Actor を設定していないレベルに関しては、同様の内容で警告が出力されるものの、エラーとはなりませんでした。
つきまして、以下の点をご確認頂きたく存じます。
1. Mac PC 上で GPU Lightmass プラグインのアセットが非表示になる理由をご教授頂けますと幸いです ( Mac PC において GPU Lightmass は未対応でしょうか ) 。
2. One File Per Actor の設定に関係なく、本警告はパッケージの動作に影響を及ぼしますでしょうか。
3. One File Per Actor を設定したレベルにおいてもエラーを発生させないようにすることは可能でしょうか。
[Attachment Removed]
再現手順
1. Windows PC にて新規プロジェクトをターゲットプラットフォーム: Mobile で作成
2. エンジンプラグインの “GPU Lightmass” を有効化し、エディタを再起動
3. 新規レベルを “基本” で作成し、保存
4. ワールドセッティングから “外部アクタを使用” を有効化
5. プロジェクト設定からゲームのデフォルトマップに作成したレベルを指定
6. 作成したプロジェクトを Mac PC に移行し、iOS で Cook を実行
→ 以下のエラーが発生することを確認
--------------------------------
UATHelper: クック (IOS): LogInit: Display: Warning/Error Summary (Unique only)
UATHelper: クック (IOS): LogInit: Display: -----------------------------------
UATHelper: クック (IOS): LogInit: Display: LogLevel: Error: Failed to load Actor for External Actor Package /Game/__ExternalActors__/NewMap/D/VF/J0CJ8CZH12RXRLKAILIVHQ
UATHelper: クック (IOS): LogInit: Display: LogLinker: Warning: [AssetLog] [Path]/MyProject/Content/__ExternalActors__/NewMap/D/VF/J0CJ8CZH12RXRLKAILIVHQ.uasset: VerifyImport: Failed to find script package for import object ‘Package /Script/GPULightmass’
[Attachment Removed]
お世話になっております。
GPU Lightmassの*.uplugin*を確認したところ、サポート対象はWin64のみとなっており、macOSはサポートされていません。そのため、Mac 環境ではプラグイン関連のアセットがコンテンツブラウザ上で空または非表示のように見えることがありますが、これは想定された挙動になっています。
また、Failed to find script package /Script/GPULightmassというエラーについては、GPU Lightmass がサポート外のプラットフォームであることが原因で発生している可能性が高いです。
OFPAへの影響についても、このプラットフォームに対応していないためサポートできていないと思われます。
どのようにご利用していますか?
MacOS未対応なのでできることが限られていますが、できれば一緒に回避方法を考えたいと思います。
お手数ですが、よろしくお願いします。
[Attachment Removed]
お世話になっております。ご返信ありがとうございます。
GPU Lightmass が macOS をサポートしていないことについては理解いたしました。
我々が実現したいことを明確にすると、以下の通りです。
・Windows 版のエディタにて GPU Lightmass を用いてベイクしたライトマップデータを含むプロジェクトについて
・macOS 上で iOS 版のパッケージを作成することです ( macOS 上で GPU Lightmass によるベイクを行いたい意図はありません ) 。
現時点でも、レベルの OFPA が無効状態であれば、GPU Lightmass を用いて生成したライトマップを含むプロジェクトの iOS 版パッケージをエラーなく作成することができます。しかし、OFPA を有効にすると、iOS 版パッケージ作成時にエラーとなってしまいます。
最終的な目的は、OFPA が有効な場合でも、OFPA が無効な場合と同様に iOS のパッケージが生成できることです。
※ 補足として、World Partition の機能は不要であり、必要としているのはあくまで OFPA 機能のみになります。
いったん上記の内容を踏まえてアドバイスを頂けませんでしょうか。
引き続き、よろしくお願いいたします。
[Attachment Removed]
お世話になっております。
この問題はOFPAが原因ではなく、macOSがGPULightmassプラグインを読み込めないことが直接の理由です。OFPAを有効にすると、各アクターが外部アクターパッケージとして個別のuassetに分かれます。そのためmacOSでクックする際、すべての外部アクターを読み込む必要があります。しかし、どれかのアクターが/Script/GPULightmassを参照していると、macOSにはそのモジュールが存在しないため読み込みに失敗し、エラーになります。
その結果、OFPAを使わない場合は警告で済み、OFPAを使う場合は読み込みが必須になるためエラーで止まります。ライトマップ自体は問題ありませんが、macOS側にはGPULightmassのスクリプトパッケージが無いため、外部アクターが参照を持っていると処理できません。
この問題を避ける一般的な方法は、WindowsでiOS向けのクックを行い、Macはコード署名とXcodeビルドだけを担当させるリモートビルドの形にすることです。WindowsならGPULightmassが利用できるので、OFPAが有効でも外部アクターを正しく読み込めます。
Windows側でクックを行える環境はありますか?あったら試していただけますか?
お手数ですが、よろしくお願いします。
[Attachment Removed]
お世話になっております。ご返信ありがとうございます。
本件の原因について、理解いたしました。
リモートビルドを用いた Windows での iOS クックについては検討いたします。
一方で、本件の原因となる GPULightmassSettingsActor ですが、コードを確認したところコンストラクタで bIsEditorOnlyActor が有効化されるようです。
AGPULightmassSettingsActor::AGPULightmassSettingsActor(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer.DoNotCreateDefaultSubobject(TEXT("Sprite")))
{
#if WITH_EDITORONLY_DATA
bActorLabelEditable = false;
#endif // WITH_EDITORONLY_DATA
bIsEditorOnlyActor = true;
Settings = ObjectInitializer.CreateDefaultSubobject<UGPULightmassSettings>(this, TEXT("GPULightmassSettings"));
}
仮にこのアクターがパッケージで不要な場合、OFPA 有効化状態のレベルをクックする際、このアクターの読み込み自体を行わないようにすることはできませんでしょうか。
エンジン改造も視野に入れて検討しておりまして、何かしら手がかりがあればご教示頂けますと幸いです。
以上、よろしくお願いいたします。
[Attachment Removed]
お世話になっております。
OFPA を有効にしたレベルをクックする際、GPULightmassSettingsActor の読み込みを防ぐことはできません。
このアクターは bIsEditorOnlyActor = true に設定されていますが、外部アクターのパッケージは、エディタ専用かどうかを判定する前にインポート解決のために読み込まれます。その際、パッケージが /Script/GPULightmass を参照していると、macOS にはこのモジュールが存在しないため、読み込みに失敗してクックエラーになります。
推奨されるワークフローとしては、GPU Lightmass がサポートされている Windows 環境で GPULightmassSettingsActor をレベルから削除し、OFPA を有効にした状態で保存したうえで、macOS では iOS のクックのみを実行する方法になります。理想的には、macOS 側の iOS ワークフローでは、GPU Lightmass に関連するコンテンツのコンパイルやクックを行わない形にするのが望ましいです。この方法で、ベイク済みのライトマップには影響はありません。
また、今週からエピックが全体的に休みに入るため、対応遅れる可能性があります。申し訳ないです。
お手数ですが、よろしくお願いします。
[Attachment Removed]
お世話になっております。ご回答ありがとうございます。
お休みについても承知いたしました。
>GPU Lightmass がサポートされている Windows 環境で GPULightmassSettingsActor をレベルから削除し、OFPA を有効にした状態で保存
こちらのアプローチが比較的現実的かと思いますので、プロジェクト内で検証したいと思います。
検証の上、もし問題が発生した場合はご相談させて頂きたく存じます ( 検証開始は年明けの予定です ) 。
話が変わってしまうのですが、1点追加で質問がございます。
GPULightmass はベータとのことで、製品利用に対して慎重になる必要があるかと存じますが、以下の認識に齟齬はございますでしょうか。
・GPULightmass プラグインはあくまでライトマップをベイクするエディタ機能であり、GPULightmass を有効化した場合でも、CPULightmass 使用時と比較してランタイムの挙動 ( ライトマップのロードやシェーダー処理等 ) が変化することは無い
( GPULightmass にてベイクしたライトマップは、データ形式としては CPU Lightmass と同様のものである )
以上、よろしくお願いいたします。
[Attachment Removed]
お世話になっております。
あけましておめでとうございます。今年もよろしくお願いします。
弊社のプロジェクトでも利用していて、確かにRuntimeでは差がないため、気をつけながらGPULightmass利用を問題がないと思います。今回のように、プラットフォームに未対応の問題などある可能性があります。その際にEPSでいつでも気軽に相談に乗ってみてください。
引き続きよろしくお願いします。
[Attachment Removed]
お世話になっております。
明けましておめでとうございます。今年もよろしくお願いいたします。
弊社プロジェクトにて検証し、GPULightmassSettingsActor を削除するワークフローにて問題無く iOS で GPU Lightmass を利用することができました。
この度はご対応ありがとうございました。
[Attachment Removed]