| 00:21.08 | *** join/#brlcad krcevnzncbxyguxx (~armin@dslb-088-064-047-237.088.064.pools.vodafone-ip.de) | |
| 00:30.04 | *** join/#brlcad archivist (~archivist@host81-149-189-98.in-addr.btopenworld.com) | |
| 02:50.25 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 03:14.06 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 03:27.21 | *** topic/#brlcad by brlcad -> Welcome to BRL-CAD! || Don't ask if someone is here, ask a better question. || GSoC 2016 is under way, 9 CAx students! || Release 7.26.0 by 27th... || Logs: http://ibot.rikers.org/%23brlcad/ | |
| 03:30.13 | *** join/#brlcad tandoorichick (75d837cb@gateway/web/freenode/ip.117.216.55.203) | |
| 03:31.56 | brlcad | tandoorichick: how are your setup and preparations coming along? |
| 03:32.43 | brlcad | tandoorichick: please update your dev log with a summary of all the work you've done during the bonding period |
| 03:32.58 | tandoorichick | brlcad: yes they're going good. yet to decide on the method to use for the portable module. |
| 03:33.17 | brlcad | tandoorichick: I didn't fully understand your e-mail |
| 03:33.33 | brlcad | i mean, your first option was pretty clear -- it was the second that was unclear |
| 03:33.41 | tandoorichick | Yes i'm in the middle of that, will be done by today.. had a few problems setting up the blog, now it's done. so i'll be updating the content and adding the link.. |
| 03:34.01 | tandoorichick | the first option being what daniel sugegsted? |
| 03:34.12 | tandoorichick | or the first part of what i suggested? |
| 03:35.21 | tandoorichick | so ok i'll explain it here then |
| 03:35.58 | tandoorichick | so, what that method does it create a structure that contains all the attributes for a mesh that we could possibly need (of course spanning just the needs of BRL- |
| 03:36.06 | tandoorichick | CAd and OpenSCAD) |
| 03:37.07 | tandoorichick | so for OpenSCAD, it is just the PolySet class which just contains information about all the polygons in the mesh. and we're quite familiar with the rt_bot_internal structure |
| 03:39.04 | tandoorichick | essentially because the bot type is a superset of the polyset type (because it includes stuff like mode, thickness, orientation, etc.), what we'll be doing while converting polyset to the intermediate mesh is set those attributes that don't apply to NULL. |
| 03:39.43 | tandoorichick | converting rt_bot_internal to the intermediate type will be trivial because the two structures will essentially contain the same information. |
| 03:40.15 | tandoorichick | this is what i had proposed.. have i made myself clearer? |
| 03:40.17 | brlcad | right, I got that regarding your struct example |
| 03:41.01 | brlcad | it was your next statement: "do you feel it'd be more robust using the generic container and defining the conversion process separately in the utility functions?" |
| 03:41.01 | brlcad | are you suggesting that there'd be two of every utility funciton or something? |
| 03:42.14 | tandoorichick | in the first method (what daniel had suggested), the conversion process essentially lies in the functions - so there'd be two of them right? |
| 03:42.42 | tandoorichick | like get_face or get_num_faces, etc.? |
| 03:43.45 | tandoorichick | these are going to be dependent on the native structures. that's why i suggested the second one, where the conversion process primarily gets over before we even define the functions? |
| 03:43.53 | tandoorichick | .* |
| 03:44.38 | brlcad | I'm still not following -- say I have a "heal_mesh()" top-level function ... it's going to take a data structure of some sort |
| 03:44.50 | brlcad | e.g., struct polygonal_mesh |
| 03:45.25 | tandoorichick | ok? |
| 03:45.28 | brlcad | OR .. there's a heal_brlcad_mesh() and heal_openscad_mesh() |
| 03:45.34 | brlcad | what other alternative is there? |
| 03:45.47 | brlcad | void*? |
| 03:46.42 | brlcad | what I'm not understanding is this second option where the conversion process is defined separately in the utility functions -- what that actually means |
| 03:46.44 | tandoorichick | we're going for the heal_mesh() which takes in the intermediate mesh, that's more efficient right? |
| 03:47.21 | brlcad | I'm asking you what you meant |
| 03:47.38 | brlcad | certainly could be a heal_mesh(struct polygonal_mesh *); |
| 03:48.17 | tandoorichick | ok so we have the struct polygonal_mesh defined. |
| 03:48.55 | brlcad | that struct polygonal_mesh could contain a generic structure or it could contain void*'s or it could contain typed fields for each format (probably a terrible idea) or ... |
| 03:49.51 | brlcad | ok |
| 03:50.16 | tandoorichick | i don't understand your last question.. i'll just try to explain again. |
| 03:50.24 | brlcad | before you do |
| 03:50.25 | tandoorichick | now, for BRL-CAD, we implement it as a rt_bot_internal structure, and for OpenSCAD, as a polyset structure.. |
| 03:50.32 | tandoorichick | yes? |
| 03:50.37 | brlcad | all I'm really trying to understand is what you meant by "defining the conversion process separately in the utility functions" |
| 03:51.05 | brlcad | please continue |
| 03:51.17 | tandoorichick | yeah so for example if we need to get the number of faces of polygonal_mesh, what we'll do is: |
| 03:53.47 | tandoorichick | for BRL-CAD, we'd do it like this: we define the polygonal_mesh as an rt_bot_internal type. that is - struct polygonal_mesh( rt_bot_internal bot; } . now if we need to get the number of faces, we do this: int get_num_faces(struct *polygonal_mesh) { return polygonal_mesh->bot->num_faces; } |
| 03:56.02 | tandoorichick | for OpenSCAD: we define polygonal_mesh as: struct polygonal_mesh{ PolySet polyset_mesh; } . and for getting the number of faces: int get_num_faces(polygonal_mesh *mesh) { return mesh->sizeof(polyset_mesh); } |
| 03:56.30 | tandoorichick | in the get_num_faces for BRL-CAD, i meant int get_num |
| 03:56.45 | tandoorichick | _face (polygonal_mesh *mesh) |
| 03:56.55 | tandoorichick | sorry for all the typos.. |
| 03:57.10 | tandoorichick | is this what you wanted to know? |
| 03:58.53 | brlcad | hmm |
| 03:59.55 | tandoorichick | is it more understandable now? :) |
| 04:00.42 | brlcad | the problem I see is that your utility functions are going to amount to accessors for the generic intermediate container you defined in the first example |
| 04:01.41 | brlcad | to amount to accessors for == be the same as having |
| 04:02.14 | tandoorichick | yeah.. i don't understand the problem though.. |
| 04:02.42 | brlcad | now if you worked in C++, I could totally see having some sort of derived brlcad_bot class and openscad_mesh class that have some common virtual base class |
| 04:02.52 | brlcad | but you were planning on working in C, yes? |
| 04:03.36 | tandoorichick | uhm yes, but since it's going to be a portable module it could be done in C++ right? |
| 04:03.54 | brlcad | I think that's basically the difference between your first and second versions -- the prior is a data-centric model that you'd do in C, the latter is a composition-centric model that you'd do in C++ |
| 04:04.30 | brlcad | so basically, are you more familiar with C or C++? |
| 04:05.10 | tandoorichick | both equally i guess.. i use them alternatively.. |
| 04:05.37 | brlcad | no such thing as equal :) |
| 04:06.09 | tandoorichick | oh well, then C++ it'll be :) |
| 04:06.21 | brlcad | so, then I think that's a decision you need to make with daniel in the loop |
| 04:06.45 | tandoorichick | yeah sure, i'm yet to hear from him on the mailing list.. |
| 04:07.11 | tandoorichick | i'll be updating my dev log/blog entry meanwhile |
| 04:07.44 | brlcad | well your e-mail wasn't clear so he may have had just as much trouble following |
| 04:07.58 | brlcad | but he's a smarter man than I am, so maybe just busy too ;) |
| 04:08.59 | tandoorichick | actually half the stuff i explained here, was what he'd told me on the mailing list.. |
| 04:09.23 | tandoorichick | or do you think i should send another mail stating my strategy more clearly? |
| 04:11.02 | brlcad | no |
| 04:12.19 | brlcad | just a general note -- you should make progress forward just like you've been doing regardless of there being questions |
| 04:12.51 | brlcad | obviously try to get them answered, but some aren't answerable until more progress is made or the problem is more concrete like you spelling out an example here |
| 04:13.22 | tandoorichick | sure, will keep it in mind. :) |
| 04:14.03 | brlcad | fwiw, now that you're further along, I suggest writing an actual header file with comments instead of prose |
| 04:14.48 | brlcad | maybe write a front end driver application for how this would be used before it's implemented (in pseudocode or real code) |
| 04:15.53 | tandoorichick | you mean like putting everything i explained here, as comments? |
| 04:16.09 | tandoorichick | of course for just the method that we decide on right? |
| 04:22.11 | brlcad | right |
| 04:22.46 | brlcad | but not focusing so much on the comments as actually starting towards stubbing in proper class structures, functions, structs, whatever (and yes, putting some comments with them to explain if needed) |
| 04:22.50 | brlcad | simple test program might look something like this: #include "MeshCleanup.h" ; int main() { Mesh *mesh = NULL; if (MeshCleanup::Type(argv[1]) == MeshCleanup::BRLCAD_BOT) mesh = new BrlcadMesh(argv[1]); else if (MeshCleanup::Type(argv[1]) == MeshCleanup::OPENSCAD_MESH) mesh = new OpenscadMesh(argv[1]); mesh->closeGaps(); mesh->write(argv[2]); return 0;} |
| 04:23.50 | brlcad | you could create a "stub" MeshCleanup.h file that would let something like that actually compile .. obviously wouldn't work until you implement the guts, but it will get you thinking about how this will be used before you get lost in the weeds |
| 04:24.45 | tandoorichick | ok got it. :) |
| 04:28.37 | brlcad | concrete examples move the discussion forward ;) |
| 04:52.34 | tandoorichick | brlcad: will keep it in mind from next time onwards! |
| 05:15.33 | *** join/#brlcad kanzure (~kanzure@unaffiliated/kanzure) | |
| 06:25.55 | *** join/#brlcad tofu_ (~sean@104.225.5.10) | |
| 06:42.01 | *** join/#brlcad merzo (~merzo@32-20-133-95.pool.ukrtel.net) | |
| 06:44.34 | *** join/#brlcad merzo (~merzo@32-20-133-95.pool.ukrtel.net) | |
| 06:53.37 | *** join/#brlcad teepee (~teepee@unaffiliated/teepee) | |
| 07:13.34 | *** join/#brlcad d_rossberg (~rossberg@104.225.5.10) | |
| 07:23.59 | *** join/#brlcad sniok (~sniok@89.252.29.238) | |
| 07:39.51 | *** join/#brlcad teepee` (bc5c2134@gateway/web/freenode/ip.188.92.33.52) | |
| 11:03.32 | tandoorichick | d_rossberg: i didn't het this question of yours: "If you do the vertex contraction with the triangulated boundary of a plate mode BoT, how will this compare with the contraction of the vertices of the original BoT?" |
| 11:03.39 | tandoorichick | get* |
| 11:07.49 | d_rossberg | a plate mode bot is a solid -> has a boundary -> triangulate the boundary |
| 11:17.14 | tandoorichick | i was talking about vertex contraction while healing gaps in meshes.. how does the relation between the two scenarios you mentioned come in? |
| 11:28.07 | d_rossberg | what would be the difference between haling the plate mode bot and healing its boundary representation bot? |
| 11:46.39 | d_rossberg | i.e. what's the difference of the results (volume object) if you 1) heal the plate mode bot and 2) heal its facetized boundary representation bot |
| 11:48.14 | d_rossberg | ideally it should be the same (i.e equivalent) |
| 14:45.29 | tandoorichick | well it depends: if we're healing a plate mode bot by "gluing" i to something outside of it, it will be the same. if there are defects inside it, then triangulating the brep will be a lot less like the original, i.e. fidelity decreases.. |
| 14:45.56 | tandoorichick | sorry for the late reply, i got in the middle of something.. |
| 14:46.34 | *** join/#brlcad amarjeet (~amarjeet@101.211.162.159) | |
| 15:25.07 | d_rossberg | i thought at the vertex contraction feature you wrote about |
| 15:42.28 | *** join/#brlcad merzo (~merzo@32-20-133-95.pool.ukrtel.net) | |
| 15:43.07 | Notify | 03BRL-CAD Wiki:Tandoorichick * 9720 /wiki/Google_Summer_of_Code/2016: /* Automatic Polygonal Mesh Healing */ |
| 15:56.42 | *** join/#brlcad djkonro (~konro@41.202.219.77) | |
| 16:27.21 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 16:38.49 | *** join/#brlcad ickby (~stefan@p4FD3C9AE.dip0.t-ipconnect.de) | |
| 16:55.10 | *** join/#brlcad Mandeep_Singh (~mandeep@117.199.103.101) | |
| 16:58.39 | *** join/#brlcad djkonro (~konro@41.202.219.72) | |
| 19:45.32 | *** join/#brlcad merzo (~merzo@11-143-53-37.pool.ukrtel.net) | |
| 20:16.35 | *** join/#brlcad LordOfBikes (~armin@dslb-088-064-047-237.088.064.pools.vodafone-ip.de) | |
| 20:38.38 | *** join/#brlcad djkonro (~djkonro@41.202.219.71) | |
| 20:46.52 | *** join/#brlcad LordOfBikes (~armin@dslb-088-064-047-237.088.064.pools.vodafone-ip.de) | |
| 21:19.42 | *** join/#brlcad djkonro (~djkonro@41.202.219.72) | |
| 21:23.59 | starseeker | Hmm: https://github.com/Kitware/QtTesting |
| 21:38.45 | *** join/#brlcad Guest31597 (~djkonro@41.202.219.76) | |
| 21:58.52 | *** join/#brlcad Guest31597 (~djkonro@41.202.219.77) | |
| 22:23.12 | *** join/#brlcad Guest31597 (~djkonro@41.202.219.77) | |
| 23:01.20 | *** join/#brlcad Guest31597 (~djkonro@41.202.219.73) | |