IRC log for #brlcad on 20180306

00:06.29 *** join/#brlcad kintel (~kintel@unaffiliated/kintel)
01:18.44 *** join/#brlcad infobot (ibot@rikers.org)
01:18.44 *** topic/#brlcad is BRL-CAD and open source CAx discussion ! Also @ http://brlcad.zulipchat.com ! Logs @ http://infobot.rikers.org/%23brlcad/
01:59.32 DenisP Hello guys. I wanted to talk about GSOC Appleseed integration project again.
02:00.21 DenisP I have looked through GCI tasks as you adviced and currently I am experimenting with appleseed plugin system. So far, I have implemented two procedural objects, for sphere and ellipse. Basically I just assigned intersection/occlusion callbacks to BLR-CAD intersection functions (for sphere it's rt_sph_shot(...), for ellipse it's rt_ell_shot(...)) and it works fine.
02:01.01 DenisP Here is the picture: boxes are rendered with appleseed traversal routines, and sphere/ellipse with brl-cad intersection functions.
02:01.07 DenisP dropbox.com/s/13b0ch6fs4u6hay/sphere_ellipse.png?dl=0
02:02.16 DenisP This plugin system is great by the way. I have been using Intel Embree in my renderer for some time already and it's got almost the same API with callbacks for custom geometry.
02:03.40 DenisP As for mesh ray tracing, I am not sure yet how to integrate kdtree bulding/traversal into the procedural object and there's also an issue of effective parallelization and resources allocation (for me, at this point brl-cad's memory allocation system seems pretty much complicated).
02:04.36 DenisP So, I am not sure yet if this project is possible without rewriting appleseed's core (at least a little). But I think it's better to start with plugin approach anyway even if it may be a bit slower than with native rt_shootray mechanism.
02:04.45 DenisP What do you think about it?
02:05.50 DenisP Oh, by the way, I have been thinking about making some bugfixes and I liked this ticket: sourceforge.net/p/brlcad/bugs/368/ . Do you know if anyone is working on it right now? And also, is there a FAQ with all Archer commands or something like this?
02:12.12 *** join/#brlcad DenisP_ (d40d70a2@gateway/web/freenode/ip.212.13.112.162)
02:49.45 *** join/#brlcad Radicarian (~Radicaria@cpe-72-231-246-183.buffalo.res.rr.com)
03:07.12 *** join/#brlcad kintel (~kintel@unaffiliated/kintel)
03:10.23 *** join/#brlcad merzo (~merzo@179-11-133-95.pool.ukrtel.net)
03:37.53 brlcad DenisP_: major props!
03:47.59 brlcad that's certainly a way to get attention... awesome demonstration of progress
03:50.49 brlcad one major step during GSoC (or perhaps before at the rate you're going) is to implement just one procedural object type for "brl-cad" geometry, and call rt_shootray() for the intersection function
03:51.08 brlcad that should then get full rendering of any brl-cad geometry, no matter the representation type
03:52.21 brlcad performance isn't even on the table at this point because the goal is high-end rendering features on brl-cad geometry, and production-quality integration with BRL-CAD
03:56.39 brlcad once basic intersection is working, next step would probably be displaying some material properties, color at a minimum
03:57.55 brlcad at that point, things get a bit more tricky but a bridge to be crossed later
03:59.17 brlcad as for integrating kdtree building/traversal, it's probably simpler than you realize -- you just need to call rt_dirbuild() and rt_prep_parallel() prior to all the rt_shootrays(), presumably during some procedural object load
04:00.39 brlcad you can rt_shootray() in parallel by initializing brl-cad API resource structures -- many examples of this: grep rt_init_resource src/*/*.c
04:00.49 brlcad that's also called during prep
04:01.01 brlcad (prior to rt_prep_parallel())
04:04.39 DenisP_ Wait, isn't rt_shootray() working for the whole scene?
04:06.11 brlcad what do you mean exactly?
04:09.35 DenisP_ Let's say we have a simple program like rtexample. First we load the scene and build the kd-tree. Then we call rt_shootray() which goes through the whole kd-tree and returns some data about the hit, right?
04:10.15 brlcad s/kd-tree/spatial partitioning/, but yes
04:10.51 brlcad the type of partitioning in brl-cad depends on the type of geometry being prep'd
04:11.39 DenisP_ When we make procedural objects in appleseed we override functions for bbox construction around the object and intersection/occlusion. And when the appleseed casts a ray into the scene, depending on the bounding box the ray hits, it calls the correspoding intersection function. So, we kind of already know the object the ray is going to hit.
04:11.42 brlcad so you only load the scene and build the spatial partitioning once, during some load or init function
04:12.21 brlcad except you don't know :)
04:13.11 brlcad brl-cad geometry can be (and often is) super complicated inside a given box, you don't know what's there until you shoot the ray and get hits
04:13.46 brlcad simple spheres and boxes are degenerate simple cases that we don't even really think about because they're kind of rare outside of testing
04:14.48 DenisP_ Oh, okay, I get it. You want to load the whole scene inside one Procedural object instead of procedural objects for each kind of geometry.
04:14.59 DenisP_ Yeah, that's probably will be even simpler
04:15.15 brlcad remember (or know) that there is intrinsic support for boolean operations, which by definition means you don't know where the hit is until after the boolean is processed which is after intersections are known
04:17.53 brlcad you might also be worrying about performance, but rt_shootray() tracing is generally millions of rays per second per cpu core, and you will need to support shooting in parallel
04:19.06 brlcad that material properties bridge will make things a bit more complicated, no longer one procedural object, but again that's a bridge to be crossed later
04:20.07 brlcad that requires a bit more in-depth understanding of how CAD geometry differs from content modeling (e.g., region hierarchy vs triangle mesh nodes)
04:22.48 brlcad oh also, you can get at bounding boxes after calling rt_prep_parallel() for setting up the procedural bounding box
04:23.20 brlcad similar code to what you need in src/libged/bb.c -> src/libged/get_obj_bounds.c
04:23.29 brlcad bb command in mged/archer
04:23.56 brlcad DenisP_: can you tell me a bit about your background?
04:26.52 DenisP_ Sure, one sec.
04:39.29 DenisP_ I've got a bachelor degree in software engineering from Higher School of Economics, Moscow, Russia. Currently I am enrolled in master's program in computer science, also there at HSE. I am doing my thesis at Moscow State University's graphics lab. It's about Gradient-domain rendering. Overall, I have been doing computer graphics for about 3 years. First it was real-time rendering, physics engine and stuff, and since my bachelor's t
04:39.55 DenisP_ it's physically-based rendering. Regarding open-source, well. For a few years, during summer internships at ROSA lab, I have been contributing to ROSA Fresh linux distro. It's not really computer graphics related, but I have developed a small QT-based Bluetooth app for LXQT and have built a few dozens of Python packages :) I also have been writing some small stuff for the inhouse renderer at the graphics lab I do my thesis at.
05:23.59 brlcad DenisP_: thanks, excellent intro
05:24.49 brlcad hadn't heard about gradient-domain rendering (or at least not something I've retained if I have come across it before)
05:26.35 brlcad sounds like an excellent background for this task, possibly a relevant extension into our performance rendering goals too (converting BRL-CAD's ray pipeline to being a more memory coherent and vectorizable)
05:27.10 DenisP_ >hadn't heard
05:27.11 brlcad interesting that you're at an econ school studying graphics
05:27.12 DenisP_ Well, currently it's not really production-suitable. Though Gradient-domain Path Tracing / MLT gives pretty good results.
05:54.04 *** join/#brlcad kintel (~kintel@unaffiliated/kintel)
05:54.58 *** join/#brlcad kintel (~kintel@unaffiliated/kintel)
05:55.42 *** join/#brlcad kintel (~kintel@unaffiliated/kintel)
05:55.57 *** join/#brlcad witness (uid10044@gateway/web/irccloud.com/x-rgmcgjjevyxnumdy)
07:41.48 *** join/#brlcad yukonbob (~bch@S01069050ca2cbf63.ok.shawcable.net)
07:53.37 *** join/#brlcad merzo (~merzo@239-0-132-95.pool.ukrtel.net)
08:40.00 *** join/#brlcad yukonbob (~bch@24.70.185.109)
11:34.50 *** join/#brlcad teepee- (bc5c2133@gateway/web/freenode/ip.188.92.33.51)
12:53.58 *** join/#brlcad yorik (~yorik@2804:431:f721:5f78:290:f5ff:fedc:3bb2)
12:57.37 *** join/#brlcad merzo (~merzo@185.39.197.205)
14:07.15 *** join/#brlcad kintel (~kintel@unaffiliated/kintel)
15:06.33 *** join/#brlcad DenisP (d40d70a2@gateway/web/freenode/ip.212.13.112.162)
15:59.19 *** join/#brlcad sreyansh (cb6ef205@gateway/web/freenode/ip.203.110.242.5)
16:35.48 *** join/#brlcad yukonbob (~bch@S01069050ca2cbf63.ok.shawcable.net)
17:08.17 *** join/#brlcad yukonbob (~bch@S01069050ca2cbf63.ok.shawcable.net)
17:56.07 *** join/#brlcad gabbar1947 (uid205515@gateway/web/irccloud.com/x-hcnysufwkavsiydk)
18:15.16 *** join/#brlcad yukonbob (~bch@S01069050ca2cbf63.ok.shawcable.net)
18:17.38 *** join/#brlcad kintel (~kintel@unaffiliated/kintel)
18:37.17 *** join/#brlcad yorik (~yorik@2804:431:f720:76fa:290:f5ff:fedc:3bb2)
19:01.54 *** join/#brlcad yukonbob (~bch@S01069050ca2cbf63.ok.shawcable.net)
19:25.35 *** join/#brlcad teepee (~teepee@p578EC75F.dip0.t-ipconnect.de)
19:31.52 *** join/#brlcad Guest53861 (~teepee@unaffiliated/teepee)
19:34.21 *** join/#brlcad yukonbob (~bch@S01069050ca2cbf63.ok.shawcable.net)
20:27.18 *** join/#brlcad teepee (~teepee@unaffiliated/teepee)
20:29.07 *** join/#brlcad yukonbob (~bch@S01069050ca2cbf63.ok.shawcable.net)
20:42.29 DenisP Hi. I have been wondering if I can find somewhere examples of BRL-CAD projects (.g files)?
20:43.11 DenisP I think I have got a working implementation of BRL-CAD procedural object, but I wanted to test it on complex scenes.
20:45.15 DenisP dropbox.com/s/gsyb99e8o062dqb/brlcadobject.png?dl=0
22:05.13 *** join/#brlcad DenisP (d40d70a2@gateway/web/freenode/ip.212.13.112.162)
23:45.29 *** join/#brlcad DaRock (~Thunderbi@mail.unitedinsong.com.au)
23:57.34 *** join/#brlcad DaRock1 (~Thunderbi@mail.unitedinsong.com.au)

Generated by irclog2html.pl Modified by Tim Riker to work with infobot.