x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

[Closed] BPで制御しているスケルタルメッシュのLODについて

お世話になっております。

ブループリントで制御されているスケルタルメッシュのLOD設定について以下のような問題が起きているのですが、原因や解決方法をお教えいただけますでしょうか。

■前提情報:人間のキャラクターをBPで組んでおり、体のスケルタルメッシュの他に、手に持っているモノなど別パーツのスケルタルメッシュも構成されています。プレイすると、このBPキャラクターが表示され、移動などさせることが出来ます。

■起きている問題

・スケルタルメッシュのLODを体に入れているのですが、プレイしても、LODが反映されておりませんでした。

・その状態でr.SkeletalMeshLODRadiusScaleを掛けてみたり、r.ForceLODを試しましたが、変化はなく、LODが効いていない様でした。

 ※r.SkeletalMeshLODRadiusScaleでは、体スケルタルメッシュを直接レベルへ配置したモノは反応していました。

・体のスケルタルメッシュ単品でレベルへ配置してプレイしてみると、そのLODは機能していました。

・プレイした状態で show Boundsでバウンディングボックスを観てみましたが、極端に大きい、小さいは無いようでした。

以上となります。 テキストのみで恐縮ですが、よろしくお願い致します。

Product Version: Not Selected
Tags:
more ▼

asked Oct 26 '18 at 11:05 AM in Japanese

avatar image

Answers.Archive STAFF
1.9k 206 313 684

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

The question has been closed Oct 26 '18 at 11:26 AM by Ken.Kuwano for the following reason:

The question is answered, right answer was accepted


1 answer: sort voted first

お世話になっております。
適用されているLODを視覚的に確認するため、コンソールコマンドの Showflag.LODColoration 1を実行しBlueprintのViewport上でLODの変化が見られるかご確認下さい。プレイ中で無い状態でもLODが適用されていないのであれば、設定の時点で問題があるかもしれません。

実際にLODを更新するのは USkinnedMeshComponent::UpdateLODStatus()で行われます。実際にLODが適用されているかどうかを確認される際にはここで想定されたLODへ更新しているかご確認頂くのがよろしいかと思います。このモジュールはSkeletalMeshのTickComponentで実行されるものであるためTickが有効な限りはLODの更新が適用されているかと思います。逆にTickが無効な場合は更新されない可能性が考えられます。

上記以外のケースでは、SkeletalMeshComponentのForceLodModelが0以上となっている場合は指定のLOD番号で強制されているケースや、SyncAttachParentLODが有効になっていることによって、体のSkeletalMeshComponentがAttachされているMeshにLODに従属してLODが強制されているケースなどが考えられます。
体のSkeletalMeshComponent単体でのLOD切替はうまくいっているようですので、まずは上記のLOD設定について一度ご確認頂ければと思います。
よろしくお願いします。

more ▼

answered Oct 26 '18 at 11:05 AM

avatar image

Answers.Archive STAFF
1.9k 206 313 684

avatar image Answers.Archive STAFF Oct 26 '18 at 11:05 AM

お世話になっております。

ご返答をいただきありがとうございます。

お教えいただいたコマンドを試しつつLODがどの段階で掛らないのかを調べたのですが、その過程で、BPの構成上、そうなることが解りました。

BPで人間のキャラクターを組む際に、頭やボディ等は別メッシュが、基の人間モデルと組み替えられるように作られていた為、この「組み替える側」のモデルはLODを作成し対応していたのですが、組み換え前の大元の人間の方にLODがなかった為、組み替える側のLODモデルを作っていても、反映されない、という感じでした。

大元のモデルにLODを付けた所、それと入れ替わる、ないしは武器の様にそのモデルに紐づけされるモデルのLODも、効くようになりました。

大元のモデルにLODが無くても、それに差し替わる形で紐づくモデルのLODが個別に機能する方法は無さそうに見受けられましたので、大元のLODモデルを入れる事で対応するしか無いかなと思いました。

よろしくお願い致します。

avatar image Answers.Archive STAFF Oct 26 '18 at 11:05 AM

ご確認ありがとうございます。もしパーツが大元のモデルにアタッチされているものであれば、各パーツのSyncAttachParentLOD=falseに設定することで頭やボディ等などパーツ単独でLODを適用できるように思いますが、こちらは有効ではありませんでしたでしょうか。

avatar image Answers.Archive STAFF Oct 26 '18 at 11:05 AM

お世話になっております。

SyncAttachParentLODに関しましては、「組み替える側(各パーツ)」のモデルに対して下図の様にSyncAttachParentLODのチェックを外しても

alt text

親モデルのLOD設定がの有無でのみLODに変化がおき、またLODが変わる距離なども依存してしまっており、SyncAttachParentLODのチェックの有る無しは、機能しているようには見えませんでした。

試しにFoced Lod Modelの値を-1にしても駄目でした。 Foced Lod Modelの値を2、などにすると、LODが反映されましたが、スクリーンサイズで動的に変化せず、恐らくは強制的にそのLODレベル固定になる、といった挙動でした。

よろしくお願い致します。

avatar image Answers.Archive STAFF Oct 26 '18 at 11:05 AM

上記には記載しておりませんでしたが、キャラクターの大元のモデルに追従するためMasterPoseを使用されている場合は子のSkeletalMeshはMasterPoseで指定したSkeletalMeshComponentのLODに全て従属しますがMasterPoseをご利用でしょうか。その場合はForceLODで強制するか、 USkinnedMeshComponent::UpdateLODStatus()の以下の条件をご利用のケースに応じてマスクするかカスタマイズして頂く必要があります。

         // Match LOD of MasterPoseComponent if it exists.
         if (MasterPoseComponent.IsValid())
         {
             PredictedLODLevel = FMath::Clamp(MasterPoseComponent->PredictedLODLevel, 0, MaxLODIndex);
         }

avatar image Answers.Archive STAFF Oct 26 '18 at 11:05 AM

お世話になっております。

なるほど!MasterPoseを使っています。なので従属しているというのは腑に落ちます。

条件毎にカスタムは可能ということで承知いたしました、情報ありがとうございます。

現時点では、とりあえず大元のモデルにLODを仕込み、従属関係にあるMeshはそのLOD距離や段階に依存してLODをする、でも問題が無さそうなので、もし個別対応が必要になりましたら、カスタマイズを検討したいと思います。

迅速にご回答をいただけて大変助かりました。

ありがとうございました。

avatar image Answers.Archive STAFF Oct 26 '18 at 11:05 AM

状況一致していたようで良かったです、こちらこそ早速のご確認及びご連絡頂きありがとうございました。

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question