Hi,
I did some research and programming regarding implicit surfaces recently. I'm still in the "agorithm developing" phase but I thought I should show what I got so far. Perhaps someone has some good input for me.
First of all I want to thank Vlado for his extraordinary support for developers. There's no other company I know where you can get this kind of support directly from the developers. The VRaySDK had a step learning curve but I'm feeling quite comfortable now.
So let's come to the stuff:
Let's take a polyobject:
http://www.dimo3d.info/teapot.jpg
Implicit surfaces or isosurfaces are defined by density fields and a threshold. those points in space that share the same density can be visualized as a surface. Blobbies are an excellent example of this. If you put a falloff density field on every vertex and add them you get a blob surface.
By raymarching into this field you can directly raytrace this isosurface:
http://www.dimo3d.info/teapot_blob.jpg
This is already kind of cool because it renders blob surfaces with infinite precision with no memory consumption. However my current implemention is a little bit bruteforce. The processing time grows exponentially with the number of vertices. Not efficient for rendering 100.000 particles as a blobmesh. But it needs almost no memory for this and I did tests where I could render particle counts that didn't render with the max blobmesh anymore. It's very slow though.
Ok, but what if we add a 3D texture to this density gradient? (I can pick any max 3D texture including DarkTree). We get this:
http://www.dimo3d.info/teapot_texture.jpg
Freaky, isn't it? Kind of 3D displacement with holes and stuff.
Something like a coral reef:
http://www.dimo3d.info/Corals.jpg
Here's a small test animation:
http://www.dimo3d.info/implicit.mov
However it is not yet production ready. It's too slow for animations right now. In the movie you might notice the flickering around the edges. To get rid of this, you have to boost rendertimes very much.(Lowering the stepsize for the raymarching algorithm)
I'm currently implementing a spatial subdivision scheme to speed things up, but this will take a while since that's a sparetime project at the moment.
I'm also lacking a good name for this. At the moment it's called VraySphere because it started as a VRaySDK sample project for ray/sphere intersection (from Vlado).
Best regards,
Dieter
I did some research and programming regarding implicit surfaces recently. I'm still in the "agorithm developing" phase but I thought I should show what I got so far. Perhaps someone has some good input for me.
First of all I want to thank Vlado for his extraordinary support for developers. There's no other company I know where you can get this kind of support directly from the developers. The VRaySDK had a step learning curve but I'm feeling quite comfortable now.
So let's come to the stuff:
Let's take a polyobject:
http://www.dimo3d.info/teapot.jpg
Implicit surfaces or isosurfaces are defined by density fields and a threshold. those points in space that share the same density can be visualized as a surface. Blobbies are an excellent example of this. If you put a falloff density field on every vertex and add them you get a blob surface.
By raymarching into this field you can directly raytrace this isosurface:
http://www.dimo3d.info/teapot_blob.jpg
This is already kind of cool because it renders blob surfaces with infinite precision with no memory consumption. However my current implemention is a little bit bruteforce. The processing time grows exponentially with the number of vertices. Not efficient for rendering 100.000 particles as a blobmesh. But it needs almost no memory for this and I did tests where I could render particle counts that didn't render with the max blobmesh anymore. It's very slow though.
Ok, but what if we add a 3D texture to this density gradient? (I can pick any max 3D texture including DarkTree). We get this:
http://www.dimo3d.info/teapot_texture.jpg
Freaky, isn't it? Kind of 3D displacement with holes and stuff.
Something like a coral reef:
http://www.dimo3d.info/Corals.jpg
Here's a small test animation:
http://www.dimo3d.info/implicit.mov
However it is not yet production ready. It's too slow for animations right now. In the movie you might notice the flickering around the edges. To get rid of this, you have to boost rendertimes very much.(Lowering the stepsize for the raymarching algorithm)
I'm currently implementing a spatial subdivision scheme to speed things up, but this will take a while since that's a sparetime project at the moment.
I'm also lacking a good name for this. At the moment it's called VraySphere because it started as a VRaySDK sample project for ray/sphere intersection (from Vlado).
Best regards,
Dieter
Comment