| 06:18.08 | *** join/#brlcad ibot (~ibot@rikers.org) | |
| 06:18.08 | *** topic/#brlcad is BRL-CAD Open Source Solid Modeling || http://brlcad.org || http://sf.net/projects/brlcad || #brlcad logs: http://ibot.rikers.org/%23brlcad/ || BRL-CAD release 7.20.2 is posted (20110701) || BRL-CAD is participating in the ESA Summer of Code in Space! | |
| 06:58.40 | *** join/#brlcad brlcad (~sean@BZ.BZFLAG.BZ) | |
| 07:03.34 | *** join/#brlcad d_rossberg (~rossberg@BZ.BZFLAG.BZ) | |
| 09:35.41 | d_rossberg | starseeker: the STRICT_FLAGS is a little bit disturbing to MSVC |
| 09:54.36 | *** join/#brlcad Stattrav (~Stattrav@122.178.209.201) | |
| 09:54.42 | *** join/#brlcad Stattrav (~Stattrav@unaffiliated/stattrav) | |
| 10:12.24 | abhi2011 | ok thanks bhinesly and brlcad |
| 10:41.07 | abhi2011 | bhinesley: db_lookup(dbip, argv[2], 1) is correct then as db_lookup works on objects inside the database, and sph1.s is an object inside the sphere.g database |
| 10:41.54 | abhi2011 | however it seems that ged_bb() treats the command line differently from what I expect |
| 10:42.32 | abhi2011 | so I give the db name first and the object name 2nd which is argv[1] and argv[2] respectively |
| 10:43.35 | abhi2011 | but it treats argv[1] also as an object name in the currently open db, so I modified the code to pass argv+1 instead and argc =1, so that only 1 object name (sph1.s) gets passed |
| 10:44.13 | abhi2011 | like this : if ( ged_bb(gedp, 1, argv+1) == GED_OK){.... |
| 10:45.26 | abhi2011 | ged_bb() still doesnt return GED_OK though, so I am checking if something else is going wrong |
| 11:08.43 | *** join/#brlcad juanman (~quassel@unaffiliated/juanman) | |
| 12:19.11 | abhi2011 | ok I got the bb now ! |
| 12:19.27 | abhi2011 | but it seems I cant print the bound by just printing the gedp result string |
| 12:19.53 | abhi2011 | so if i try printf("%s\n", gedp->ged_result_str); |
| 12:20.09 | abhi2011 | then i get �;3� !! |
| 12:20.44 | abhi2011 | I ll check if its actually a char* |
| 12:37.46 | *** join/#brlcad kunigami (~kunigami@201.53.206.27) | |
| 12:49.35 | *** join/#brlcad juanman (~quassel@unaffiliated/juanman) | |
| 13:08.57 | abhi2011 | ah ok its a variable length string to save memory |
| 13:13.12 | abhi2011 | YES!!!...finally got the bb printed :P |
| 13:13.20 | abhi2011 | printf("%s\n", ( ((gedp->ged_result_str)->vls_str) + ((gedp->ged_result_str)->vls_offset) ) ); |
| 13:13.38 | abhi2011 | output is same as in archer for a unit sphere centred at the origin |
| 13:15.39 | abhi2011 | perhaps not the most efficient but works : http://bin.cakephp.org/view/1085618267 |
| 13:46.31 | starseeker | d_rossberg: "disturbing?" |
| 13:52.21 | d_rossberg | MSVC does not know how to handle a "STRICT_FLAGS" compiler switch, so it tries to open a file with this name |
| 13:53.24 | d_rossberg | probable a problem in cmake: not STRICT_FLAGS is meant but its value |
| 13:55.44 | *** join/#brlcad DarkCalff (DC@173.231.40.98) | |
| 14:56.59 | *** join/#brlcad juanman (~quassel@unaffiliated/juanman) | |
| 15:12.18 | brlcad | abhi2011: so this is going to be a learning experience, but good work figuring out how to print the bb |
| 15:13.21 | brlcad | your end result uses the libged API, which is a very high-level interface |
| 15:13.32 | brlcad | a few "mistakes", one being what you did with ged_result_str |
| 15:13.57 | brlcad | it's a struct bu_vls ... and accessing the internal vls_str and vls_offset is a no-no |
| 15:14.16 | brlcad | there are printing routines for that |
| 15:14.32 | brlcad | you'd either use bu_log() instead of printf() where you can use %V to print them |
| 15:15.11 | brlcad | or you'd call printf() with bu_vls_addr(dedp->ged_result_str) to get the underlying char * |
| 15:16.22 | brlcad | abhi2011: so then the next useful step is to compute the bounding box without calling ged_open() or ged_bb(), using the lower level librt API that libged is using |
| 15:24.05 | CIA-62 | BRL-CAD: 03kunigami * r45767 10/brlcad/trunk/src/liboptical/ (liboslrend.cpp liboslrend.h sh_osl.cpp): changed the field reflection by ray_type so that it can also represent transmission rays. I hope this way the logic gets clearer |
| 15:40.28 | abhi2011 | brlcad : right will try that |
| 15:43.44 | brlcad | so, db_open(), and other db_*() and rt_*() api calls, no ged_*() functions |
| 15:44.03 | brlcad | that will be what your physics command will need to do |
| 15:44.10 | abhi2011 | yes, that was my other option if libged were not to work, but chose the easy way out first :P |
| 15:44.23 | abhi2011 | yes right |
| 15:44.47 | brlcad | nothing wrong with that approach |
| 15:45.08 | brlcad | and in most other contexts, calling libged would be fine too |
| 15:45.26 | abhi2011 | umm so why not in this case too |
| 15:45.33 | brlcad | if anything, you can read the source for ged_bb() and follow the functions to see how it computes the bb |
| 15:45.42 | abhi2011 | yes i did that |
| 15:45.52 | abhi2011 | i know how to use the librt functions now |
| 15:46.01 | brlcad | so then it should be very clear and trivial to convert ;) |
| 15:46.09 | abhi2011 | yep :) |
| 15:46.25 | brlcad | this case is different because you're also implementing a libged function |
| 15:46.49 | abhi2011 | so we cannot use other libged functions ? |
| 15:47.04 | abhi2011 | that are exported...just curious |
| 15:47.04 | brlcad | ged functions shouldn't be built on other ged functions when the common functionality has already been refactored into librt |
| 15:47.10 | brlcad | it just adds layered complexity |
| 15:47.11 | abhi2011 | ah ok |
| 15:47.22 | abhi2011 | and will introduce delays |
| 15:47.23 | brlcad | as well as slows things down |
| 15:47.25 | brlcad | nods |
| 15:47.27 | abhi2011 | yep |
| 15:47.55 | brlcad | the slow down in negligible for interactive use, but is significant for programmatic use |
| 15:48.14 | abhi2011 | yah...we want real time motion..yay ! |
| 15:48.18 | abhi2011 | :) |
| 15:49.16 | abhi2011 | by the way I was wondering, brl cad was used before my usmil right |
| 15:49.35 | abhi2011 | so they moved on to other software and open sourced this ? |
| 15:50.40 | abhi2011 | I was looking for some of the full forms of the primitives like tgc in google and I came across this : http://www.digitaldogma.org/archive/MikeMuuss/papers/brlcad5.0/html/mged/tableofcontents2_1.html |
| 16:16.49 | *** join/#brlcad survery (~thomas@dslb-178-007-120-202.pools.arcor-ip.net) | |
| 16:17.05 | *** part/#brlcad survery (~thomas@dslb-178-007-120-202.pools.arcor-ip.net) | |
| 16:21.16 | bhinesley | abhi2011: that makes sense. I was looking for calls directly to db_lookup in your pastbin; I didn't catch that. Glad you got it working. |
| 16:24.39 | abhi2011 | bhinesley: yep, converting to use only rt now |
| 17:22.49 | CIA-62 | BRL-CAD: 03starseeker * r45768 10/brlcad/trunk/misc/CMake/CompilerFlags.cmake: Was getting too clever for my own good. If ADD_NEW_FLAG comes in empty, don't do anything - should avoid the error on Windows |
| 17:28.03 | CIA-62 | BRL-CAD: 03r_weiss * r45769 10/brlcad/trunk/include/raytrace.h: |
| 17:28.03 | CIA-62 | BRL-CAD: Added an entry into the 'raytrace.h' header for a new function 'nmg_keu_zl' |
| 17:28.03 | CIA-62 | BRL-CAD: which removes all zero length edgeuse from an nmg shell. This function is |
| 17:28.03 | CIA-62 | BRL-CAD: disabled by default and is a work in progress. This function supports the |
| 17:28.03 | CIA-62 | BRL-CAD: prototype version of 'nmg_triangulate_fu'. |
| 17:31.08 | CIA-62 | BRL-CAD: 03r_weiss * r45770 10/brlcad/trunk/src/librt/primitives/nmg/nmg_mk.c: |
| 17:31.08 | CIA-62 | BRL-CAD: Added a new function 'nmg_keu_zl' which removes all zero length edgeuse from an |
| 17:31.08 | CIA-62 | BRL-CAD: nmg shell. This was added into file 'nmg_mk.c'. This function is disabled by |
| 17:31.08 | CIA-62 | BRL-CAD: default and supports the prototype version of 'nmg_triangulate_fu'. This is a |
| 17:31.08 | CIA-62 | BRL-CAD: work in progress. |
| 17:42.59 | CIA-62 | BRL-CAD: 03r_weiss * r45771 10/brlcad/trunk/src/librt/primitives/tor/tor.c: (log message trimmed) |
| 17:42.59 | CIA-62 | BRL-CAD: Updated function 'rt_tor_tess' within file 'src/librt/primitives/tor/tor.c' by |
| 17:42.59 | CIA-62 | BRL-CAD: adding a call to function 'nmg_keu_zl' which removes all zero length edgeuse. |
| 17:42.59 | CIA-62 | BRL-CAD: Under certain conditions the function 'rt_tor_tess' will create a tessellated |
| 17:42.59 | CIA-62 | BRL-CAD: torus which contains zero length edgeuse which is invalid and causes a crash in |
| 17:43.00 | CIA-62 | BRL-CAD: later functions. An example of a torus which causes a crash during 'facetize' is |
| 17:43.00 | CIA-62 | BRL-CAD: object 'old.s82' within the 'm35.g' sample model. This change is disabled by |
| 18:18.57 | CIA-62 | BRL-CAD: 03kunigami * r45772 10/brlcad/trunk/src/rt/view.c: added a dedicated buffer to keep partial sums on multi-sample modes |
| 18:24.54 | CIA-62 | BRL-CAD: 03kunigami * r45773 10/brlcad/trunk/src/rt/view.c: had left behind a debug message |
| 18:27.20 | ``Erik | mysql removed from osX.7, nice |
| 19:04.33 | CIA-62 | BRL-CAD: 03brlcad * r45774 10/brlcad/trunk/include/vmath.h: add missing zero macros, HNEAR_ZERO(), VZERO(), V2ZERO(), & HZERO() |
| 19:04.43 | CIA-62 | BRL-CAD: 03r_weiss * r45775 10/brlcad/trunk/src/librt/primitives/nmg/nmg_tri.c: (log message trimmed) |
| 19:04.43 | CIA-62 | BRL-CAD: Added new functions 'print_loopuse_tree', 'nmg_classify_pt_loop_new', |
| 19:04.43 | CIA-62 | BRL-CAD: 'nmg_classify_lu_lu_new', 'insert_above', 'insert_node' and |
| 19:04.43 | CIA-62 | BRL-CAD: 'nmg_build_loopuse_tree' to file 'nmg_tri.c'. These function are prototype |
| 19:04.44 | CIA-62 | BRL-CAD: functions which support the prototype version of 'nmg_triangulate_fu'. Some of |
| 19:04.44 | CIA-62 | BRL-CAD: these functions may have their names changed or moved to a more appropriate |
| 19:04.45 | CIA-62 | BRL-CAD: location within the code. These functions are the beginning of code which |
| 19:05.34 | *** join/#brlcad abhi2011 (~chatzilla@ip170-79-211-87.adsl2.static.versatel.nl) | |
| 19:20.56 | brlcad | kunigami: it might be beneficial in the long run to use a long or floating point accumulation buffer |
| 19:21.31 | kunigami | yup I'm using long |
| 19:21.47 | brlcad | awesome, missed that ;) |
| 19:24.41 | brlcad | that means we'll be able to accumulate about 16M passes before the buffer is "full" (at 32-bit) .. that's a lot of hypersampling ;) |
| 19:25.59 | *** join/#brlcad piksi (piksi@pi-xi.net) | |
| 19:27.04 | kunigami | when adding inside sh_osl, I could have values greater than 1.0, but with averages bellow 1.0. Thus, it was not "clamped". now, if I have any component greater than 1.0, it will be clamped and the average will be near 0 if the other components are 0. I have a test Scenesthat relies on strong brightnes. It was rendered nicely before, but now it is too dark. Would be wrong if I avoid clamping the components of the sum, but only the sum itself? |
| 19:38.58 | brlcad | kunigami: if I understand you correctly (and I'm not 100% sure that I do), then yes.. you can use the buffer as an accumulation buffer and clamp/average/downsample at some later processing stage |
| 19:42.24 | brlcad | for hypersampling, for example, instead of accumulating "value/#rays" for each hypersample ray (i.e. val/#rays * #rays => final_value), it would accumulate "value" as-is (resulting in "value * #rays" in the buffer), then divide by the #rays at the end or scale to 255 or whatever |
| 19:45.46 | CIA-62 | BRL-CAD: 03brlcad * r45776 10/brlcad/trunk/BUGS: a torus with a zero sized inner diameter results in zero-length edges during tessellation. nmg_keu_zl() could remove them, but it implies there is a flaw in the rt_tor_tess() logic not accounting for the edge case. |
| 19:46.43 | brlcad | kunigami: did my response make sense about the two different options? |
| 19:50.42 | kunigami | brlcad: yes, that makes sense. I'll do the same way as hypersampling, thanks |
| 20:40.49 | *** join/#brlcad merzo (~merzo@59-47-132-95.pool.ukrtel.net) | |
| 21:26.36 | *** join/#brlcad abhi2011 (~chatzilla@ip170-79-211-87.adsl2.static.versatel.nl) | |
| 21:46.33 | CIA-62 | BRL-CAD: 03kunigami * r45777 10/brlcad/trunk/src/rt/ (do.c view.c): changed the accumulator buffer to float so that it saves the raw components of ap.a_color before theyre clamped. We only expand and clamp it when moving the partial sums to scanline |
| 22:01.47 | *** join/#brlcad Yoshi477 (~jan@d72-39-60-53.home1.cgocable.net) | |
| 22:14.43 | abhi2011 | so I am trying to get the bb now using librt only |
| 22:14.52 | abhi2011 | here is the code so far : http://bin.cakephp.org/view/570066725 |
| 22:15.12 | abhi2011 | I run it as ./a.out dome.g sph2.s rcc2.s |
| 22:15.34 | abhi2011 | the objects are present in the dome.g database file as I can see them in archer |
| 22:15.58 | abhi2011 | yet : db_lookup(sph2.s) failed: sph2.s does not exist |
| 22:16.07 | abhi2011 | so I am debugging with gdb now |
| 22:16.53 | abhi2011 | and I saw that inside db_lookup there is a line that tries to hash the name 'sph2.s' (when its being looked up) |
| 22:17.56 | abhi2011 | line 230 : dp = dbip->dbi_Head[db_dirhash(name)]; |
| 22:18.38 | abhi2011 | the hash for 'sph2.s' is 747 which is why dbip->dbi_Head[db_dirhash(name)]; returns null and consequently the lookup fails |
| 22:23.15 | abhi2011 | probably the hash value can be anything, but perhaps its out of range in this case of the array dbi_Head[] |
| 22:31.29 | abhi2011 | perhaps its because the objects sph2.s and rcc2.s are leaves, that is they are not children of higher levels groups |
| 23:01.48 | abhi2011 | probaly the directory is not built up already as in the rtexample.c |
| 23:13.24 | abhi2011 | ok easier to use rtip = rt_dirbuild(argv[1], title, sizeof(title)); |
| 23:13.47 | abhi2011 | and rt_gettree(rtip, argv[2]) with bb calculated using rt_prep_parallel(rtip, 1); |
| 23:24.19 | ``Erik | *reads he pastebin* yeah, you do need an rt_prep somewhere in there, that's where the bb gets set |
| 23:25.28 | abhi2011 | well yes, but I did not reach that far in that code, the db_lookup() called from db_string_to_path() in line 50, barfed well before that ! |
| 23:25.40 | abhi2011 | I guess cause there was no directory built up |
| 23:26.14 | abhi2011 | this command would normally get called from inside mged when rtip would have a valid directory setup containing the structure of the model |
| 23:26.44 | abhi2011 | but for the command line program its probably not so, so I have to start by calling rt_dirbuild() |
| 23:27.36 | ``Erik | hm, yeah (not too familiar with the very early stages of opening/parsing a .g, myself), I think you're right |
| 23:28.23 | ``Erik | some of the src/conv/ programs use prepared geometry and are quite a bit simpler than the src/rt stuff... might be worth poking around in there for examples |
| 23:28.49 | CIA-62 | BRL-CAD: 03bhinesley * r45778 10/brlcad/trunk/src/libged/edit.c: |
| 23:28.49 | CIA-62 | BRL-CAD: Started on functions that convert db_full_path objects to points (natural |
| 23:28.49 | CIA-62 | BRL-CAD: origin/bounding box center); WIP. edit() was getting a bit difficult to read, |
| 23:28.49 | CIA-62 | BRL-CAD: which has led to several bugs, so I broke out batch expansion code into |
| 23:28.49 | CIA-62 | BRL-CAD: edit_arg_expand(). There are still some problems preventing this from working, |
| 23:28.50 | CIA-62 | BRL-CAD: but I haven't commited in a while and need to. Several changes to struct |
| 23:28.51 | CIA-62 | BRL-CAD: edit_arg helper functions; needed more versatility |
| 23:29.07 | abhi2011 | ah ok, umm why the 'conv' are they converted from some other library or something ? |
| 23:30.05 | ``Erik | converting between formats |
| 23:30.38 | bhinesley | abhi2011, the HACKING file tells you what the major directories are for |
| 23:31.05 | ``Erik | g-shell-rect.c fires rays to solve new geometry |
| 23:31.35 | ``Erik | um, also; the rtcmp toplevel project has an rt directory with a VERY minimal and simple example of how to get rt firing rays at geometry |
| 23:33.09 | abhi2011 | ah yes right thanks Erik and bhinesley |
| 23:33.13 | ``Erik | which is rt_dirbuild(); rt_gettree(); rt_prep_parallel(); |
| 23:34.45 | abhi2011 | the rtcmp sounds interesting, will have a look |
| 23:36.01 | ``Erik | it's minimal and hackish, was to compare performance/correctness between 3 raytracing engines |
| 23:36.14 | ``Erik | not "production" code :) |
| 23:36.57 | abhi2011 | ok, yah I just need a quick intro to raytracing using brlcad |
| 23:40.13 | ``Erik | http://brlcad.svn.sourceforge.net/viewvc/brlcad/rtcmp/trunk/rt/rt.c?revision=34030&view=markup |
| 23:40.52 | ``Erik | that's about as simple as it gets... the hit() function is a bit more than you might need, but the rest... :) |
| 23:47.00 | abhi2011 | hmm I understand most of it except the hit function |
| 23:47.22 | abhi2011 | seems its partitioning the 3d space around the point where the ray hit some geometry |
| 23:47.46 | abhi2011 | and calculating the outward pointing normal at that point on its surface....wild guess |
| 23:48.45 | ``Erik | yeah, rt_shootray() needs hit and miss callbacks set in the application structure and calls one of them depending on what happened |
| 23:49.00 | ``Erik | the hit function gets fed a boolean evaluated "partition list" |
| 23:49.28 | ``Erik | my hit() function there is solving normals and repacking the results into a different partition list format (for comparison) |
| 23:50.00 | ``Erik | if a_onehit is set, it'll only fill the first partition, useful for visual raytracing |
| 23:50.36 | abhi2011 | ok so these partitions represent cubiodal regions in 3d space ? |
| 23:51.29 | abhi2011 | i am thinking in terms of partitioning of the 3d space into 8 different regions around a point |
| 23:51.47 | abhi2011 | around the 3 axes |
| 23:52.06 | ``Erik | no, they're segments along the ray where it intersects geometry |
| 23:52.26 | abhi2011 | ah ok |
| 23:52.41 | abhi2011 | so some segments will be inside the geomtry and some outside |
| 23:53.06 | abhi2011 | which can be decided using the equation of a sphere for example if a sphere is the geometry |
| 23:53.28 | ``Erik | it does boolean evaluation before generating the partition list (using the boolweave() function in rt), so that's actual solid geometry in those partitions |
| 23:54.02 | abhi2011 | ok |
| 23:54.36 | ``Erik | if you have a 1 radius sphere at the origin and subtract an arb8 that's across an origin plane and shoot perpendicular to that plane, you'll see a partition that says "I hit a sphere from 1,0,0 to 0,0,0" |
| 23:54.47 | ``Erik | is that confusing enough? :D |
| 23:56.02 | abhi2011 | no I am getting it slowly :P, but I am familiar with all the short forms of the primitves yet, so arb8 is a rectangle or a plane ? |
| 23:56.19 | abhi2011 | *not familiar |
| 23:56.19 | ``Erik | arb8 is a box |
| 23:56.22 | abhi2011 | ok |
| 23:57.04 | abhi2011 | right i get it |
| 23:57.32 | abhi2011 | but wait we have subtracted an arb8 |
| 23:57.36 | ``Erik | http://brlcad.org/gallery/d/170-2/primitives.png |
| 23:57.48 | abhi2011 | so there is a hollow region inside the sphere |
| 23:57.56 | ``Erik | well, a sphere cut in half |
| 23:58.04 | abhi2011 | ah yes right |
| 23:58.42 | abhi2011 | ah cool thats handy |