Hi, I am a PhD student majoring in computer graphics, I am so interested in
Plate Mode NURBS raytracing and want to get involved in this project.
As suggested by @starseeker, I have tried to do raytracing with BoTs(a flat
plane with few trangles) both in plate mode and normal mode, yes, they are
different. After disscussing with @starseeker, I almost get the gist of
plate mode, it uses *thickness* to describe a kind of property of
infinitely thin surface, so when doing raytracing, we can get in/out hit
point. (Thanks for reminding me BRL-CAD is used for solid modeling, what we
want is a solid model but not a single surface.) Then, I follow the
code(rtshot.c) step by step, and have some problems listed as follows?
1. it seems to check the enclosure of surface at the beginning of
raytracing for BoTs, for example, if I want to add plate mode for NURBS, do
I need to check if the NURBS surface is closed first?
2. besides, I find that, for BoTs, the *thickness* for each triangle is the
same(self-defined by me cause I use obj-g to generate BRL-CAD database),
then I want to know do we need an adaptive method the define the
*thickness* with a given threshold, for example, considering different
surface area with different curvature, maybe we need to handle it
differently?
I also have tried 'extreme_ssi_test.g', this database consists two
non-closed NURBS surfaces, I try to use rtshot to do raytracing, but it
does not hit anything. I am a little bit confused, why can't we even get
one hit point?
Another example is 'brep_cobb', it consists six discreted NURBS surfaces
but contains a volume, I also do the same thing, but now I can get the hit
points(both in and out point). So from this, I mean, the closure of NURBS
surface is so important for raytracing scheme?
With @starseeker's suggestion and my own understanding, we have two methods
so far for NURBS plate mode raytracing. The first one is, after finishing
the first hit, along the ray direction and forwarding *thickness* distance
to get the second(out) hit point(Maybe it is similar to the operation of
BoTs). Another is the hit has a normal, and we can take the *thickness*
value and generate two new points, one back in the direction of surface
normal, and the other in the opposite direction normal, that is to say, the
hit point becomes a mid-point now.
And I am so interested in NURBS plate mode, so could you please give me
some suggestions? Or where can I start now? I know brep.cpp is a collection
of NURBS operations, maybe it is a good start.. Besides, could you give me
some hints on how to proceed and something that I need to pay attentions
to? Thanks.
Best,
Bojian
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://makebettercode.com/inteldaal-eval
_______________________________________________
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel