Mesh Bounding Box Clash Detection - Grasshopper2024-03-28T17:29:50Zhttps://www.grasshopper3d.com/forum/topics/mesh-bounding-box-clash-detection?commentId=2985220%3AComment%3A1072874&feed=yes&xn_auth=noDieter, whats the diference b…tag:www.grasshopper3d.com,2015-08-23:2985220:Comment:13478332015-08-23T20:54:03.440Zdvdrblshttps://www.grasshopper3d.com/profile/DavidRobles
<p>Dieter, whats the diference betwen your tool and Arend´s</p>
<p>Dieter, whats the diference betwen your tool and Arend´s</p> Hello Arend i love the voxel…tag:www.grasshopper3d.com,2015-08-23:2985220:Comment:13479122015-08-23T20:21:10.486Zdvdrblshttps://www.grasshopper3d.com/profile/DavidRobles
<p>Hello Arend i love the voxel tools, is this the latest version?</p>
<p>Hello Arend i love the voxel tools, is this the latest version?</p> Yes i see. The heaviness of t…tag:www.grasshopper3d.com,2014-07-09:2985220:Comment:10999472014-07-09T22:10:33.386ZDieter Toewshttps://www.grasshopper3d.com/profile/DieterToews
<p>Yes i see. The heaviness of the rhino bounding box object and the Copying object behavior of grasshopper is most problematic. I take it there no way to pass objects by ref in grasshopper? Maybe I'll Ask David Rutten this in a separate thread.</p>
<p></p>
<p>In the mean time I've redone my space-partitioning/recursive algorithm and got a factor 12.5x speed up so far. I still have a lot more optimization i can do. It now works with bounding boxes for as long much as possible before switching…</p>
<p>Yes i see. The heaviness of the rhino bounding box object and the Copying object behavior of grasshopper is most problematic. I take it there no way to pass objects by ref in grasshopper? Maybe I'll Ask David Rutten this in a separate thread.</p>
<p></p>
<p>In the mean time I've redone my space-partitioning/recursive algorithm and got a factor 12.5x speed up so far. I still have a lot more optimization i can do. It now works with bounding boxes for as long much as possible before switching to intersection tests. This approach works best when the target mesh is high poly and not recursed below the size of individual triangles (like I've been doing for the Stanford bunny).</p>
<p></p>
<p>At this point the formatting of the voxles for grasshopper is taking (at recursion 4) 3x as long as voxlezing the bunny in the first place. Output (at recursion 4) is 1x of voxelization time. I see the delema more clearly now - thank you.</p>
<p></p>
<p>In any case here is an update to the .GHA i posted - it works with the .gh that i previously posted. I still intend to see if i can use your voxel tools framework as the representational/display system for my class. I'll have a poke around in VS and see what happens in the next couple of days.</p>
<p></p> In the bigger project the vox…tag:www.grasshopper3d.com,2014-07-09:2985220:Comment:10999402014-07-09T21:52:16.520ZDieter Toewshttps://www.grasshopper3d.com/profile/DieterToews
<p>In the bigger project the voxels are smart and communicate information between them. So this voxel class I've written will be extended with many other capabilities into a "Node" Class. The nodes communicate back a fourth between there near neighbors and also between there parents and children.</p>
<p></p>
<p>generally it will work like this:</p>
<p>step 1 - voxleise a model.</p>
<p>step 2 - set up topological relationships</p>
<p>step 3 - set up initial conditions</p>
<p>step 4 -…</p>
<p>In the bigger project the voxels are smart and communicate information between them. So this voxel class I've written will be extended with many other capabilities into a "Node" Class. The nodes communicate back a fourth between there near neighbors and also between there parents and children.</p>
<p></p>
<p>generally it will work like this:</p>
<p>step 1 - voxleise a model.</p>
<p>step 2 - set up topological relationships</p>
<p>step 3 - set up initial conditions</p>
<p>step 4 - simulate</p>
<p>step 5 - output.</p>
<p></p> Could you elaborate on your d…tag:www.grasshopper3d.com,2014-06-13:2985220:Comment:10872652014-06-13T04:52:01.253ZArendhttps://www.grasshopper3d.com/profile/Arend
<p>Could you elaborate on your data structure (and why you need it, perhaps?)</p>
<p>Could you elaborate on your data structure (and why you need it, perhaps?)</p> Hi dieter,
I tested it in th…tag:www.grasshopper3d.com,2014-06-12:2985220:Comment:10871762014-06-12T17:26:30.227ZArendhttps://www.grasshopper3d.com/profile/Arend
<p>Hi dieter,</p>
<p></p>
<p>I tested it in the voxelstools, it took 10 seconds to test 2.8 mln voxels - 700.000 filled.</p>
<p></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/2768894384?profile=original" target="_self"><img class="align-full" src="http://storage.ning.com/topology/rest/1.0/file/get/2768894384?profile=original" width="592"></img></a></p>
<p>Keep in mind that it's not really the search strategy that's becoming the bottleneck - it the output data. A mesh box is about 800 bytes, that means that you'll have about 800mb of data (memory) for a grid of 100x100x100, and 6.4GB of…</p>
<p>Hi dieter,</p>
<p></p>
<p>I tested it in the voxelstools, it took 10 seconds to test 2.8 mln voxels - 700.000 filled.</p>
<p></p>
<p><a target="_self" href="http://storage.ning.com/topology/rest/1.0/file/get/2768894384?profile=original"><img class="align-full" src="http://storage.ning.com/topology/rest/1.0/file/get/2768894384?profile=original" width="592"/></a></p>
<p>Keep in mind that it's not really the search strategy that's becoming the bottleneck - it the output data. A mesh box is about 800 bytes, that means that you'll have about 800mb of data (memory) for a grid of 100x100x100, and 6.4GB of ram to for a grid of 200x200x200. This combined with GH's feature of copying all objects - you'll be out of luck pretty soon.</p>
<p>In the voxeltools one voxel is represented by one bit, meaning that a grid of a 100x100x100 is not only one object, it's also much lighter: about 150kb in memory footprint for a 100x100x100 grid, and about 1MB for a 200x200x200 grid.</p>
<p></p> http://en.wikipedia.org/wiki/…tag:www.grasshopper3d.com,2014-06-05:2985220:Comment:10833772014-06-05T01:55:55.386ZDieter Toewshttps://www.grasshopper3d.com/profile/DieterToews
<p><a href="http://en.wikipedia.org/wiki/Z-order_curve" target="_blank">http://en.wikipedia.org/wiki/Z-order_curve</a>, it is a type of fractal curve and a way of collapsing the dimension of something.</p>
<p><img alt="" class="thumbimage" height="300" src="http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Four-level_Z.svg/300px-Four-level_Z.svg.png" width="300"></img></p>
<p>0;0... is the path - 'i' corresponds to the 0 to n elements in the list, 'i' is, i think, the convention in grasshopper. :-)</p>
<p></p>
<p>Becuase, for example, 0 is a different path than 0;0 multiple recursion levels can be represented in the same tree. (at least that…</p>
<p><a href="http://en.wikipedia.org/wiki/Z-order_curve" target="_blank">http://en.wikipedia.org/wiki/Z-order_curve</a>, it is a type of fractal curve and a way of collapsing the dimension of something.</p>
<p><img alt="" src="http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Four-level_Z.svg/300px-Four-level_Z.svg.png" class="thumbimage" height="300" width="300"/></p>
<p>0;0... is the path - 'i' corresponds to the 0 to n elements in the list, 'i' is, i think, the convention in grasshopper. :-)</p>
<p></p>
<p>Becuase, for example, 0 is a different path than 0;0 multiple recursion levels can be represented in the same tree. (at least that is my understanding)</p> Hmm, lost me there.
By z-ord…tag:www.grasshopper3d.com,2014-06-03:2985220:Comment:10822352014-06-03T00:28:07.303ZSaeran Vasanthakumarhttps://www.grasshopper3d.com/profile/SaeranVasanthakumar
<p>Hmm, lost me there. </p>
<p>By z-order do you mean z-axis, or the overlapping voxels based on pov? </p>
<p>And what is i in your example? </p>
<p>Hmm, lost me there. </p>
<p>By z-order do you mean z-axis, or the overlapping voxels based on pov? </p>
<p>And what is i in your example? </p> Hey Saeran,
yes exactly,
I t…tag:www.grasshopper3d.com,2014-06-01:2985220:Comment:10814842014-06-01T21:41:32.578ZDieter Toewshttps://www.grasshopper3d.com/profile/DieterToews
<p>Hey Saeran,</p>
<p></p>
<p>yes exactly,</p>
<p>I think, however, that i should change it so that each voxel has a position in the tree based on it's z-order.Thus:</p>
<p>Level 1</p>
<p>0;i</p>
<p>Level 2</p>
<p>0;0;i</p>
<p>0;1;i</p>
<p>0;2;i</p>
<p>0;3;i</p>
<p>0;4;i</p>
<p>0;5;i</p>
<p>0;6;i</p>
<p>0;7;i</p>
<p>Level 3 (shown sparse)</p>
<p>0;0;0;i</p>
<p>0;0;1;i</p>
<p>...</p>
<p>0;3;0;i</p>
<p>0;3;1;i</p>
<p>...</p>
<p>0;7;6;i</p>
<p>0;7;7;i</p>
<p>etc...</p>
<p>This will encode the…</p>
<p>Hey Saeran,</p>
<p></p>
<p>yes exactly,</p>
<p>I think, however, that i should change it so that each voxel has a position in the tree based on it's z-order.Thus:</p>
<p>Level 1</p>
<p>0;i</p>
<p>Level 2</p>
<p>0;0;i</p>
<p>0;1;i</p>
<p>0;2;i</p>
<p>0;3;i</p>
<p>0;4;i</p>
<p>0;5;i</p>
<p>0;6;i</p>
<p>0;7;i</p>
<p>Level 3 (shown sparse)</p>
<p>0;0;0;i</p>
<p>0;0;1;i</p>
<p>...</p>
<p>0;3;0;i</p>
<p>0;3;1;i</p>
<p>...</p>
<p>0;7;6;i</p>
<p>0;7;7;i</p>
<p>etc...</p>
<p>This will encode the parent-child relationship right into the tree.</p>
<p></p>
<p>Also, if i switch to using individual mesh faces for mesh clash detection then i'll be sorting them as i go (classic space partitioning sort) so i can add an output with a sorted tree for those too.</p>
<p>Also, I would be interesting to output them in <a href="http://www.grasshopper3d.com/forum/topic/listForContributor?user=1n6po24erozkh" class="fn url">Arend</a>'s voxel tool data format.</p>
<p>Also, I will add the voxels status to another output - outside is never incuded in the tree (nulls will be placed) but "on boundary" and "inside" will be represented.</p>
<p>Also, the bigger projects requires that the voxels know about their topology - I'll probably include that in this little test but i have to think about the best way to represent it.</p>
<p>Also, I was just looking at David's oct-tree component and hoping that i haven't replicated that function. It will have to wait for tomorrow since the machine i'm writing this on doesn't have rhino on it. The project is still useful for me as it is the data structure that i'm after but as a general component it might be a tad redundant.</p>
<p>Also, right now it accepts a list of meshes but the only uses the first one. I need to fix this.</p> This is an excellent componen…tag:www.grasshopper3d.com,2014-06-01:2985220:Comment:10817242014-06-01T19:25:58.741ZSaeran Vasanthakumarhttps://www.grasshopper3d.com/profile/SaeranVasanthakumar
<p>This is an excellent component Dieter. So useful. </p>
<p>Can you clarify the output for me: the leaves of the tree contain all the voxels, and depth = recursion level? Is that right?</p>
<p>S</p>
<p>This is an excellent component Dieter. So useful. </p>
<p>Can you clarify the output for me: the leaves of the tree contain all the voxels, and depth = recursion level? Is that right?</p>
<p>S</p>