Re: Plotting 3D array as a 'cloud' [message #78005 is a reply to message #77809] |
Mon, 10 October 2011 10:48   |
Karl[1]
Messages: 79 Registered: October 2005
|
Member |
|
|
On Sunday, October 9, 2011 10:10:24 PM UTC-6, Mike Galloy wrote:
> Robin Wilson <ro...@rtwilson.com> wrote:
>> Hi all,
>>
>> I've got a 3D array in IDL that contains a model of a cloud - that is,
>> each cell is either 0 (not cloud) or 1 (cloud). I'd like to plot this in
>> a 3D way, so that it looks like a cloud. I'm not quite sure how else to
>> describe it - but I'd like to be able to see the cloud as a 3D model - so
>> it just looks like a cloud shaped 'blob' - if possible one that can be rotated.
>>
>> I'm not quite sure how to go about this. I don't want to do a surface
>> plot - because I want all sides of the cloud not just the top surface. I
>> guess some sort of 3D point plot would be ok, but I want to see the cloud
>> as a solid blob, not as points with gaps between them.
>>
>> I'm a little confused by the range of IDL procedures which can be used to
>> plot things like this, and am not really sure which is best to try and use.
>>
>> Any suggestions?
>
> I would suggest using ISOSURFACE to get vertices and connectivity. Then
> create an IDLgrPolygon from that (or use function graphics). Use XOBJVIEW
> to display if you don't want to create your own object graphics hierarchy.
>
> Mike
> --
> www.michaelgalloy.com Research Mathematician Tech-X Corporation
Using ISOSURFACE to generate polygon data for an IDLgrPolygon to display with XOBJVIEW is an excellent first step. This will give you a surface representing the transition between "cloud" and "no cloud". ISOSURFACE can generate a lot of triangles, so consider using MESH_DECIMATE to simplify the model if it is too much to display.
This surface is usually displayed as an opaque surface, so you won't see any structure "inside" the cloud, as there might be if there are any "no cloud" regions within the outermost exterior surface. You can sort of "zoom through" the outer surface, but you'll soon get lost. It may be tempting to use alpha to draw the surface semi-transparently, but this usually requires that the triangles be sorted back-to-front, and that's a complicated job.
Consider using IDLgrVolume with XOBJVIEW. IDLgrVolume can render the volume data using "ray-casting" which will display your data semi-transparently and handle the back-to-front issues.
Is the iVolume iTool still around? If so, give that a try. You'll see your volume rendered the same way as IDLgrVolume shows it. But you can also drag "slice" planes through it. And I think you can turn on isosurface generation as well.
Karl
|
|
|