Destructible planetary size terrain : SVO, MC or DC extraction, both ?
#1 Members - Reputation: 104
Posted 27 May 2012 - 04:29 AM
Gamedev.net is sometimes Santa Claus so lets believe in him and ask for big BIG XMas presents ?
Noise multi-octave function = OK -> Ray marching it is expensive + applying, storing destruction over an implicit function look like a nightmare.
So, storing the 3D noise scalar field inside a SVO to stream/page it from disk ? OK, but which node structure is suitable for destroying it ?
How to shatter the SVO volume and apply physics on shards, shattering again and again upon gravity collision until shards reach the size of a single voxel ?
Physics over such amount of voxels is obviously too expensive. So should I polygonize with a MC function, blocks of voxels in the shattered area and rasterize triangles out of those blocks rather than try to DVR a whole "dynamic" SVO ?
Atomontage answered me that he don't polygonize at all his atoms... How is he doing physics on a that huge amount of voxels ?!
Help ! Help ! Help ! Thanks ! Thanks ! Thanks !
#2 Members - Reputation: 398
Posted 28 May 2012 - 02:25 AM
Use this to generate your not-yet-destroyed object once at load time, not for real time. Ideally, never calculate anything at real time if the output never changes given the same inputs.Noise multi-octave function = OK -> Ray marching it is expensive + applying, storing destruction over an implicit function look like a nightmare.
Depends on how you want to destroy it.So, storing the 3D noise scalar field inside a SVO to stream/page it from disk ? OK, but which node structure is suitable for destroying it ?
To shatter an SVO is just taking a chunk of the voxel nodes out and creating a new SVO out of them. If you are dynamically building SVOs for the shards, they can become infinitely small, so place a threshold in at some point.How to shatter the SVO volume and apply physics on shards, shattering again and again upon gravity collision until shards reach the size of a single voxel ?
Heavy use of spatial partitioning will help to avoid running pointless collision detection between things that are far away.How to shatter the SVO volume and apply physics on shards, shattering again and again upon gravity collision Physics over such amount of voxels is obviously too expensive. So should I polygonize with a MC function, blocks of voxels in the shattered area and rasterize triangles out of those blocks rather than try to DVR a whole "dynamic" SVO ?
Atomontage answered me that he don't polygonize at all his atoms... How is he doing physics on a that huge amount of voxels ?!
#3 Members - Reputation: 104
Posted 28 May 2012 - 07:16 AM
Thanks a lot for the input.
Ok, I was even ready to cook before and deploy the whole terrain volume(at game installation) as a single reference SVO(even if very heavy on disk), stream / play with / destroy an instance of it in-game.Use this to generate your not-yet-destroyed object once at load time, not for real time.
Upon impact with shots and let the gravity break-up the detached group(s) in smaller shards upon collision(+enough speed) with the underlying rest of the terrain.Depends on how you want to destroy it.
If I use child pointers, I am not sure to understand how to update the octree after such events.
Thanks for that, this is one of the keys I needed to hear !To shatter an SVO is just taking a chunk of the voxel nodes out and creating a new SVO out of them.
I tried to get familiar with several inner/leaf node structures to store my noise values but I am still hesitating in choosing one that will serve as well an easy ray-casting and physics animation.Heavy use of spatial partitioning
I saw one person on youtube publish a sample with fair frame rates, ray-casting only on the CPU.
I asked him about the node structure used and he said he used barely half of Laine & Karas's one (without contours nor colors for test purposes) and their exact same ray-casting algo but without CUDA. Laine's ray-caster looks indeed easy to pull from CUDA to CPU. I probably need to have a shot at something like this but I am still not 100% sure :
http://www.youtube.com/watch?v=TgIXwF53j6I
Much thanks again Digitalfragment.
Edited by (ok), 28 May 2012 - 07:22 AM.






