seen

11-09-2006, 06:00 PM

volume rendering suggestions needed

I've been experimenting with a few different volume rendering techniques over the past week or so and find myself realizing how little I know. While I've learned a lot, I'm still without a solution to my problem and really don't know which way to turn.

Here's a representation of the problem I'm trying to visualize. For example, suppose I have data representing ocean temperatures from the surface to 1280 meters below the surface. This data covers a surface area that is 256 kilometers by 256 kilometers. From that I can build slices of scalar values...each slice is 256 x 256. There are 128 slices to yield a volume of 256 x 256 x 128. Therefore, the resolution of each slice is 256 x 256 kilometers and the vertical resolution or spacing between each slice is 10 meters. One note to add, I can sub-sample (correct wording?) the data to just about any resolution I want. What I mean is, if I need a grid that is 256 x 256 @ 100 meter resolution, I can do that as well. I can also sample at an arbitrary depth. Meaning I can create a volume of size X * Y * Z that represents any resolution. If I want to extract an area that is 256 x 256 x 256 with a resolution of 1 meter x 1 meter x 1 meter, I can do that. That part of my code is very flexible.

OK, that's the data. What I want to do is use this data to render a volume. Specifically, I want to extract iso-surfaces. For example, suppose my volume of data has the value 1 (as in Celsius) distributed within it in such a way to form a cylinder. I'm trying to get to the point where I can extract this information and visualize it in a manner as to produce a polygonal cylinder complete with normals.

I've experimented with a few techniques with little success. I haven't gotten marching cubes to work well and I'm hesitant to spend a lot of time on any one technique because I'm really not sure what the best direction to go is. I'm not really attached to any given method. I don't even have to generate polygonal models I suppose but I do need some way to drill down to a given iso-surface and visualize it.

The hardware I have to run this sort of sim on is what I'd consider high-end. Dual Xeons with nVidia FX 3400 PCI Express cards. My volumes aren't that large either. My largest volume would be 512 x 512 x 256. Most will be 256 x 256 x 256 or 256 x 256 x 128.

So, that's it. I'm not up to data on the latest techniques in this sort of thing. If anyone is willing to offer some advice, I'm listening.

I've been experimenting with a few different volume rendering techniques over the past week or so and find myself realizing how little I know. While I've learned a lot, I'm still without a solution to my problem and really don't know which way to turn.

Here's a representation of the problem I'm trying to visualize. For example, suppose I have data representing ocean temperatures from the surface to 1280 meters below the surface. This data covers a surface area that is 256 kilometers by 256 kilometers. From that I can build slices of scalar values...each slice is 256 x 256. There are 128 slices to yield a volume of 256 x 256 x 128. Therefore, the resolution of each slice is 256 x 256 kilometers and the vertical resolution or spacing between each slice is 10 meters. One note to add, I can sub-sample (correct wording?) the data to just about any resolution I want. What I mean is, if I need a grid that is 256 x 256 @ 100 meter resolution, I can do that as well. I can also sample at an arbitrary depth. Meaning I can create a volume of size X * Y * Z that represents any resolution. If I want to extract an area that is 256 x 256 x 256 with a resolution of 1 meter x 1 meter x 1 meter, I can do that. That part of my code is very flexible.

OK, that's the data. What I want to do is use this data to render a volume. Specifically, I want to extract iso-surfaces. For example, suppose my volume of data has the value 1 (as in Celsius) distributed within it in such a way to form a cylinder. I'm trying to get to the point where I can extract this information and visualize it in a manner as to produce a polygonal cylinder complete with normals.

I've experimented with a few techniques with little success. I haven't gotten marching cubes to work well and I'm hesitant to spend a lot of time on any one technique because I'm really not sure what the best direction to go is. I'm not really attached to any given method. I don't even have to generate polygonal models I suppose but I do need some way to drill down to a given iso-surface and visualize it.

The hardware I have to run this sort of sim on is what I'd consider high-end. Dual Xeons with nVidia FX 3400 PCI Express cards. My volumes aren't that large either. My largest volume would be 512 x 512 x 256. Most will be 256 x 256 x 256 or 256 x 256 x 128.

So, that's it. I'm not up to data on the latest techniques in this sort of thing. If anyone is willing to offer some advice, I'm listening.