Prevent physics log spam for line/point meshes#1835
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Working with scale in Unreal has continually resulted in headaches due to the aggressive epsilon checks in code. The loudest complaints are from Chaos (the physics engine), which we previously merged #1668 for.
However, we were still coming across log spam due to some models with small glTF line primitives:
It turns out the workaround in
UCesiumGltfPrimitiveComponent::OnCreatePhysicsStateis not sufficient for line primitives, becauseBodyInstance.InitBodydoes not result in a valid body instance even with a scale of 1. You can confirm this if you add and put a breakpoint on thisreturn:So when
Super::OnCreatePhysicsStateis called, it seems theBodyInstanceis not valid, so it will try toBodyInstance.InitBodywith the original small scale. That results in the "Scale3D is (nearly) zero" warning spam.The most elegant solution seemed to be to avoid this call chain entirely. But we need to set the
bPhysicsStateCreatedvariable fromUActorComponentto true, otherwise achecksomewhere else in the code complain.I also added this check to our points component, since I imagine something similar could happen later down the line.
Issue number or link
N/A
Author checklist
CHANGES.mdwith a short summary of my change (for user-facing changes).[ ] I have added or updated unit tests to ensure consistent code coverage as necessary.Testing plan
Reach out to me for a testing dataset.
06_CesiumMetadatain the Cesium Samples.The physics interactions should still work with everything else, and merely ignore the lines.
Reviewer checklist
Thank you for taking the time to review this PR. By approving a PR you are taking as much responsibility for these changes as the author.
As you review, please go through the checklist below:
CHANGES.mdto make sure they accurately cover the work in this PR.