Comments (6)
I'm seeing similar behavior with moving sensors. The documentation says sensors have to have motion type 'static' but can be moved around via SetPosition. However, contacts are only added and removed when the dynamic body is moving as well. A trigger that sweeps over a resting object won't get any contact report and existing contacts are not removed either (if nothing else in the scene happens).
In general, what's the recommended way to do moving trigger shapes? Is it better to just do overlap checks manually? For static triggers I can see that the physics engine can be more efficient, but for moving ones, would there be any benefit?
from joltphysics.
Ah, I see what's going wrong here. Sensors are designed to only detect active dynamic bodies (they completely ignore any sleeping objects - sorry for not documenting this). The reason why you're not receiving the object removal callbacks is that in PhysicsSystem::Update there is an early out when there are no active bodies at all. So when you only have 1 body in the world and it goes to sleep, you don't get any callbacks, but as soon as another object becomes active the callback triggers.
I will fix the missing callback, and it would also be possible to support sensors detecting inactive bodies (I didn't need it), but it would come at a considerable cost (basically we'd need an extra parallel for over all sensors and check the broad/narrow phase for collisions with inactive bodies).
from joltphysics.
I would argue that the extra cost is worth it. From a game engine perspective, sensors enable the very important use case to know when an object enter and leaves their area. The sleep state of a dynamic object is mostly an implementation detail of the physics engine and rarely of interest to the game, whereas the information "object has left the area" is often a critical piece of information for game mechanics. If an object goint to sleep can't be distinguished from an object leaving the area, that's a deal breaker.
So far I never had the use case for sensors that only give you active bodies, but if you have one and are worried about the additional performance penalty, maybe sensors could have a flag (or you just have two types of sensors), that enables detection of sleeping objects. Then you only pay that for sensors that really need it.
from joltphysics.
I fixed the bug that the contact removal callbacks were triggered too late. I'll take a look at making those sensors detect inactive bodies. My current thinking is that if you activate a sensor (which is currently a no-op) that it will start reporting collisions with all bodies (sleeping/non-sleeping). An inactive sensor can only detect collisions with active bodies.
from joltphysics.
Fixed in #133.
from joltphysics.
Awesome, thanks a lot! It looks like it's working exactly as needed now :)
from joltphysics.
Related Issues (20)
- Building with clang using ninja on windows HOT 5
- Use standard types HOT 2
- SixDOFConstraint needs to be able to have non-symmetrical rotation limits
- Toggling manifold reduction doesn't result in any contact callbacks HOT 2
- Mouse input is too sensitive when running samples on a remote machine over Parsec HOT 5
- [Feature Request] Soft-soft collisions and self-collisions HOT 3
- MeshShape: SaveBinaryState and sRestoreFromBinaryState dont work like intended HOT 2
- Performance regression with 9d63f5a2d1b9e426a54dce6c8979e22ff6004eba HOT 9
- [Feature Request] Compute gyroscopic forces HOT 5
- Speculative contact distance affects sensors HOT 1
- Core.h wasn't updated to reflect on the new version HOT 1
- Jolt Complilation Fails on Manjaro Linux HOT 2
- Incorrect moment of inertia for capsule HOT 4
- Soft bodies assert when colliding with ragdolls HOT 4
- Should BodyInterface::MoveKinematic check for SucceededAndIsInBroadPhase ? HOT 2
- Weird angular impulse behaviour (rotational inertia)
- The simulation runs too fast HOT 2
- Build fails using default CMakeLists HOT 4
- Soft bodies elicit a collision response from sensors HOT 1
- Collision with degenerate line triangle HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from joltphysics.