Comments (1)
When you said "we do this", it wasn't clear to me, whether "we" referred to Jolt in general, or the game and how it integrates Jolt. Ie. does Jolt rebuild/optimize the broadphase automatically as needed already or not?
This is how Jolt does it in general, it's part of PhysicsSystem::Update.
In my engine, I am adding and activating bodies one by one, which you mention is pretty bad. Of course most of that happens in the first frame when the level is loaded. Should I keep track of this and trigger a rebuild at some point? Should I just rebuild the broadphase for dynamic objects every frame? Are there helpers to do this in the background as you do in the game?
After loading I would recommend calling PhysicsSystem::OptimizeBroadPhase once to fully rebuild the tree (this you can do from a background thread but take care to not modify any bodies while you're doing this). Also when you're loading objects, try to collect all bodies that you're loading and add them as a single batch. If you don't, things will still work but it will be less efficient (in the first few frames).
Also you mentioned that the navmesh generation may run for several seconds, but you said that you swap the broadphase trees at the end of the frame.
I don't think it takes a couple of seconds, I think I said it takes more than a frame. We keep the old tree until the next physics update. At that time we'll lock the broad phase (see BroadPhaseQuadTree::FrameSync) and wait for any query that is still ongoing. Only the broadphase query part of the navmesh generation needs to have finished by that time, after that we've collected a list of TransformedShape which we can use to query triangles without requiring additional locking.
from joltphysics.
Related Issues (20)
- [Feature Request] CharacterVirtual needs support for enhanced internal edge removal HOT 4
- Problem serializing/deserializing BodyCreationSettings with sRestoreWithChildren HOT 2
- GCC 14 inlining failed in call to always_inline HOT 2
- Annoying identical color HOT 2
- Assert hit on a scene without constraints w/ `JPH::TempAllocatorMalloc`. HOT 1
- [Question] How do I create a custom mesh from a list/array of vertices? HOT 1
- Unresolved external error when adding HelloWorld code to project HOT 3
- No CMAKE_CXX_COMPILER could be found on MacOS HOT 3
- MeshShape mMaxTrianglesPerLeaf assert HOT 1
- HingeConstraint does not behave as expected HOT 2
- -mfpmath=sse is not added in 32bits build HOT 10
- Kinematic `BoxShape` sensor versus `MeshShape` fails to report contacts HOT 5
- Sample CharacterTest.cpp HOT 1
- LinearCast Body missed in Sensor contact HOT 4
- NonCopyable is missing move operations HOT 3
- Crash on Mutex::lock() - 0x00007ffbd9232ff0 MSVCP140.dll!UnknownFunction HOT 2
- Spheres collide with internal edges despite mitigations HOT 6
- Compilation fails with g++ on Ubuntu 22.04 HOT 5
- Missing documentation on how to destroy a physics object. HOT 2
- `-mfpmath=sse` is not supported by Emscripten HOT 5
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.