Description
What happened?
Hello,
Since a recent version (we experienced it with 2.14.1, but are unsure when the change was integrated exactly), we encounter some picking issues and massive warnings in logs with tilesets representing a "small" geometry (a building, typically).
The warning that we get in UE looks like this:
LogPhysics: Warning: Initialising Body : Scale3D is (nearly) zero: Actor: 'xxx' Component: 'xxxx'
And when this happens, it is no longer possible to pick the corresponding primitives (using UE generic trace methods such as UWorld::LineTraceMultiByObjectType).
After comparing with a previous working version, we found out that it was caused by the scaling by CesiumPrimitiveData::positionScaleFactor (currently defined as 1024.0), which scales up the internal coordinates but (logically ;-)) scales down the primitive's transformation, which then becomes "too small" for UE, which then discards the collision mesh (or at least makes the tracing miss some impacts).
Here is a link to a commit dealing with this scaling factor:
22769c2
One possible workaround could consist in making this scaling factor depend on the tileset's dimensions, but I guess @kring would have more context about the issue that made you introduce this factor (it would be bad to get a regression on the cases this factor was fixing...)
Environment
Cesium for Unreal version: 2.14.1
Unreal Engine Version: 5.3
Operating System: Windows 11 Enterprise
Reproduction steps
- As explained, it depends on the dimensions of the model (I have a few examples coming from iTwin)
...
Supporting evidence
No response