comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Point Cloud Isosurface
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Point Cloud Isosurface [message #72060] Fri, 13 August 2010 10:15 Go to previous message
tegus is currently offline  tegus
Messages: 20
Registered: October 2008
Junior Member
On Aug 13, 10:58 am, Karl <karl.w.schu...@gmail.com> wrote:
> On Aug 12, 7:55 pm, tegus <tegusbillhar...@gmail.com> wrote:
>
>
>
>
>
>> On Aug 12, 5:27 pm, Karl <karl.w.schu...@gmail.com> wrote:
>
>>> On Aug 12, 2:42 pm, tegus <tegusbillhar...@gmail.com> wrote:
>
>>>> Hello,
>>>> I'm working with noisy 3D point cloud data approximated by:
>>>>   xyz_0=randomn(seed, 3, 1000) + 5.0
>>>>   xyz_1=randomn(seed, 3, 1000) + 10.0
>>>>   xyz_2=randomu(seed, 3, 10000) * 20.0
>>>>   xyz=[[xyz_0], [xyz_1], [xyz_2]]
>
>>>> although the actual data sets are larger and far more complex ...
>
>>>> My current method of reducing and rendering the data:
>>>> - Create a 3D histogram (bin size = 1) using hist_nd from JDHU
>>>> library:
>>>>   vol=hist_nd(xyz, 1.0)
>>>> - Create isosurface (density threshold=10)
>>>>   isosurface, vol, 10, verts, conn
>>>> - Create polygon object and display
>>>>   oPoly=obj_new('IDLgrPolygon', verts, polygons=conn)
>>>>   xobjview, oPoly
>
>>>> This gives me the desired result which in this example is a polygon
>>>> object which depicts two blobs approximating the measured positions.
>
>>>> However, rendering and analysis of a more complex scene as a single,
>>>> complex polygon becomes unwieldy (e.g., no dynamic culling, z
>>>> clipping ...)
>>>> My question is, how do I separate these two solid objects, represented
>>>> by a single polygon (verts and conn), into two seperate polygon
>>>> objects (verts1, conn1 and verts2, conn2)?
>
>>>> Thanks,
>>>> Bill
>
>>> MESH_CLIP() ?
>
>> Karl,
>
>> To use MESH_CLIP I need to specify a clipping plane between the blobs,
>> which becomes intractable for any real data set (on the order of
>> millions of points and tens of thousands of blobs).
>
> oh ok.  The conn list is a vector where each polygon is represented by
> "n", followed by n vertex indices.  So you could extract the first
> polygon (blob) by:
>
> blob_conn1 = conn[0:conn[0]]
>
> and then generate additional conn lists for each blob by looping
> through the original list.
>
> These lists refer to the original vertex list.  You can leave it that
> way and just reference the original vertex list from the grPolygon
> objects.  So you would use verts (the original vert list) and
> blob_conn1 in a grPolygon object to represent the first blob.
>
> If putting the entire vertex list in each polygon object is bad, as I
> suspect it is, you can do additional work to pull the vertices
> referenced by each conn list out of the original vert list and make a
> new, smaller, vert list for each blob.  Then you can delete the
> original vertex list.
>
> This will likely be a good path since there are likely no shared verts
> between blobs.
>
> You'll have to be careful when pulling the verts out since you'll have
> to remap the conn indicies and pay attention to verts used more than
> once, etc.  But it can all be done pretty easily.
>
> And all this assumes that each blob is represented by one polygon in
> the original polygon object.  If that is not the case, you'll have to
> do some more work to find all the polys that belong to a blob.

Karl,

Thank you for your insight. This helps a great deal!!
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: Adding Second Log Y-Axis for Pressure
Next Topic: Re: "perspective-ized" axis numbering in iSurface

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Thu Oct 09 20:44:23 PDT 2025

Total time taken to generate the page: 0.63947 seconds