Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Destructible planetary size terrain : SVO, MC or DC extraction, both ?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 (ok)   Members   -  Reputation: 104

Like
0Likes
Like

Posted 27 May 2012 - 04:29 AM

Sorry to raise one more time this kind of question.

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 !

Sponsor:

#2 Digitalfragment   Members   -  Reputation: 866

Like
1Likes
Like

Posted 28 May 2012 - 02:25 AM

Noise multi-octave function = OK -> Ray marching it is expensive + applying, storing destruction over an implicit function look like a nightmare.

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.

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 ?

Depends on how you want to destroy 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 ?

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 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 ?!

Heavy use of spatial partitioning will help to avoid running pointless collision detection between things that are far away.

#3 (ok)   Members   -  Reputation: 104

Like
0Likes
Like

Posted 28 May 2012 - 07:16 AM

Hi Digitalfragment,

Thanks a lot for the input.

Use this to generate your not-yet-destroyed object once at load time, not for real time.

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.

Depends on how you want to destroy it.

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.
If I use child pointers, I am not sure to understand how to update the octree after such events.

To shatter an SVO is just taking a chunk of the voxel nodes out and creating a new SVO out of them.

Thanks for that, this is one of the keys I needed to hear !

Heavy use of spatial partitioning

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.
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 :



Much thanks again Digitalfragment.

Edited by (ok), 28 May 2012 - 07:22 AM.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS