00:05.53 | Notify | 03BRL-CAD:starseeker * 69738 (brlcad/trunk/src/external/CREO/assembly.cpp brlcad/trunk/src/external/CREO/part.cpp): Only do the skeleton check if we have a model on which to run that check... |
00:19.21 | *** join/#brlcad infobot (ibot@rikers.org) |
00:19.21 | *** topic/#brlcad is GSoC students: if you have a question, ask and wait for an answer ... responses may take minutes or hours. Ask and WAIT. ;) |
00:22.33 | *** join/#brlcad teepee_ (~teepee@unaffiliated/teepee) |
00:44.04 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) |
02:16.02 | Notify | 03BRL-CAD:brlcad * 69739 (brlcad/trunk/src/libnmg/nurb_bezier.c brlcad/trunk/src/libnmg/nurb_oslo_calc.c and 2 others): more static analyzer quellage, all valid |
02:20.43 | starseeker | brlcad: hmm... I'll have to see if I can construct a minimal test case |
02:20.46 | starseeker | it was on Windows |
02:21.06 | starseeker | reid calling get_regions was what triggered it |
02:25.53 | brlcad | k, reid works on that case I made too |
02:26.33 | brlcad | only issue I'm seeing so far is that you can't "l -foo.r" because of the dash, you have to "l -- -foo.r" |
02:27.22 | starseeker | nods |
02:27.36 | starseeker | how are you creating the region named -foo.r ? |
02:27.44 | starseeker | can't get one dash in front |
02:34.35 | *** join/#brlcad yorik (~yorik@2804:431:f721:6332:290:f5ff:fedc:3bb2) |
02:40.24 | brlcad | cp whatever -foo.r |
02:40.34 | starseeker | ah :-) |
02:40.46 | starseeker | was trying to get make to do it - didn't think of cp |
02:41.20 | starseeker | (quoting rules kinda suck for this - apparently it's impossible to quote a name like -foo.r for make) |
02:41.51 | Stragus | Hey guys, I don't know if you ever used meshdecimation.c somewhere, but it was in the BRL-CAD tree |
02:42.09 | brlcad | Stragus: yep, it's still there |
02:42.14 | Stragus | Anyway, I did an update with minor API breakage, improved robustness (will handle broken topology) and other goodies |
02:42.28 | starseeker | sweet! |
02:43.23 | starseeker | https://sourceforge.net/p/brlcad/code/HEAD/tree/brlcad/trunk/src/librt/primitives/bot/gct_decimation/ |
02:43.23 | gcibot_ | [ BRL-CAD / Code / [r69739] /brlcad/trunk/src/librt/primitives/bot/gct_decimation ] |
02:43.33 | starseeker | our copy is living in there atm |
02:43.54 | Stragus | It now has the features required to be able to decimate meshes with per-triangle data, like materials, with a per-edge "custom weight" callback where materials differ, and so on |
02:44.01 | Stragus | http://www.rayforce.net/meshdecimation.c http://www.rayforce.net/meshdecimation.h |
02:44.13 | Stragus | You would have to check the API though, it has changed |
02:44.18 | brlcad | well, and src/other/gct/MeshDecimation ... but needs to be cleaned up |
02:46.40 | starseeker | Stragus: do you have any standard set of CMake detection tests for the various CPU_ENABLE_SSE style flags? |
02:47.06 | brlcad | notes there were 16 patches made |
02:47.12 | brlcad | er, 61 |
02:47.36 | Stragus | CPU_ENABLE_SSE is basically optional to force it. #if __SSE__ || _M_X64 || _M_IX86_FP >= 1 should be pretty reliable |
02:47.39 | starseeker | doesn't know that he ever got the proper tests in there for all the high performance SSE stuff - some of those patches may have been disabling stuff.. |
02:48.04 | starseeker | Stragus: ah, so the compiler itself (or rather its internals) should do the job? |
02:48.08 | Stragus | Yes |
02:48.21 | Stragus | Well, it works for GCC, clang, ICC and MSVC. I guess that's enough |
02:48.27 | starseeker | heh :-) |
02:49.02 | starseeker | most likely problem children are probably older gcc verisons |
02:50.29 | starseeker | Stragus: did you ever put together your nanovg/nanogui slaying high performance OpenGL widget set? |
02:50.44 | starseeker | remembers catching it for being interested in fontstash... |
02:51.09 | Stragus | Not really, if you only want font rendering... I could share my Freetype-based font manager |
02:51.44 | Stragus | The GUI itself isn't unfinished and undocumented with a monstrous API, so that's probably not a good idea :) |
02:51.52 | starseeker | heh |
02:52.14 | starseeker | regrettably, our own GUI layers are still primitive enough that it'll probably be a while before we need to worry about it :-( |
02:52.44 | starseeker | we're still using the glx/wgl specific libdm backends |
02:52.55 | starseeker | quietly beats head on desk... |
02:54.11 | starseeker | Stragus: are teh mmatomic, mmhash, etc files still pretty much the same, or have they been updated as well? |
02:54.50 | Stragus | Okay, here's probably everything that matters: http://www.rayforce.net/brlcad/ |
02:54.50 | gcibot_ | [ Index of /brlcad ] |
02:56.27 | Stragus | I uploaded fontmanager.* but it's independent of the "renderer" itself, basically a struct with a bunch of function pointers |
02:56.39 | brlcad | Stragus: do you happen to keep that in a repo? |
02:57.01 | Stragus | Sorry, not really, git and I... don't get along |
02:57.28 | brlcad | i recall we ran into a ton of portability issues, and redoing all of them doesn't sound too fun :) |
02:57.36 | Stragus | Agreed |
02:57.53 | Stragus | I probably fixed many of them myself... mmthread.h even compiles on MSVC and uses native windows threads |
02:57.59 | brlcad | looking at the log, looks like about 14,000 lines got edited |
02:58.04 | Stragus | Darn |
02:58.10 | brlcad | but might be a lot of formatting updates, could be misleading |
02:58.45 | starseeker | vaguely remembers the older gccs Redhat and OpenBSD use being issues... |
02:58.46 | brlcad | I do know a few specific things like instead of requiring c++11, it was ported to tinycthread |
02:59.06 | brlcad | and runtime sse detection was added |
02:59.25 | Stragus | Runtime SSE detection should be less an issue these days |
03:00.24 | Stragus | Well, the old meshdecimation had this little "problem" that if the mesh's topology was incorrect/broken, it could crash |
03:00.40 | starseeker | https://access.redhat.com/solutions/19458 - Stragus, how do these gcc versions do? |
03:00.43 | gcibot_ | [ What gcc versions are available in Red Hat Enterprise Linux? - Red Hat Customer Portal ] |
03:01.00 | starseeker | < gcc4 obviously don't count... |
03:01.34 | Stragus | It shouldn't require any modern GCC feature, I know it compiles with 4.9.3 |
03:01.57 | brlcad | runtime sse was for deployment, still very much an issue |
03:02.18 | brlcad | you compile on an sse system, but binaries get installed on somebody's machine without support -- crash |
03:02.39 | Stragus | True. But that machine would have to be from 2002 or something |
03:02.56 | brlcad | crash was hit before we even released just 2 years ago iirc |
03:03.12 | brlcad | yeah ... and? :) |
03:03.30 | starseeker | dinosaurs still walk the earth ;-) |
03:04.07 | Stragus | Eh. :) |
03:04.10 | brlcad | it wasn't hard to add runtime detection -- we already had a routine |
03:04.17 | brlcad | just had to hook it in the right places |
03:04.20 | Stragus | Right |
03:05.20 | brlcad | still worth getting this update because crashing on non-solid meshes sucks too |
03:05.30 | starseeker | very much worth doing if we can get additional robustness |
03:05.41 | brlcad | just wondering if there's a way we can get you any repatching for round 3 later? :) |
03:05.48 | Stragus | Non-solid was okay, the problem was two triangles sharing the exact same edge, like AB twice |
03:06.06 | brlcad | or get you commiting directly to repo or something |
03:06.23 | starseeker | will have to hit this with the faa models in brlcad/db/faa |
03:06.51 | starseeker | iirc, they blew up pretty spectacularly earlier (not much solid in the Generic_Twin...) |
03:07.00 | brlcad | decides he can wait and closes the browser window of 70" oled's |
03:07.14 | starseeker | hehehe |
03:08.50 | starseeker | is hoping the Dell 8K monitors come down from $5K in the next few years - that'll probably be the last monitor I ever need to buy |
03:09.21 | starseeker | Stragus: are you not set up to commit to BRL-CAD? |
03:09.22 | brlcad | Stragus: then there may be some other bugs still lurking -- the cases I ran into weren't duplication/sharing |
03:09.32 | Stragus | Oh, and we talked about sorting faster than qsort() a w hile... ccradixsort.h is all inlined and should be pretty good |
03:10.13 | Stragus | starseeker: I don't think so, and I would have difficulties testing my commits without tracing where it's used |
03:10.42 | Stragus | a while* ago |
03:10.55 | starseeker | nods - we could set up some unit testing - I'm thinking this would actually make sense at the libbg level, although brlcad may disagree |
03:12.15 | starseeker | checks where it's currently hooked in... |
03:13.19 | brlcad | all that's needed is to PRE-define what data types go with what libs, then there's not really much room for agreement or disagreement |
03:13.40 | brlcad | it's adding types for convenience that I resist, too many types makes for a bad lib |
03:14.03 | brlcad | overlapping types makes for confusion |
03:14.10 | brlcad | (and overhead) |
03:14.16 | starseeker | nods |
03:15.05 | starseeker | looks like rt_bot_decimate_gct is what's calling into gct right now |
03:16.58 | starseeker | Stragus: I think that may be the only bridge, so our API updating should be confined to that one function |
03:17.14 | Stragus | All right |
03:21.29 | starseeker | Stragus: I'll try to sneak some time to do some experimentation in the next couple days - I don't know if the FAA model decimations will be sensible, but I'm fairly sure they'll be mean ;-) |
03:21.46 | Stragus | What are these models? |
03:22.43 | starseeker | They're from an old FAA study back in 2004: http://www.tc.faa.gov/its/worldpac/techrpt/AR04-16.pdf |
03:23.29 | starseeker | we initially sucked them in for testing our FASTGEN importer, but they've also proven useful for BoT testing |
03:23.44 | Stragus | The models in the PDF seem pretty simple |
03:24.27 | starseeker | reasonably - otherwise we wouldn't want them in the main repo - but they're also not solid |
03:24.51 | Stragus | Well, let me know if something breaks |
03:25.21 | starseeker | nods - will do. They're obviously intended as a "stress test" for invalid inputs, not something that really *needs* decimation |
03:25.43 | starseeker | can always go grab the bigger stanford models for that :-) |
03:26.10 | starseeker | although I imagine you're there ahead of us |
03:26.37 | Stragus | And if you liked that guy's radix sort doing 50% faster (or whatever it was) than std::sort, try the SSE optimized ccradixsort (~500% times faster) |
03:26.52 | starseeker | :-) |
03:27.03 | starseeker | that's pretty cool |
03:27.43 | starseeker | Stragus: thanks for the heads up! |
03:28.06 | Stragus | :) You are welcome |
03:29.48 | starseeker | Stragus: now, how do we get you interested in robust boolean operations on meshes? ;-) |
03:30.25 | starseeker | ducks and runs |
03:31.12 | Stragus | Ah! :) I don't know much about that, it seems tricky |
03:31.36 | starseeker | there've been a number of interesting papers out in the last few years |
03:32.03 | starseeker | http://www.gilbertbernstein.com/resources/booleans2009.pdf for example |
03:33.57 | Stragus | I assume you already have "state of the art robust Boolean operations"? It's just slow? |
03:34.02 | starseeker | nope |
03:34.23 | starseeker | our facetize command is prone to crashing |
03:34.57 | Stragus | That sounds bad |
03:35.12 | starseeker | preferred approach was/is to convert CSG to NURBS brep, do the booleans in brep space, then mesh the final result |
03:35.44 | starseeker | we got some good GSoC work on that, and nreed has done some as well, but there is a ways to go yet to get that really working right |
03:35.59 | starseeker | in the meantime, we're stuck with the old NMG pipeline |
03:36.41 | Stragus | So the actual problem is converting a soup/hierarchy of CSG into triangles? |
03:37.12 | starseeker | well, that's one of them. There are also use cases for the NURBS model, but for shaded displays we've got to get to triangles |
03:38.09 | Stragus | Well, it does sound interesting. I'm so tired of physics. And I think I'm getting good with geometry problems |
03:38.21 | Stragus | The last little thing was a Constrained Delaunay Triangulation that's many times faster than supposed state of the art |
03:38.28 | starseeker | cool! |
03:38.45 | starseeker | we use poly2tri for that currently |
03:39.27 | Stragus | Here's my CDT in action: http://www.rayforce.net/cdttestgood.png in a couple milliseconds |
03:39.33 | starseeker | was kinda hoping to get some GSoC proposals on the geometric guts, but they're tough projects for a summer |
03:40.53 | starseeker | wow |
03:41.04 | starseeker | that's a mean input |
03:41.14 | Stragus | Yup, I was trying to break it :) |
03:42.52 | Stragus | And rendered with SSE optimized perfect antialised rendering... I'm writing weird stuff sometimes |
03:43.01 | starseeker | hehe |
03:44.27 | starseeker | if you really want to fry your brain, look into exact geometric computation: https://hal.inria.fr/inria-00344355/file/p.pdf |
03:45.17 | starseeker | for people who Really Care About Robustness |
03:45.31 | starseeker | *that's* some tough stuff to make fast |
03:47.30 | Stragus | It's always a good idea to design algorithms that consider the numerical accuracy of your floats |
03:48.50 | starseeker | nods - most geometry algorithms can't/don't though - if you have a point and a line in space, and your algorithm cares if the point is to the left or right of the line, you've got trouble |
03:49.23 | starseeker | https://www.mpi-inf.mpg.de/~mehlhorn/ftp/classroomExamplesNonrobustness.pdf |
03:49.43 | Stragus | The idea is generally to have a third scenario, "somehere about on the line", and have some way to manage that and still produce meaningful results |
03:49.54 | Stragus | I had to do that in the triangulation too |
03:50.47 | starseeker | Stragus: you'll probably have a better appreciation for the classroom examples of nonrobustness then :-) |
03:52.13 | starseeker | as I understand it, there are also different "categories" of robustness - once you add repeatability, things like "about on the line" get tricky because you can also get floating point noise interfering with when the call of "close" is made if platforms vary |
03:53.56 | Stragus | The idea is that whenever something is "close", you make it robust, you pick a decision and that's how it stays. "I decree and declare that A is on the LEFT of line B, forever and ever" |
03:53.59 | starseeker | Stragus: someday (in my infinite free time) i'd like to do some experimenting with ECG and other strategies like snap rounding |
03:54.25 | Stragus | That result can be stored in some space partitioning, hash table, or whatever; and you look it up whenever you are within the range of inaccuracy |
03:54.50 | starseeker | neat stuff |
03:56.02 | starseeker | has to call it a night - thanks again Stragus for letting us know about the robustness updates! |
03:56.08 | Stragus | Good night! |
05:47.48 | *** join/#brlcad KimK (~Kim__@2600:8803:7a81:7400:7d42:b42c:3d3:a22e) |
06:30.05 | *** join/#brlcad Caterpillar (~caterpill@unaffiliated/caterpillar) |
06:42.29 | *** join/#brlcad chenzhe (~Thunderbi@d66-222-134-161.abhsia.telus.net) |
09:39.00 | *** join/#brlcad HoloIRCUser3 (~holoirc@182.69.180.229) |
11:33.24 | *** join/#brlcad teepee (~teepee@unaffiliated/teepee) |
12:36.50 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) |
13:05.22 | *** join/#brlcad Sound (~Sound@94-37-105-8.adsl-ull.clienti.tiscali.it) |
13:05.36 | *** join/#brlcad Sound (~Sound@unaffiliated/sound) |
13:35.17 | starseeker | makes a note of https://github.com/Mysticial/FeatureDetector - might be worth comparing to our runtime detection... |
14:46.03 | *** join/#brlcad CuriousErnestBro (~CuriousEr@unaffiliated/curiousernestbri) |
15:54.16 | *** join/#brlcad teepee (~teepee@unaffiliated/teepee) |
16:00.30 | *** join/#brlcad yorik (~yorik@2804:431:f721:6332:290:f5ff:fedc:3bb2) |
16:30.27 | *** join/#brlcad sagarwal (~holoirc@182.69.180.229) |
16:34.09 | *** join/#brlcad sagarwal (~holoirc@182.69.180.229) |
17:07.04 | *** join/#brlcad gabbar1947 (uid205515@gateway/web/irccloud.com/x-hrjmxwfhoiqxkckz) |
17:22.59 | *** join/#brlcad chenzhe (~Thunderbi@2620:101:c040:7f7:34b5:80ef:37e:dc22) |
20:14.25 | *** join/#brlcad chenzhe (~Thunderbi@2620:101:c040:7f7:4c10:8311:f4b1:b44b) |
20:18.00 | Notify | 03BRL-CAD:starseeker * 69740 brlcad/trunk/src/external/CREO/part.cpp: Go with .s for solid extension. |
20:49.30 | *** join/#brlcad yorik (~yorik@2804:431:f721:bd20:290:f5ff:fedc:3bb2) |
21:28.44 | Notify | 03BRL-CAD:starseeker * 69741 brlcad/trunk/src/external/CREO/creo-brl.dat.in: Allow stopping of the plug-in |
22:20.12 | Stragus | starseeker: You could also compare with this: http://www.rayforce.net/brlcad/cpuinfo.c http://www.rayforce.net/brlcad/cpuinfo.h |
22:20.44 | Stragus | It also extracts information about the size of the caches, how they are shared between cores, etc. |
22:22.54 | Stragus | You just cpuGetInfo() and look what's in the struct |
23:15.51 | *** join/#brlcad teepee (~teepee@unaffiliated/teepee) |
23:16.30 | Notify | 03BRL-CAD:starseeker * 69742 brlcad/trunk/src/external/CREO/util.cpp: bu_log and CREO seem to be arguing about locking somehow or other... |
23:18.57 | Notify | 03BRL-CAD:starseeker * 69743 brlcad/trunk/src/external/CREO/main.cpp: tweak file opening logic... may switch to specifying strings in GUI, now that we've figured out how to increase the input buffer max length... |