https://brlcad.org/w/api.php?action=feedcontributions&user=Erik&feedformat=atomBRL-CAD - User contributions [en]2024-03-28T13:59:43ZUser contributionsMediaWiki 1.32.2https://brlcad.org/w/index.php?title=ARL_Technical_Reports&diff=7764ARL Technical Reports2014-11-01T10:19:59Z<p>Erik: remove spam</p>
<hr />
<div>These ARL documents are interesting both as reference and from a historical perspective. The HTML here was prepared in 1993 for distribution on ARL's web server. The original ARL web service was one of the first 500 web servers on the internet.<br />
<br />
* ''[http://brlcad.org/OLD/reports/tr-313/index.html Animation Techniques in BRL-CAD]'' December, 1993<br />
:Lee A. Butler, Christine Murdza<br />
* ''[http://brlcad.org/OLD/reports/arl-mr-103/index.html Practices and Standards in the Construction of BRL-CAD Target Descriptions]'' May, 1993<br />
:Paul H. Deitz, Keith Applin<br />
* ''[http://brlcad.org/OLD/reports/arl-tr-315/index.html IGES 4.0 to BRL-CAD Translator for CSG Models]'' December, 1993<br />
:John R. Anderson, Earl P. Weaver, Susanne L. Muuss <br />
<br />
[[Category:Documentation]]</div>Erikhttps://brlcad.org/w/index.php?title=ARL_Technical_Reports&diff=7763ARL Technical Reports2014-11-01T10:19:11Z<p>Erik: Undo revision 7759 by 108.61.101.141 (talk)</p>
<hr />
<div>These ARL documents are interesting both as reference and from a historical perspective. The HTML here was prepared in 1993 for distribution on ARL's web server. The original ARL web service was one of the first 500 web servers on the internet.<br />
<br />
* ''[http://brlcad.org/OLD/reports/tr-313/index.html Animation Techniques in BRL-CAD]'' December, 1993<br />
:Lee A. Butler, Christine Murdza<br />
* ''[http://brlcad.org/OLD/reports/arl-mr-103/index.html Practices and Standards in the Construction of BRL-CAD Target Descriptions]'' May, 1993<br />
:Paul H. Deitz, Keith Applin<br />
* ''[http://brlcad.org/OLD/reports/arl-tr-315/index.html IGES 4.0 to BRL-CAD Translator for CSG Models]'' December, 1993<br />
:John R. Anderson, Earl P. Weaver, Susanne L. Muuss <br />
<br />
<br />
http://www.papdan.com/seo-services-search-engine-optimisation.php <br />
<br />
[[Category:Documentation]]</div>Erikhttps://brlcad.org/w/index.php?title=ARL_Technical_Reports&diff=7762ARL Technical Reports2014-11-01T10:17:57Z<p>Erik: Reverted edits by 108.61.123.28 (talk) to last revision by 108.61.101.141</p>
<hr />
<div>These ARL documents are interesting both as reference and from a historical perspective. The HTML here was prepared in 1993 for distribution on ARL's web server. The original ARL web service was one of the first 500 web servers on the internet.<br />
<br />
* ''[http://brlcad.org/OLD/reports/tr-313/index.html Animation Techniques in BRL-CAD]'' December, 1993<br />
:Lee A. Butler, Christine Murdza<br />
* ''[http://brlcad.org/OLD/reports/arl-mr-103/index.html Practices and Standards in the Construction of BRL-CAD Target Descriptions]'' May, 1993<br />
:Paul H. Deitz, Keith Applin<br />
* ''[http://brlcad.org/OLD/reports/arl-tr-315/index.html IGES 4.0 to BRL-CAD Translator for CSG Models]'' December, 1993<br />
:John R. Anderson, Earl P. Weaver, Susanne L. Muuss <br />
<br />
<br />
http://www.papdan.com/seo-services-search-engine-optimisation.php <br />
<br />
[http://www.optimaweb.co.id Jasa Seo]<br />
<br />
[[Category:Documentation]]</div>Erikhttps://brlcad.org/w/index.php?title=Developer_Documents&diff=7732Developer Documents2014-08-30T21:04:44Z<p>Erik: Reverted edits by 82.253.105.191 (talk) to last revision by Sean</p>
<hr />
<div>[[Category:Design Documents]]<br />
[[category:Projects]]<br />
<br />
== Introduction ==<br />
If you are going to contribute and wish to be the part of ongoing development of BRL-CAD, you are highly recommended to read following introductory article to let you know the current roadmap of the project.<br />
<br />
[[An Introduction To New Developers]]<br />
<br />
== Development Projects ==<br />
<br />
* [[libpg : A parametrics/constraint library]] (old documentation)<br />
* [[libpc | libpc : Geometric Constraint Solving]]<br />
* [[Revolve Primitive]]<br />
* [[OpenGL GUI Framework]]<br />
* [[Metropolis_Light_Transport|Global Illumination using Metropolis Light Transport]]<br />
* [[Geometry Service]]<br />
* [[BRL-CAD's core C++ interface]]<br />
* [[Online Geometry]]<br />
<br />
== Developer FAQ ==<br />
<br />
=== I'm interested in BRL-CAD development. How can I get involved? ===<br />
<br />
* Join the IRC channel #brlcad at irc.freenode.net and/or the [http://lists.sourceforge.net/lists/listinfo/brlcad-devel developer mailing list]<br />
* Read the [https://brlcad.svn.sourceforge.net/viewvc/*checkout*/brlcad/brlcad/trunk/HACKING developer's guide]<br />
* Start [http://sourceforge.net/tracker/?func=add&group_id=105292&atid=640804 submitting patches]<br />
<br />
=== I'm trying to add a new file to the repository and I get an error on commit about mime types. What should I do? ===<br />
<br />
You should set the mime type. See [[mime-types]] for more information.<br />
<br />
== Developer Examples ==<br />
<br />
* [[Example_db_walk_tree|Using db_walk_tree()]]<br />
* [[:Category:Code examples]]<br />
<br />
== Development Tips ==<br />
* [[Compiling]]<br />
* [[Emacs]]<br />
* [[Visual Studio]]</div>Erikhttps://brlcad.org/w/index.php?title=ARL_Technical_Reports&diff=7731ARL Technical Reports2014-08-30T21:04:29Z<p>Erik: Reverted edits by 82.253.105.191 (talk) to last revision by Sean</p>
<hr />
<div>These ARL documents are interesting both as reference and from a historical perspective. The HTML here was prepared in 1993 for distribution on ARL's web server. The original ARL web service was one of the first 500 web servers on the internet.<br />
<br />
* ''[http://brlcad.org/OLD/reports/tr-313/index.html Animation Techniques in BRL-CAD]'' December, 1993<br />
:Lee A. Butler, Christine Murdza<br />
* ''[http://brlcad.org/OLD/reports/arl-mr-103/index.html Practices and Standards in the Construction of BRL-CAD Target Descriptions]'' May, 1993<br />
:Paul H. Deitz, Keith Applin<br />
* ''[http://brlcad.org/OLD/reports/arl-tr-315/index.html IGES 4.0 to BRL-CAD Translator for CSG Models]'' December, 1993<br />
:John R. Anderson, Earl P. Weaver, Susanne L. Muuss <br />
<br />
[[Category:Documentation]]</div>Erikhttps://brlcad.org/w/index.php?title=Summer_of_Code/Checklist&diff=7371Summer of Code/Checklist2014-06-25T22:57:34Z<p>Erik: mention posting midterm report to blog or wiki page</p>
<hr />
<div>Below is a checklist to help students get set up quickly. Items are categorized to help you prepare your application, get set up to work, and become familiarized with basic infrastructure.<br />
<br />
{| class="wikitable" style="width: 800px; padding: 8px; border: 1px solid #fff; text-align: left; background-color:#f7f7f7;"<br />
!colspan=5|<u>IN ORDER TO APPLY</u><br />
|-<br />
| style="width: 3%; text-align:center; vertical-align:top;"|<br />
| colspan=4|<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333; margin-right:4px;">1</div><br />
|colspan=4|Check out our [[Google_Summer_of_Code/Project_Ideas|Project Ideas]]<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">2</div><br />
|colspan=4|Introduce yourself! Don't be shy.<br><br />
{|width=100% style="font-size:75%"<br />
| style="width: 25%; background-color: #eee; text-align:center;"| BRL-CAD<br />
| style="width: 25%; background-color: #eee; text-align:center;"| OpenSCAD<br />
| style="width: 25%; background-color: #eee; text-align:center;"| LibreCAD<br />
| style="width: 25%; background-color: #eee; text-align:center;"| STEPcode<br />
|-<br />
|style="text-align:left;"|E-Mail: [https://lists.sourceforge.net/lists/listinfo/brlcad-devel brlcad-devel]<br />
|style="text-align:left;"|E-Mail: [http://rocklinux.net/mailman/listinfo/openscad openscad]<br />
|style="text-align:left;"|E-Mail: [http://forum.librecad.org/LibreCAD-dev-f4361976.html LibreCAD-dev]<br />
|style="text-align:left;"|E-Mail: [https://groups.google.com/forum/?fromgroups#!forum/scl-dev scl-dev]<br />
|-<br />
|style="text-align:left;"|Chat: [irc://irc.freenode.net/#brlcad #brlcad]<br />
|style="text-align:left;"|Chat: [irc://irc.freenode.net/#openscad #openscad]<br />
|style="text-align:left;"|Chat: [irc://irc.freenode.net/#librecad #librecad]<br />
|style="text-align:left;"|Chat: [irc://irc.freenode.net/#stepcode #stepcode]<br />
|}<br />
See [[IRC]] if you've never used it before. Ask specific questions and wait! [http://webchat.freenode.net/ Web interface here].<br />
<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px; height:25px; border:1px solid #333;">3</div><br />
|colspan=4|Begin your application, see [[Summer_of_Code/Application_Guidelines|our guidelines]]<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px; height:25px; border:1px solid #333;">4</div><br />
|colspan=4|Discuss and share your project details (don't wait!)<br><br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px; height:25px; border:1px solid #333;">6</div><br />
|colspan=4|See [[Google_Summer_of_Code/2013|some examples]] of awesome proposals, add detail to yours ''':)'''<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px; height:25px; border:1px solid #333;">7</div><br />
|colspan=4|'''[http://www.google-melange.com/ Submit] your application!'''<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px; height:25px; border:1px solid #333;">8</div><br />
|colspan=4|Make a useful patch ''(be awesome)''<br><div style="font-size:50%">(optional but recommended)</div><br />
|-<br />
|colspan=5|<br><br />
|-<br />
!colspan=5|<u>IF YOU GET SELECTED, BEFORE CODING BEGINS</u><br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">9</div><br />
|colspan=4|Agree to the [[Summer_of_Code/Acceptance|acceptance requirements]]<br><div style="font-size:50%">(you must do this in writing)</div><br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">10</div><br />
|colspan=4|Read our [[Summer_of_Code/Expectations|participation expectations]]<br><div style="font-size:50%">(read it ALL, we will quiz you later)</div><br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">11</div><br />
|colspan=4|Set up an interaction schedule with your mentors<br><div style="font-size:50%">(at least weekly)</div><br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">12</div><br />
|colspan=4|Fill out [http://brlcad.org/wiki/Google_Summer_of_Code/2014 your profile]<div style="font-size:50%">(one sentence summary, your name, link to proposal, dev log, and melange page)</div><br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">13</div><br />
|colspan=4|Get familiarized with web resources<br />
{|width=100% style="font-size:75%"<br />
| style="width: 25%; background-color: #eee; text-align:center;"| BRL-CAD<br />
| style="width: 25%; background-color: #eee; text-align:center;"| OpenSCAD<br />
| style="width: 25%; background-color: #eee; text-align:center;"| LibreCAD<br />
| style="width: 25%; background-color: #eee; text-align:center;"| STEPcode<br />
|-<br />
|style="text-align:left; vertical-align:top;"|[http://brlcad.org/ Web]<br>[http://brlcad.org/wiki/ Wiki Docs]<br>[http://sf.net/projects/brlcad SF Project Site]<br>[http://brlcad.svn.sourceforge.net/svnroot/brlcad/brlcad/trunk/HACKING Dev Rules]<br>[[Patches]]<br />
|style="text-align:left; vertical-align:top;"|[http://www.openscad.org/ Web]<br>[https://en.wikibooks.org/wiki/OpenSCAD_User_Manual User Manual]<br>[https://github.com/openscad/openscad/wiki Dev-Wiki]<br />
|style="text-align:left; vertical-align:top;"|[http://librecad.org/ Web]<br>[https://docs.google.com/document/d/16tFdu91lIVjWWz4Kjl7dF8HkRHGzgCKYciM9iZKVXK8/edit Get Involved]<br />
|style="text-align:left; vertical-align:top;"|[http://stepcode.org/ Web]<br />
|}<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">14</div><br />
|colspan=4|Post your proposal online<br><div style="font-size:50%">(on our wiki is fine)</div><br />
* Describe your project plan<br />
* Document a list of 3 to 10 milestones<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">15</div><br />
|colspan=4|Announce your plan via Chat and/or E-mail<br><div style="font-size:50%">(discuss and make adjustments)</div><br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">16</div><br />
|colspan=4|Download the source code, get set up<br><div style="font-size:50%">(compile, install, run)</div><br />
{|width=100% style="font-size:75%"<br />
| style="width: 25%; background-color: #eee; text-align:center;"| BRL-CAD<br />
| style="width: 25%; background-color: #eee; text-align:center;"| OpenSCAD<br />
| style="width: 25%; background-color: #eee; text-align:center;"| LibreCAD<br />
| style="width: 25%; background-color: #eee; text-align:center;"| STEPcode<br />
|-<br />
|style="text-align:left; vertical-align:top;"|[http://sourceforge.net/p/brlcad/code/HEAD/tree/ Sources]<br>[https://github.com/BRL-CAD/web Web Sources]<br>[[Compiling]]<br />
|style="text-align:left; vertical-align:top;"|[https://github.com/openscad/openscad Sources]<br>[https://github.com/openscad/openscad/blob/master/README.md Compiling]<br />
|style="text-align:left; vertical-align:top;"|[https://github.com/LibreCAD/LibreCAD Sources]<br>[http://librecad.org/cms/home/from-source/linux.html Compiling]<br />
|style="text-align:left; vertical-align:top;"|[https://github.com/stepcode/stepcode Sources]<br>[http://stepcode.org/mw/index.php?title=Building_STEPcode Compiling]<br />
|}<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">17</div><br />
|colspan=4|Submit patches to get familiarized with code<br><div style="font-size:50%">(find small tasks [http://www.google-melange.com/gci/org/google/gci2013/brlcad like these])</div><br />
<div style="font-size:50%">(go through the mged [http://brlcad.org/w/images/c/cf/Introduction_to_MGED.pdf tutorial](cheat sheet<br />
[http://brlcad.org/MGED_Quick_Reference_Card.pdf here])</div> <br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">18</div><br />
|colspan=4|A few more things...<br />
{|width=100% style="font-size:75%"<br />
| style="width: 25%; background-color: #eee; text-align:center;"| BRL-CAD<br />
| style="width: 25%; background-color: #eee; text-align:center;"| OpenSCAD<br />
| style="width: 25%; background-color: #eee; text-align:center;"| LibreCAD<br />
| style="width: 25%; background-color: #eee; text-align:center;"| STEPcode<br />
|-<br />
|style="text-align:left; vertical-align:top;"|Create a Sourceforge and brlcad.org wiki account.<br>Make ''perfect'' patches to obtain commit access.<br />
|style="text-align:left; vertical-align:top;"|<br />
|style="text-align:left; vertical-align:top;"|<br />
|style="text-align:left; vertical-align:top;"|<br />
|}<br />
|-<br />
|colspan=5|<br><br />
|-<br />
!colspan=5|<u>ONCE CODING BEGINS</u><br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">19</div><br />
|colspan=4|Write maintainable, portable, complete code<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">20</div><br />
|colspan=4|Keep a '''daily''' log of your activities online somewhere (a blog or your wiki user page is great for this)<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">21</div><br />
|colspan=4|Provide a midterm report on your project progress to the mailing list as well as posting it to your blog or wiki log.<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">22</div><br />
|colspan=4|Stay motivated, engage other devs, allocate time for discussions<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">23</div><br />
|colspan=4|Provide a final report on your project progress to the mailing list<br />
|-<br />
| style="text-align:center; vertical-align:top;"|<div style="background-color:#fff; width:25px;height:25px;border:1px solid #333;">24</div><br />
|colspan=4|'''Keep working on BRL-CAD, OpenSCAD, LibreCAD, or STEPcode :-)'''<br />
|}<br />
<br />
<br />
[[category:Summer of Code]]</div>Erikhttps://brlcad.org/w/index.php?title=BRL-CAD_Primitives&diff=7161BRL-CAD Primitives2014-05-28T22:04:53Z<p>Erik: Stub in the submodel primitive.</p>
<hr />
<div>[[category:MGED| Primitives]]<br />
<br />
This article provides an overview of various types of geometric primitive objects that can be added to a BRL-CAD geometry file. The shape, size, location and orientation of each such object are defined by a set of parameters/properties that are specific to its type, which are discussed in the corresponding section below.<br />
<br />
For general discussions on using MGED to create primitive objects, view their properties, and modify or move them, see:<br />
* [[Creating_primitive_objects]]<br />
* [[Determining_the_properties_of_primitive objects]]<br />
* [[Changing_the_properties_of_primitive objects]]<br />
<br />
also see:<br />
* [[A Survey of Implicit Constraints in Primitives]]<br />
;<br />
<br />
= Arbitrary convex polyhedra =<br />
<br />
An '''arbitrary convex polyhedron''' ('''arb''') is a geometric volume that is completely enclosed by a set of 3-dimensional planes. Each has a set of straight-edged, flat '''faces''' outlined by the intersections of those planes. The intersection of each pair of planes is a line whose intersections with other planes defines a pair of '''vertices'''. The line segment between those two vertices is an '''edge''' of the polyhedron that is shared by two faces. Each vertex is common to an equal number (at least three) of faces and edges.<br />
<br />
For example, a rectangular parallelepiped is enclosed by three orthagonal pairs of parallel planes. Their intersections define six faces, each with four edges and four vertices. There are a total of 12 edges (each shared by two faces) and 8 vertices (each shared by three faces and three edges).<br />
<br />
The BRL-CAD geometry file format defines two types of records for such polyhedra:<br />
* [[#ARB8 Records|'''arb8'''s]] are specified by a set of eight vertices.<br />
* [[#ARBN Records|'''arbn'''s]] are specified by a set of intersecting planes, each defined by four coefficients.<br />
<br />
Although any polyhedron can be defined and stored as an arbn, the arb8 record type is more commonly employed because it is simpler to work with and still accommodates most constructive solid geometry applications.<br />
<br />
== ARB8 Records ==<br />
<br />
An '''arb8''' record is specified by a set of eight {X, Y, Z} vertices designated V1 through V8, which need not all be unique. As discussed in the [[Creating and editing arb8 primitives]] article, BRL-CAD uses such records to represent polyhedra having four, five or six faces:<br />
<br />
* '''arb8''' shapes have eight unique vertices. They represent '''hexahedra''' that have six quadrilateral faces sharing eight edges. In addition to simply specifying the {X, Y, Z} coordinates of those vertices, MGED provides easier ways to create the following specific types of hexahedra:<br />
** '''3ptarb''' shapes represent '''right quadrilateral prisms''', which are extruded quadrilaterals having parallel ends connected by four rectangular sides.<br />
** '''box''' shapes represent '''parallelepipeds''', whose faces comprise three pairs of equal parallelograms. Unlike a common box, those faces need not be rectangular—if they are, the enclosed volume is a rectangular parallelepiped.<br />
** '''rpp''' shapes represent '''rectangular parallelepipeds''' (also known as '''cuboids''' and '''rectangular prisms'''), whose faces comprise three pairs of equal rectangles. If one pair of faces are squares, the volume is a '''square prism'''. If all of them are squares, the volume is a '''cube''' (geometrically, there cannot be just two pairs of square faces).<br />
<br />
* '''arb7''' shapes have seven unique vertices. They represent hexahedra that have four quadrilateral and two triangular faces sharing eleven edges. They can only be created by specifying the {X, Y, Z} coordinates of those vertices.<br />
<br />
* '''arb6''' shapes have six unique vertices. They represent '''triangular prisms''' and '''truncated tetrahedra''', which are '''pentahedra''' that have two triangular ends connected by three quadrilateral sides sharing nine edges. In addition to simply specifying the {X, Y, Z} coordinates of their vertices, MGED provides an easier way to create one specific type of hexahedron:<br />
** '''raw''' ('''right angle wedge''') shapes are '''triangular prisms''' whose ends are parallel to each other. Interestingly enough, they don't seem to require any right angles. If the ends are perpendicular to the connecting edges, the shape is a '''right triangular prism''' and has rectangular sides. Presumably two of the rectangular sides of an actual right-angle wedge would also be perpendicular to each other.<br />
<br />
* '''arb5''' shapes have five unique vertices. They represent '''quadrahedra''', which are pentahedra that have a quadrilateral base and four triangular sides sharing eight edges. If such a volume has a rectangular base it is a '''rectangular pyramid''', one with a square base is a '''square pyramid'''.<br />
<br />
* '''arb4''' shapes have four unique vertices. They represent '''tetrahedra''', which have four triangular faces sharing six edges. If all four triangles are equilateral, the shape is a '''regular tetrahedron'''.<br />
<br />
== ARBN Records ==<br />
<br />
An '''arbn''' record is specified by N sets of intersecting planes, each defined by four coefficients:<br />
* the {X, Y, Z} coefficients of the plane's normal vector pointing outward from the center of the arbn shape, and<br />
* the perpendicular distance of that plane from the origin.<br />
As discussed in the [[Creating and editing arbn primitives]] article, BRL-CAD uses such primitives to represent polyhedra having any number of sides, edges and vertices.<br />
<br />
=Ellipsoids=<br />
== ell ==<br />
Ellipsoid<br />
;Handled by: make in form create<br />
;Arguments:<br />
;;V : vertex point, at the center<br />
;;vectors A B C describing the radii of the ellipses; A points front, B points right, C points up.<br />
<br />
Example:<br />
in ell.s ell 0 0 0 0 -1 0 1 0 0 0 0 1<br />
== sph ==<br />
Sphere, special case of the ellipsoid, with vectors A B and C all the same magnitude (radius).<br />
;Handled by: make in form(ell) create<br />
Arguments:<br />
;V : vertex point, at the center<br />
;radius<br />
== ellg ==<br />
Special case of ellipsoid<br />
;Handled by: in form(ell) <br />
;Arguments: two foci points, and axis length<br />
==ell1==<br />
Special case of ellipsoid<br />
;Handled by: in make form(ell) create<br />
;Arguments: vertex, vector A, radius of revolution<br />
==ehy==<br />
Elliptical hyperboloid<br />
;Handled by: make in form create<br />
;Arguments: vertex, perpendicular vectors Height and (A,r_1) major axis, (r_2) magnitude of vector B, (c) apex to asymptotes distance<br />
<br />
==epa==<br />
Elliptical paraboloid<br />
;Handled by: in make form create<br />
<br />
=Cones and Cylinders=<br />
== tgc ==<br />
Truncated general cone<br />
;Handled by: in make form create<br />
;Arguments: vertex, vectors H A B, magnitudes of vectors C D<br />
<br />
== rcc ==<br />
Right circular cylinder, special case of tgc<br />
;Handled by: in make form(tgc) create<br />
;Arguments: vertex, height vector, radius<br />
Example:<br />
in rcc1.s rcc 0 0 0 1 1 1 0.5<br />
<br />
== rec ==<br />
Right elliptical cylinder, special case of tgc<br />
;Handled by: in make form(tgc) create<br />
;Arguments: vertex, height vector, radius<br />
== rhc ==<br />
Right hyperbolic cylinder<br />
;Handled by: in make form create<br />
;Arguments: vertex, perpendicular vectors for Height and B, (r) rectangular half width, (c) apex to asymptote distance,<br />
== rpc ==<br />
Right parabolic cylinder<br />
;Handled by: in make form create<br />
;Arguments: vertex, perpendicular vectors for Height and B, (r) rectangular half width<br />
== tec ==<br />
Truncated elliptical cone, special case of tgc<br />
;Handled by: in make form(tgc) create<br />
;Arguments: Vertex, vectors Height, A, B<br />
== trc ==<br />
Truncated right circular cone, special case of tgc<br />
;Handled by: in make form(tgc) create<br />
;Arguments: Vertex, Height vector, radius of base and top<br />
<br />
= derived from 2d=<br />
==extrude==<br />
Extrusion of a 2-d sketch<br />
;Handled by: in make form(?) create<br />
;Arguments: vertex, perpendicular vectors Height A B, sketch, K<br />
<br />
==revolve==<br />
Revolution of a 2-d sketch<br />
;Handled by: in<br />
;Arguments: vertex, revolution axis, vector in start plane, angle, sketch<br />
<br />
==dsp==<br />
;Handled by: in create<br />
;Arguments: data type (f|o), datasource, count of length and width, interpolation type, cut direction, cell size, unit elevation<br />
<br />
See also [[DSP]] tutorial.<br />
<br />
==ebm==<br />
extruded bit map<br />
;Handled by: in form create<br />
;Arguments: filename, width and height in cells, extrusion distance, <br />
<br />
See also [[EBM]] tutorial.<br />
<br />
The extruded bitmap (also referred to as EBM) is a solid based on a greyscale bitmap. The bitmap is an array of unsigned char values, see bw(5), and is extruded by some distance. The EBM solid requires the dimensions of the bitmap file (height and width in bytes), an extrusion length, and a transformation matrix to position the EBM. Each byte in the bitmap file is treated as the base of a cell that is extruded by the specified extrusion length. If the value of the byte is nonzero, then that cell is considered solid.<br />
<br />
==hf==<br />
Height field<br />
;Handled by: none?<br />
;Status: depreciated, use dsp instead<br />
<br />
<br />
=Other solids=<br />
<br />
== tor ==<br />
Torus<br />
;Handled by: in make form create<br />
;Arguments: vertex, normal vector, radius of revolution, tube radius<br />
== eto ==<br />
Elliptical torus<br />
;Handled by: in make form create<br />
;Arguments: vertex, normal vector, radius of revolution, vector C, (r_d) magnitude of semi-minor axis<br />
<br />
== part ==<br />
Conical particle<br />
;Handled by: in make create<br />
;Arguments: vertex, height vector, radius at v, radius at h<br />
The particle solid is a lozenge-shaped object defined by a vertex, a height vector and radii at both ends. The body of the particle is either a cylinder or a truncated cone, depending on the values of the radii. Each end of the particle is a hemisphere of the specified radius.<br />
<br />
== nmg ==<br />
n-Manifold geometry solid (non-manifold geometry)<br />
;Handled by: make create<br />
<br />
== pipe ==<br />
Hollow and solid pipes and wires<br />
;Handled by: in make create<br />
;Arguments: # points, for each point: location, inner and outer diameters, bend radius<br />
<br />
==ars==<br />
Arbitrary rectangular solid<br />
;Handled by: in make create<br />
<br />
Solids of type 'ars' (Arbitrary Faceted Solids) are defined using "waterlines". The following figure consists of a start point, some number of intermediate polygons, and an ending point. Each of the intermediate polygons have the same number of vertices and the vertices are numbered 1 thru N. In addition to the intermediate polygons a line will be created that begins at the start point, goes through each polygon at its vertex numbered 1, and terminates at the end point. This is repeated for each polygon vertex 2 thru N. The start point, polygons, and end point are each a "waterline".<br />
<br><br><br />
<need an image here to illustrate the concept><br />
<br><br><br />
the ars shape takes the following values as input:<br />
*The number of points per waterline (the number of vertices on each intermediate polygon)<br />
*The number of waterlines (the number of intermediate polygons plus 2)<br />
*X, Y, and Z for a starting point (the first waterline)<br />
*for each interior polygon (an intermediate waterline)<br />
**for each point on the polygon<br />
***X, Y, and Z for the point on the polygon<br />
*X, Y, and Z for an ending point (the last waterline)<br />
<br />
For example, the command:<br />
<br><br><br />
in x.1 ars 4 6 0 0 3 1 1 3 1 -1 3 -1 -1 3 -1 1 3 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 0 -1 0 -1 -1 -1 0 -1 0 1 -1 1 0 -3 0 -1 -3 -1 0 -3 0 1 -3 0 0 -3 <br />
<br><br><br />
Will produce a square bar with a tapered 1/8 turn twist in the middle. Of course, more waterlines in the twist and more points per waterline would make the twist smoother.<br />
<br><br><br />
[[Image:Example_ars.png|thumb|center|600px|Example ARS]]<br />
<br><br><br />
The parameters to the above ars command can be dissected as:<br />
<br />
4 : number of points per waterline (i.e. intermediate polygons have 4 vertices)<br><br />
6 : number of waterlines (four intermediate polygons plus the two endpoints)<br><br />
0 0 3 - the center of the top end of the bar<br><br />
1 1 3 1 -1 3 -1 -1 3 -1 1 3 : a 2x2 square in the xy plane at z offset 3<br><br />
1 1 1 1 -1 1 -1 -1 1 -1 1 1 : a 2x2 square oriented the same as the first but at z offset 1<br><br />
1 0 -1 0 -1 -1 -1 0 -1 0 1 -1 : a 2x2 square at a 45 degree rotation from the first squares at z offset -1<br><br />
1 0 -3 0 -1 -3 -1 0 -3 0 1 -3 : a 2x2 square at a 45 degree rotation from the first squares at z offset -3<br><br />
0 0 -3 : the center of the bottom end of the bar<br />
<br />
==metaball==<br />
;Handled by: in make form(*) create<br />
;Arguments: render method, threshold, number of points, location and field strength for each point (and blobbiness/goo factor)<br />
<br />
<br />
==nurb==<br />
Non-uniform rational b-spline<br />
;Handled by: none?<br />
<br />
==spline==<br />
surface splines<br />
;Handled by: ?<br />
<br />
==vol==<br />
volume / voxel<br />
; Handled by: in <br />
; Arguments: filename, xyz dimensions of file (in voxels), lower and upper threasholds, xyz dimensions of a cell<br />
The vol solid is defined by a 3-dimensional array of unsigned char values. The solid requires a file of these values, the extent of the file (in bytes) in each dimension, the size of each cell, and high and low thresholds. Any value in the file that is between the thresholds (inclusive) represents a solid cell.<br />
<br />
==bot==<br />
Bag of triangles<br />
;Handled by: in make create (not edit!)<br />
;Arguments: number of verticies, number of triangles, mode (1=surface 2=solid 3=plate), triangle orientation mode (1=unoriented 2=counter-clockwise 3=clockwise), each vertex, vertex index of each triangle<br />
;See also: [[BoT]]<br />
<br />
==poly==<br />
polysolid<br />
; Handled by: none?<br />
; Status: depreciated, use bot instead<br />
<br />
=Other=<br />
==Sketch==<br />
2d outline<br />
;Handled by: make form(sketch editor) create<br />
;See also: [[sketch]]<br />
<br />
==grip ==<br />
Grip -- support for joints, non-geometric (does not show in rt)<br />
;Handled by: in make form create<br />
Arguments:<br />
;C : Center<br />
;N : normal vector<br />
;L : magnitude<br />
<br />
== half ==<br />
halfspace<br />
;Handled by: in make form create<br />
;Arguments: Normal, distance from origin<br />
A half space is the portion of space on one side of a plane. It is represented by its boundary (the plane) and its outward-pointing normal vector. <br />
==binunif==<br />
Uniform-array binary object<br />
;Handled by: in create (not edit!)<br />
;Arguments: minor type (fdcsiLCSIL), data file, number of values<br />
<br />
== submodel ==<br />
Instanced Submodel<br />
:Handled by: in make form create<br />
:Arguments:<br />
;file: File holding the referenced geometry. 0-length if geometry is in the same file.<br />
;treetop: Single name for the geometry to reference.<br />
A submodel is a reference to another geometry, possibly in a separate file.</div>Erikhttps://brlcad.org/w/index.php?title=User:Erik&diff=7020User:Erik2014-04-13T13:05:23Z<p>Erik: </p>
<hr />
<div>Computer Scientist at ElfGA, formerly a Computer Scientist at the US Army Research Laboratory. Developer of horrible monstrosities.<br />
<br />
Currently <br />
* doing cool iOS stuff<br />
* writing a replacement for CIA.vc (post commits to irc chan), currently available at https://elfga.com/notify/<br />
* maintaining FreeBSD (http://FreeBSD.org) port<br />
* code gardening<br />
* working on adrt/isst/tie stuff<br />
* developing cel shader<br />
* SSE experiments<br />
* SWIG export of core libraries<br />
* other things and stuff<br />
<br />
Has done<br />
* port to FreeBSD5 (2003)<br />
* re-write build system to use automake/autoconf/libtool/etc (from "cake", 2003)<br />
* developed metaball primitive<br />
* developed marching cubes functionality for CSG to generate triangle meshes<br />
* mentored André for MLT (http://brlcad.org/wiki/Metropolis_Light_Transport) impl. His web log is http://andrecastelo.wordpress.com/<br />
* wrote "save as any image" framework (src/libbu/image.c, later src/libicv) and began tool conversion to use it<br />
* wrote a basic obj-g converter<br />
* mentoring [[User:Popescu.andrei1991|Andrei]] with libpkg stuff<br />
* GCI mentoring<br />
* GSoC mentoring and project administration<br />
* worked on adrt/isst/tie stuff<br />
* developed a basic cel shader for BRL-CAD<br />
* SSE experiments<br />
* SWIG export of core libraries<br />
<br />
* other things and stuff.<br />
<br />
You can check out what else he does at https://elfga.com or https://elfga.com/~erik/</div>Erikhttps://brlcad.org/w/index.php?title=Vgr&diff=6751Vgr2014-03-16T22:08:18Z<p>Erik: vgr was a vax, not a pdp</p>
<hr />
<div>VGR was a modified DEC VAX11/780 with a second CPU that operated at the Ballistics Research Laboratory in Aberdeen, MD. Early versions of BRL-CAD were developed on this machine in the late 1970's and early 1980's and the performance became the baseline for the BRL-CAD benchmark suite, measured in VGRs.<br />
<br />
The name is a reference to the original Star Trek movie.</div>Erikhttps://brlcad.org/w/index.php?title=Vgr&diff=6750Vgr2014-03-16T22:06:46Z<p>Erik: Beginning of a VGR page</p>
<hr />
<div>VGR was a modified PDP11/780 with a second CPU that operated at the Ballistics Research Laboratory in Aberdeen, MD. Early versions of BRL-CAD were developed on this machine in the late 1970's and early 1980's and the performance became the baseline for the BRL-CAD benchmark suite, measured in VGRs.<br />
<br />
The name is a reference to the original Star Trek movie.</div>Erikhttps://brlcad.org/w/index.php?title=Deuces&diff=6300Deuces2013-11-14T15:25:01Z<p>Erik: Reverted edits by Erik (talk) to last revision by Sean</p>
<hr />
<div>This is a list of succinct tasks that are expected to take most people familiar with the prerequisites less than two hours to complete. It's a great starting point for anyone interested in contributing to BRL-CAD.<br />
<br />
The tasks are all roughly the same complexity with '''''no prior BRL-CAD experience expected'''''. A description is provided along with a list of references and files you'll probably need to edit. Can we make it any easier?<br />
<br />
= Getting Started =<br />
<br />
Contact us (via [[IRC]] or [[Mailing_Lists|brlcad-devel mailing list]]) if you have questions, comments, or ideas of your own you'd like to suggest.<br />
<br />
We've made an awesome virtual disk image that has everything you need preconfigured and ready to go:<br />
<br />
# [https://sourceforge.net/projects/brlcad/files/BRL-CAD%20for%20Virtual%20Machines/ Download our BRL-CAD Virtual Machine (VM) disk image.]<br />
# [https://www.virtualbox.org/wiki/Downloads Install VirtualBox.]<br />
# Import and start the VM, log in (the password is "Brlcad!" without the quotes).<br />
# Run "svn up brlcad.svn" and get started!<br />
<br />
=Pick a Task=<br />
<br />
We break down all tasks into one of five categories. Don't be worried if the tasks all sound confusing to you. Just pick one and start reading the references we've provided. Join IRC or our mailing list and ask questions.<br />
<br />
# Code (programming)<br />
# Documentation and Training (writing)<br />
# Outreach and Research (graphics)<br />
# Quality Assurance (testing)<br />
# User Interface (designing)<br />
<br />
__TOC__<br />
<br />
----<br />
<br />
== Code ==<br />
----<br />
''Tasks related to writing or refactoring code''<br />
<br />
See the When You're Done section above for details on submitting your changes.<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Fix bounding box function for our polygonal mesh (BoT) primitive ===<br />
<br />
BRL-CAD provides functions for its geometric primitives that define a bounding box - a box that completely encloses the volume described by the primitive. Ideally, these boxes are as small as possible while still enclosing the primitive. Currently the routine for BoTs is incorrect. You can use stl-g, obj-g, or any of our other *-g converters to import BoT geometry for testing. <br />
<br />
This task involves studying the current code for the function rt_bot_bbox() and determining what is causing the current inaccuracies (the mged 'bb' command is a good way to visualize primitive bounding boxes). Make changes to produce a more optimal bounding box. Reimplement it from scratch if you like. The raytracing prep code in rt_bot_prep does prepare a better bounding box, so that is one place to check.<br />
<br />
Code:<br />
* src/librt/primitives/bot/bot.c<br />
<br />
|}<br />
&nbsp;<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Close MGED when both windows are closed ===<br />
<br />
BRL-CAD has an interactive geometry editor called MGED. It's often the starting point for beginners and allows creation and manipulation of models using commands. When ''mged'' is run, it creates 2 windows: a text-console command window and an interactive graphics window. When the user closes one of those windows, there is a bug. Closing the graphics window closes the command window.<br />
<br />
This task involves fixing this behavior so that ONLY closing ''both'' windows terminates the process properly and that closing either window does not take the other along with it.<br />
<br />
Code:<br />
* src/mged/mged.c<br />
* src/tclscripts/mged/openw.c<br />
<br />
|}<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Add MGED key-binding to reopen the command window ===<br />
<br />
BRL-CAD has an interactive geometry editor called MGED. It's often the starting point for beginners and allows creation and manipulation of models using commands. When MGED is invoked, it creates 2 windows: a text-console command window and an interactive graphics window. If the user closes the text-console command window, they are left with the interactive graphics window. There is presently no way (correct us if we're wrong) to get the text-console back without restarting mged. A good way to test this is to run in classic mode and run the 'gui' command:<br />
<br />
sushi:~ morrison$ mged -c test.g<br />
BRL-CAD Release 7.22.0 Geometry Editor (MGED)<br />
Fri, 24 Aug 2012 00:02:42 -0400, Compilation 6<br />
morrison@sushi.local:/usr/brlcad/rel-7.22.0<br />
<br />
attach (nu|X|ogl)[nu]? <br />
mged> gui<br />
<br />
This task involves adding some mechanism, perhaps a simple key binding, to the graphics window so that you can get the command window back on-demand.<br />
<br />
Code:<br />
* src/mged/mged.c<br />
* src/tclscripts/mged/openw.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
<br />
=== Implement a primitive surface area function ===<br />
<br />
BRL-CAD provides more than two dozen types of geometry "primitives" such as ellipsoids, boxes, and cones. Every primitive is described by a collection of callback functions, for example rt_ell_bbox() returns the bounding box dimensions for an ellipsoid. Wikipedia, Wolfram Mathworld, and various other math sites (and research papers) around the web include the equations for most of our basic primitives while others are a little more tricky to compute.<br />
<br />
This task involves writing a new callback function that takes an rt_db_internal object and calculates the surface area (units are mm^2). There are numerous examples in our code where we compute surface area for other primitives. The primitives that do not already have a centroid callback are itemized in following.<br />
<br />
References:<br />
* http://en.wikipedia.org/wiki/Surface_area<br />
* http://mathworld.wolfram.com/<br />
* http://www.dtic.mil/cgi-bin/GetTRDoc?AD=AD0274936<br />
* include/raytrace.h: See ft_surf_area callback defined in the rt_functab structure<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for elliptical hyperboloids (EHY) ====<br />
<br />
Code:<br />
* src/librt/primitives/ehy/ehy.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for hyperboloids of one sheet (HYP) ====<br />
<br />
Code:<br />
* src/librt/primitives/hyp/hyp.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for N-faced polysolid (ARBN) ====<br />
<br />
Code:<br />
* src/librt/primitives/arbn/arbn.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for extruded bitmaps (EBM) ====<br />
<br />
Code:<br />
* src/librt/primitives/ebm/ebm.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for gridded volumes (VOL) ====<br />
<br />
Code:<br />
* src/librt/primitives/vol/vol.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for super ellipsoids (SUPERELL) ====<br />
<br />
Code:<br />
* src/librt/primitives/superell/superell.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for polygonal meshes (NMG) ====<br />
<br />
Code:<br />
* src/librt/primitives/nmg/nmg.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for NURBS objects (BREP) ====<br />
<br />
Code:<br />
* src/librt/primitives/brep/brep.cpp<br />
<br />
|}<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
<br />
=== Implement a primitive volume function ===<br />
<br />
BRL-CAD provides more than two dozen types of geometry "primitives" such as ellipsoids, boxes, and cones. Every primitive is described by a collection of callback functions, for example rt_ell_bbox() returns the bounding box dimensions for an ellipsoid. Wikipedia, Wolfram Mathworld, and various other math sites (and research papers) around the web include the equations for most of our basic primitives while others are a little more difficult to compute.<br />
<br />
This task involves writing a new callback function that takes an rt_db_internal object and calculates the volume (units are mm^3). There are numerous examples in our code where we compute volume for other primitives. The primitives that do not already have a volume callback are itemized in following.<br />
<br />
References:<br />
* http://en.wikipedia.org/wiki/Volume<br />
* http://mathworld.wolfram.com/<br />
* http://www.dtic.mil/cgi-bin/GetTRDoc?AD=AD0274936<br />
* include/raytrace.h: See ft_volume callback defined in rt_functab structure<br />
<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... volume function for elliptical hyperboloids (EHY) ====<br />
<br />
Code:<br />
* src/librt/primitives/ehy/ehy.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... volume function for superellipsoids (SUPERELL) ====<br />
<br />
Code:<br />
* src/librt/primitives/superell/superell.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... volume function for extruded bitmaps (EBM) ====<br />
<br />
Code:<br />
* src/librt/primitives/ebm/ebm.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... volume function for triangle meshes (BOT) ====<br />
<br />
Code:<br />
* src/librt/primitives/bot/bot.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... volume function for solid polygonal meshes (NMG) ====<br />
<br />
Code:<br />
* src/librt/primitives/nmg/nmg.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... volume function for extruded sketches (EXTRUDE) ====<br />
<br />
Code:<br />
* src/librt/primitives/extrude/extrude.c<br />
<br />
|}<br />
<br />
|}<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
<br />
=== Implement a primitive centroid function ===<br />
<br />
BRL-CAD provides more than two dozen types of geometry "primitives" such as ellipsoids, boxes, and cones. Every primitive is described by a collection of callback functions, for example rt_ell_bbox() returns the bounding box dimensions for an ellipsoid. Wikipedia, Wolfram Mathworld, and various other math sites (and research papers) around the web include the equations for most of our basic primitives while others are a little more tricky to compute.<br />
<br />
This task involves writing a new callback function that takes an rt_db_internal object and calculates its centroid (as a point_t 3D point). There are numerous examples in our code where we compute centroids for other primtiives. The primitives that do not already have a centroid callback are itemized in following.<br />
<br />
References:<br />
* http://en.wikipedia.org/wiki/Centroid<br />
* http://mathworld.wolfram.com/<br />
* include/raytrace.h: See ft_centroid callback defined in the rt_functab structure<br />
<br />
Code:<br />
* src/librt/primitives/table.c<br />
* src/librt/primitives/[PRIMITIVE]/[PRIMITIVE].c<br />
<br />
<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... centroid function for right hyperbolic cylinders (RHC) ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... centroid function for gridded volumes (VOL) ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... centroid function for N-faced polysolids (ARBN) ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... centroid function for extruded sketches (EXTRUDE) ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... centroid function for superellipsoids (SUPERELL) ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... centroid function for solid polygonal meshes (NMG) ====<br />
|}<br />
&nbsp;<br />
<br />
|}<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
<br />
=== Implement a primitive UV-mapping callback ===<br />
<br />
BRL-CAD provides more than two dozen types of geometry "primitives" such as ellipsoids, boxes, and cones. Every primitive is described by a collection of callback functions, for example rt_ell_bbox() returns the bounding box dimensions for an ellipsoid. One of those functions describes a UV mapping of the object's surface, which is used for things like texture and bump mapping. An example of this is rt_ell_uv() in the src/librt/primitives/ell/ell.c source file for an ellipsoid. Several of our more complex primitive types (such as BoT, NMG, and BREP/NURBS) do not presently implement a UV-mapping function leading to unexpected runtime behavior.<br />
<br />
This task involves implementing a UV-mapping callback for any of the primitives that do not already have a functional UV-callback defined. Note that this is an advanced task that might take you more than a couple hours if you don't have solid coding skills, but it's ultimately just a few lines of code. See other primitives that already implement a UV-mapping callback for reference.<br />
<br />
References:<br />
* http://en.wikipedia.org/wiki/UV_mapping<br />
* src/librt/primitives/[PRIMITIVE]/[PRIMITIVE].c, read the rt_*_uv() function<br />
<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... UV-mapping for extruded sketches (EXTRUDE) ====<br />
<br />
Code:<br />
* src/librt/primitives/extrude/extrude.c<br />
* src/librt/primitives/table.c<br />
* include/rtgeom.h<br />
<br />
|}<br />
&nbsp;<br />
<br />
|}<br />
&nbsp;<br />
<br />
----<br />
<br />
== Documentation and Training ==<br />
----<br />
''Tasks related to creating/editing documents and helping others learn more about BRL-CAD''<br />
<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Add missing documentation (for any ONE command) ===<br />
<br />
BRL-CAD is an extensive system with more than 400 commands and more than a million pages of documentation, but there are approximately 120 commands that are entirely undocumented:<br />
<br />
a-d archer asc2g asc2pix bot-bldxf bottest brep_cube brep_simple brickwall btclsh burst bw-a bw-d bwish c-d chan_add clutter contours d-a damdf dauto dauto2 d-bw dconv ddisp d-f dfft d-i dmod double-asc dpeak dsel dsp_add dstat d-u dwin euclid_format euclid_unformat fbgammamod f-d fence fhor f-i g-adrt g-euclid1 g-jack globe g-off i-a i-d i-f ihist imod istat jack-g kurt lowp molecule nmgmodel nmg-sgp off-g pipe pipetest pix2g pix3filter pixcount pixelswap pixembed pixfields pixfieldsep pixflip-fb pixpaste pix-spm pix-yuv plstat pyramid rawbot remapid rlesortmap rletovcr room rtcell rtexample rtfrac rtrad rtsil rtsrv script-tab sketch solshoot sphflake spltest spm-fb ssampview syn tea tea_nmg testfree texturescale torii ttcp tube txyz-pl u-a u-bw u-d u-f umod ustat vcrtorle vegitation wall wdb_example xbmtorle xyz-pl yuv-pix<br />
<br />
This task involves writing basic documentation for '''JUST ONE''' of those commands in the Docbook XML format. The command documentation should provide a one-sentence description, a detailed paragraph description (200+ words), explanation of '''all''' available command-line options, and one or more examples on how to use the command. <br />
<br />
Code:<br />
* doc/docbook/system/man1/en/Makefile.am<br />
* doc/docbook/system/man1/en/*.xml<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Document MGED's 'saveview' command options ===<br />
<br />
BRL-CAD's primary geometry editor (MGED) provides hundreds of commands. Two of those commands are the savewview and loadview commands that write current view settings out to a text file and read them back in. The saveview command provides -e -i -l and -o options, but they are not documented.<br />
<br />
This task involves writing documentation for those missing options. Consult the source code to see what they do and add the corresponding sections into our Docbook XML doc just like we do in our other documentation files. Test compilation to make sure your XML syntax is correct.<br />
<br />
References:<br />
* src/libged/saveview.c<br />
* doc/docbook/system/mann/en/*.xml<br />
<br />
Code:<br />
* doc/docbook/system/mann/en/saveview.xml<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Write a "BRL-CAD Commands Quick Reference" document ===<br />
<br />
There is already a command quick reference for BRL-CAD's MGED geometry editing tool, but there is not a similar document for BRL-CAD's 400+ command-line commands.<br />
<br />
This task involves writing a quick reference document similar to [http://brlcad.org/w/images/5/52/MGED_Quick_Reference_Card.pdf the MGED quick reference] but for BRL-CAD commands. The sheet should minimally include the following commands:<br />
<br />
mged, rt*, *-g, g-*, fb*, *fb, nirt, remrt, rtsrv, asc2g, g2asc, dbupgrade, pix*, *pix, *-*, brlman, benchmark<br />
<br />
References:<br />
* http://brlcad.org/wiki/Documentation<br />
* http://brlcad.org/w/images/5/52/MGED_Quick_Reference_Card.pdf<br />
* http://appletree.or.kr/quick_reference_cards/CVS-Subversion-Git/git-cheat-sheet-large.png<br />
* http://www.stdout.org/~winston/latex/latexsheet-0.png<br />
* http://img.docstoccdn.com/thumb/orig/524314.png<br />
* http://www.inmensia.com/files/pictures/internal/CheatSheetDrupal4.7.png<br />
* http://www.phpmagicbook.com/wp-content/uploads/2010/06/php-reference-card.jpg<br />
<br />
|}<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Doxygen cleanup ===<br />
<br />
BRL-CAD uses Doxygen for most API documentation but the comment blocks are not optimally set up for Doxygen output.<br />
<br />
This task involves cleaning up the Doxygen comments in the library so that useful reports and API documentation automatically generated (correctly, completely, and cleanly). Verify/fix any Doxygen syntax. Verify/fix groups so that functions are organized neatly and all contained within a group. Provide patches that give clean (PDF) output from Doxygen.<br />
<br />
References:<br />
* http://www.jiggerjuice.net/software/doxygen.html<br />
* http://www.stack.nl/~dimitri/doxygen/starting.html<br />
* http://www.stack.nl/~dimitri/doxygen/<br />
<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... doxygen cleanup for LIBBU ====<br />
<br />
There are approximately 300 documented API function calls in LIBBU.<br />
<br />
Code:<br />
* include/bu.h<br />
* src/libbu<br />
* misc/Doxyfile<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... doxygen cleanup for LIBWDB ====<br />
<br />
There are approximately 100 documented API function calls in LIBWDB. <br />
<br />
Code:<br />
* include/wdb.h<br />
* include/raytrace.h<br />
* src/libwdb<br />
* misc/Doxyfile<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... doxygen cleanup for LIBRT ====<br />
<br />
There are approximately 1000 documented API function calls in LIBRT. <br />
<br />
Code:<br />
* include/raytrace.h<br />
* src/librt<br />
* src/librt/primitives<br />
* src/librt/comb<br />
* src/librt/binunif<br />
* misc/Doxyfile<br />
|}<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Write a manual page for MGED's "brep" command ===<br />
<br />
BRL-CAD's MGED geometry editor provides hundreds of commands. One of those commands for manipulating and visualizing geometry is the "brep" command.<br />
<br />
This task involves writing a manual page for that command in the Docbook XML format. There are lots of examples to follow.<br />
<br />
References:<br />
* doc/docbook/system/mann/en/*.xml<br />
* http://brlcad.org/wiki/Documentation (contains intro to mged and cheat sheets)<br />
* bin/mged (you'll need to run this to use the "brep" command)<br />
* bin/csgbrep (will create a slew of 'brep'/nurbs objects for the "brep" command)<br />
<br />
Code:<br />
<br />
* doc/docbook/system/mann/en/brep.xml (you write this)<br />
* doc/docbook/system/mann/en/CMakeLists.txt (you edit this)<br />
<br />
Running "make" in a build directory will compile your documentation into html and man page format so you can validate the syntax and formatting. See [[Compiling]] for help.<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Write up Wiki page tutorial on our Volumetric Primitive ===<br />
<br />
BRL-CAD provides a couple dozen distinct primitives. Each primitive is defined by a set of parameters. Several of the more complex primitives have a wiki page describing them in more detail with an example on how to create them.<br />
<br />
This task involves writing up a page on the VOL primitive. Figure out how to use it (see the "in" command), create an example input data set, and write up a wiki page on exactly what steps are needed similar to our other wiki pages:<br />
<br />
References:<br />
* http://brlcad.org/wiki/DSP<br />
* http://brlcad.org/wiki/Sketch<br />
* http://brlcad.org/wiki/EBM <-- particularly useful as the data is similar for VOL<br />
<br />
Show how to create a VOL with at least two layers/slices. Include images like the other examples. Put the write-up at http://brlcad.org/wiki/VOL<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Write a wiki tutorial on how to create a polygonal mesh (NMG) manually ===<br />
<br />
BRL-CAD provides a couple dozen distinct primitives. Each primitive is defined by a set of parameters. Several of the more complex primitives have a wiki page describing them in more detail with an example on how to create them.<br />
<br />
This task involves writing up a page on the NMG polygonal mesh primitive. Figure out how to use it (not a simple task, will require some trial and error), create an example input, and write up a wiki page on exactly what steps are needed similar to our other wiki pages:<br />
<br />
References:<br />
* http://brlcad.org/wiki/DSP<br />
* http://brlcad.org/wiki/EBM<br />
* http://brlcad.org/wiki/Sketch <-- particularly useful as neither NMG nor sketch are meant to be created manually<br />
<br />
Note the "facetize" command in mged will convert an existing object into NMG format. The get/put commands should help from there like the sketch tutorial.<br />
<br />
Show how to create an NMG cube or wedge or similar simple shape. Include images like the other examples. Put the write-up at http://brlcad.org/wiki/NMG<br />
<br />
|}<br />
<br />
----<br />
<br />
==Outreach and Research ==<br />
----<br />
''Tasks related to community management, outreach/marketing, studying problems, and recommending solutions''<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
<br />
=== Investigate permuted vertex lists from g-iges + iges-g ===<br />
<br />
BRL-CAD has a geometry exporter and importer for the International Graphics Exchange Standard (IGES) file format. If you run our g-iges exporter on some geometry, then run iges-g on that same geometry to import it back to BRL-CAD format, the geometry will have permuted vertex lists. Particularly for geometry already in polygonal format, such as our NMG or BoT geometry, this conversion should result in identical geometry but presently does not.<br />
<br />
This task involves investigating why this occurs, reporting (in detail) why it occurs, and if obvious, making a recommendation on how to fix the problem.<br />
<br />
Code:<br />
* src/conv/iges<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Write article on BRL-CAD's code hardening efforts ===<br />
<br />
We've been working for several years on "code hardening", improving the quality of BRL-CAD's source code through a variety of best practices and code cleanup efforts.<br />
<br />
This task has you write an article that succinctly summarizes all of our efforts. You'll need to become familiar with our HACKING file as well as read up on our various hardening efforts. You're welcome to ask our devs questions over IRC for more information too.<br />
<br />
Include at least one picture. Article should be 300-900 words long and be fully proof-read before submitting (check for grammar and spelling mistakes, please).<br />
<br />
Resources:<br />
* http://brlcad.org/wiki/Code_Cleanup<br />
* http://brlcad.org/d/node/96<br />
* http://www.coverity.com/library/pdf/coverity-scan-2011-open-source-integrity-report.pdf<br />
<br />
Add the article to http://brlcad.org/wiki/Community_Publication_Portal<br />
<br />
|}<br />
<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Write an article soliciting a Windows platform maintainer ===<br />
<br />
BRL-CAD runs on a number of platforms and distributes releases many times a year. Creating a release for any particular binary platform, like Windows or Mac OS X or Linux, is delegated to a "release maintainer". We currently have maintainers for a number of platforms but do not have one for Windows. Basically, it's a volunteer job, it's a lot of work, but not very hard and very rewarding. There are thousands of binary downloads every month, so lots of people benefit from a maintainer's efforts. <br />
<br />
This task involves writing a brief solicitation article announcing our interest for a maintainer, describing the responsibilities involved, and telling them how to take up this responsibility. Come talk to us on IRC for more specific details.<br />
<br />
Resources:<br />
* http://svn.code.sf.net/p/brlcad/code/brlcad/trunk/HACKING<br />
(See the release section near the bottom to see what maintainers do)<br />
<br />
Add the article to http://brlcad.org/wiki/Community_Publication_Portal<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create an ISST screenshot or animation ===<br />
<br />
Everyone loves to see screenshots and animations of software in action. We use both in our marketing and outreach. See some of the examples below that we already have.<br />
<br />
Create an awesome screenshot and/or animation of our 'isst' tool in action. It's an interactive geometry viewer interface. It should be graphically interesting and give some sense of capability. You should import a visually complex and interesting model with LOTS of polygons and detail.<br />
<br />
References:<br />
* http://brlcad.org/gallery/d/19-4/MGED.jpg<br />
* http://brlcad.org/tmp/archer.png<br />
* http://brlcad.org/gallery/s/screenshots/<br />
* http://www.google-melange.com/gci/task/view/google/gci2012/8019211<br />
<br />
Note that we have several screenshot tasks. Note you may have to go through some or our basic MGED tutorials (see docs section on our website) just to be able to display geometry. Finally, give others a chance if you already completed one of the other screenshot tasks. ;)<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Generate a code coverage report (lcov+gcov) ===<br />
<br />
This task involves setting up and generating an lcov code coverage analysis on BRL-CAD. After learning how to use the tool, discuss with the developers what portion of the code will be most useful to analyze, or scan these:<br />
<br />
"benchmark"<br />
"make test"<br />
"make regress"<br />
Submit the results.<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Model BRL-CAD logo in BRL-CAD ===<br />
<br />
The BRL-CAD Logo depicts two interlocked nodes. Modeling the new Logo in BRL-CAD in CSG (without NURBS, without polygons) requires some careful arrangement, but can provide an attractive three dimensional rendering that we can use for a number of purposes..<br />
<br />
The output of this task will be a .g file of BRL-CAD logo and a rendered image. The two segments you model MUST be two or more regions, ideally hinged together (you can have center pins or not, you decide). This is your opportunity as an artist and 3D magician to come up with an interesting yet faithful interpretation.<br />
<br />
References:<br />
* http://brlcad.org/images/angelov_256.png<br />
* http://brlcad.org/d/node/92<br />
* Introduction to MGED at http://brlcad.org/wiki/Documentation<br />
<br />
Note that there are other logo modeling tasks and yours must start from scratch and be completely original. If we get a hint that yours was based off of or used measurements from some other model, you will be barred.<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Profile NURBS prep performance ===<br />
<br />
BRL-CAD implements support for rendering of NURBS representation geometry. If you import a solid 3DM or STEP format model into BRL-CAD, it will import as BREP/NURBS geometry. Opening that geometry in BRL-CAD's MGED editor will tell you what objects are available and our 'rt' tool will raytrace it. When geometry is ray traced, it first goes through a "prep" phase and then it starts shooting rays. Our prep phase is entirely unoptimized so we'd like to know where all the time is presently being spent during prep..<br />
<br />
This task involves importing some NURBS geometry into BRL-CAD and ray tracing that geometry with a profiler watching our prep performance. Any profiler will do, including gprof, but a performance monitor like oprofile or the Mac "Instruments" application (or Shark) are preferred.<br />
<br />
Learning how to use a profiler is beyond the scope of this task, so it make take you considerably longer to provide us with useful information if you've never run a profiler before.<br />
<br />
To capture prep performance, you will need to import some fairly complex geometry. You should be able to search google with "filetype:3dm" or "filetype:step" or find something on grabcad.com to import<br />
<br />
Running "tops" within mged will tell you what geometry is available for rendering.<br />
<br />
Running "rt -o file.png -s32" on the system command line (not inside mged) should minimize the ray overhead or you can specifically isolate the prep phase we care about. Prep is the time between when rt is run where it opens a window until the first pixels are fired and pixels start filling in.<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Continue investigating GMP integration ===<br />
<br />
BRL-CAD uses a fastf_t typedef for most all math operations that is usually a "double" floating point type. We would like to provide the option for resorting to exact arithmetic if possible by merely redefining fastf_t to a C++ type sufficiently overloaded to behave the same. You should be proficient with C++ operator overloading to take this work on. This task is a continuation of a prior GCI task (read it in full!):<br />
<br />
http://www.google-melange.com/gci/task/view/google/gci2012/7946218<br />
<br />
This task involves testing compilation with a C++ class with overloaded operators such that vmath macro calls still work as well as a sampling of LIBBN API function calls without major changes to the original code. A perfect example case study would be creating the class then testing whether bn_dist_pt3_pt3() and bn_mat_determinant() compute correctly for values that cannot be exactly represented with floating point arithmetic.<br />
<br />
Building on the previous GCI task work, take it to the next step. Try setting a vector to 1/3, 1/3, 1/3 and 0.1, 0.1, 0.1 and get proper values to print. Change the V3ARGS() macro if needed. If that all works, try to get bn_dist_pt3_pt3() to work. Report and discuss your progress.<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create prototype 2D Drawing ===<br />
<br />
BRL-CAD provides limited services for drafting features including the production of 2D CAD drawings (blueprints).<br />
<br />
This task involves designing a 2D CAD drawing prototype. The prototype MUST capture a set of design requirements and follows industry conventions.<br />
<br />
If you've never seen a real blueprint drawing before, then this task might be too hard for you. Your result needs to refer to ISO 128 and/or ASME Y14.41 or other standard drawing elements. <br />
<br />
Basically, identifying a style of drawing that we should support including pointing out the critical elements to be included on each drawing, their location, size, placement, etc.<br />
<br />
References:<br />
* http://brlcad.org/design/drafting<br />
* http://en.wikipedia.org/wiki/ISO_128<br />
* http://en.wikipedia.org/wiki/ASME_Y14.41-2003<br />
* http://en.wikipedia.org/wiki/Geometric_Dimensioning_and_Tolerancing<br />
* http://www.ptc.com/WCMS/files/45691/en/4307_FoundationXE_DS.pdf<br />
<br />
Note that this is a "redo" of a previous GCI task. Read the discussion thread and his work to help ensure you don't make similar mistakes. ;-)<br />
<br />
http://www.google-melange.com/gci/task/view/google/gci2012/7985229<br />
<br />
|}<br />
<br />
<br />
----<br />
<br />
== Quality Assurance ==<br />
----<br />
''Tasks related to testing and ensuring code is of high quality''<br />
<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Fix single-precision floating point crash ===<br />
<br />
By default, all of BRL-CAD compiles using double-precision floating point arithmetic. We provide a simple typedef, however, that converts almost the entire system over to single-precision floating point. This compilation mode was recently cleaned up and tested, but a bug was found. The problem is reproduced very simply by compiling in single precision mode and running our "rt" ray tracer tool.<br />
<br />
To compile in single precision, edit the include/bn.h header file and change the fastf_t typedef from double to float. To reproduce the bug, compile BRL-CAD and write this out to a text file named star.view:<br />
<br />
viewsize 2.500000000e+05;<br />
eye_pt 2.102677960e+05 8.455500000e+04 2.934714650e+04;<br />
viewrot -6.733560560e-01 6.130643360e-01 4.132114880e-01 0.000000000e+00<br />
5.539599410e-01 4.823888300e-02 8.311441420e-01 0.000000000e+00<br />
4.896120540e-01 7.885590550e-01 -3.720948210e-01 0.000000000e+00<br />
0.000000000e+00 0.000000000e+00 0.000000000e+00 1.000000000e+00 ;<br />
start 0;<br />
end;<br />
<br />
Then run rt feeding it that view script as input. This is an example how to run within the gdb debugger:<br />
gdb path/to/bin/rt<br />
...<br />
(gdb) run -F/dev/X -M .cmake/share/db/star.g all < star.view<br />
<br />
At this point, rt should crash due to an infinite recursion. A backtrace in the debugger will show lots and lots of calls to rt_shootray() and light_hit().<br />
<br />
This task involves investigating and preventing the crash. Provide a patch that fixes the bug.<br />
<br />
References:<br />
* man gdb<br />
* brlman rt<br />
<br />
Code:<br />
* src/librt/shoot.c<br />
* src/liboptical/sh_light.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Fix closedb ===<br />
<br />
BRL-CAD geometry editor application (mged) has several hundred commands including two very simple commands for opening and closing a geometry database file. While the user rarely ever needs to close the file, as all changes are always immediately saved, it can be of use to scripting applications. However, at some point in the recent past, the ''closedb'' command was horked. It's undoubtedly something very simple but we haven't bothered to look due to other priorities. You can fix it. If you run these simple steps within graphical mged, you should see how commands stop working after calling closedb:<br />
<br />
mged> opendb test.g y<br />
mged> make sph sph<br />
mged> l sph<br />
mged> closedb<br />
mged> make sph sph<br />
mged> opendb test.g<br />
mged> l sph<br />
mged> exit<br />
<br />
Provide a patch that fixes the bug or tell us which SVN revision introduced the bug. Make sure you can reproduce the bug before claiming this task, which presumes you know how to download/install BRL-CAD from a source distribution.<br />
<br />
Code:<br />
* src/mged/mged.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create an utility library (LIBBU) API unit test ===<br />
<br />
There are more than 300 library functions in our core LIBBU library. As a core library used by nearly every one of BRL-CAD's tools, testing those functions for correct behavior is important.<br />
<br />
This task involves implementing a new unit test for any of LIBBU's source files that do not already have a unit test defined. The test should run all of the public functions and be hooked into our build system. We have lots of existing unit tests to follow as an example.<br />
<br />
References:<br />
* include/bu.h<br />
* src/libbu/*.c<br />
* src/libbu/tests/*.c<br />
<br />
Code:<br />
* src/libbu/tests/[TEST].c<br />
* src/libbu/tests/CMakeLists.txt<br />
<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... unit test for LIBBU badmagic.c ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... unit test for LIBBU bomb.c ====<br />
|}<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create numerics library (LIBBN) API unit test ===<br />
<br />
There are more than 300 library functions in our core LIBBN library. As a core library used by nearly every one of BRL-CAD's tools, testing those functions for correct behavior is important.<br />
<br />
This task involves implementing a new unit test for any of LIBBN's source files that do not already have a unit test defined. The test should run all of the public functions and be hooked into our build system. We have lots of existing unit tests to follow as an example.<br />
<br />
References:<br />
* include/bn.h<br />
* include/plot3.h<br />
* include/vmath.h<br />
* src/libbn/*.c<br />
* src/libbu/tests/*.c <-- note libbu, not libbn for examples<br />
<br />
Code:<br />
* src/libbn/tests/[TEST].c<br />
* src/libbn/tests/CMakeLists.txt<br />
<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... unit test for LIBBN axis.c ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... unit test for LIBBN qmath.c ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... unit test for LIBBN rand.c ====<br />
|}<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Find, reliably reproduce, and report any bug in Archer ===<br />
<br />
Archer is our new modeling interface and a soon to merge with our long-standing MGED geometry editor. It undoubtedly has bugs. It's your job to find one, but do so in a manner that is so obvious that one of the other devs will be able to instantly reproduce the bug given your specific instructions. Find a way to make archer crash, become unresponsive, or otherwise behave incorrectly. You will have to explore the tool with minimal documentation.<br />
<br />
This task involves filing a bug report with verifiable and reproducible steps that clearly demonstrate the bug. It can't be a bug already reported or otherwise documented nor can it be merely behavior you don't like.<br />
<br />
References:<br />
* archer<br />
* Introduction to MGED at http://brlcad.org/wiki/Documentation (many of the mged commands are available in some fashion within archer) <br />
* BUGS file in any source/binary distribution<br />
* http://sourceforge.net/tracker/?atid=640802&group_id=105292&func=browse<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Reproduce any 10 unconfirmed open bug reports ===<br />
<br />
BRL-CAD presently has approximately 75 open bug reports of which 50 are unassigned. Read the comments and status to see if the bug has been confirmed/reproduced. <br />
<br />
This task involves going through those reports and REPRODUCE at least 10 of the ones that have not been confirmed. When you can reproduce the issue being reported, you'll comment on the thread to state as much and attach any data you used to reproduce the crash.<br />
<br />
References:<br />
* https://sourceforge.net/tracker/?limit=100&func=&group_id=105292&atid=640802&assignee=100&status=1&submit=Filter<br />
|}<br />
----<br />
<br />
== User Interface ==<br />
----<br />
''Tasks related to user experience research or user interface design and interaction''<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Design a prototype CAD GUI layout ===<br />
<br />
BRL-CAD's usability is notoriously complex and "expert friendly". MGED and Archer are the main geometry editors, with drastically different user interfaces.<br />
<br />
This task involves evaluating the features provided by MGED and Archer, then designing a new GUI layout that encompasses their features while improving usability. Rationale for design decisions and layout should be provided.<br />
<br />
References:<br />
* http://brlcad.org/design/gui<br />
<br />
Provide one or more mock-up images (png, pdf, psd, html, whatever)<br />
<br />
Search for other similar GCI tasks to avoid making a similar design. You can use any tools, but your work must be original.<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create an ISST screenshot or animation ===<br />
<br />
Everyone loves to see screenshots and animations of software in action. We use both in our marketing and outreach. See some of the examples below that we already have.<br />
<br />
Create an awesome screenshot and/or animation of our 'isst' tool in action. It's an interactive geometry viewer interface. It should be graphically interesting and give some sense of capability. You should import a visually complex and interesting model with LOTS of polygons and detail.<br />
<br />
References:<br />
* http://brlcad.org/gallery/d/19-4/MGED.jpg<br />
* http://brlcad.org/tmp/archer.png<br />
* http://brlcad.org/gallery/s/screenshots/<br />
* http://www.google-melange.com/gci/task/view/google/gci2012/8019211<br />
<br />
Note that we have several screenshot tasks. Note you may have to go through some or our basic MGED tutorials (see docs section on our website) just to be able to display geometry. Finally, give others a chance if you already completed one of the other screenshot tasks. ;)<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Categorize all of BRL-CAD's commands into a spreadsheet ===<br />
<br />
BRL-CAD is a suite of more than 400 processing tools, image tools, geometry converters, and more. There is an existing spreadsheet that characterizes all of the available commands in terms of inputs, outputs, and options, but there is insufficient characterization of BRL-CAD's commands as to how they logically group and work together.<br />
<br />
This task involves building up a spreadsheet that lists all of our commands, describing a finite set of command categories, and characterizing all commands into those categories while filling in the spreadsheet with details for each command.<br />
<br />
References:<br />
* A spreadsheet template will be provided.<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Redesign MGED/Archer's Menu ===<br />
<br />
BRL-CAD's geometry editing applications, like most graphical applications, have an application menu with a variety of features, capabilities, and options, but with little attention to cohesive design.<br />
<br />
Review the menus for MGED and Archer. Design a new menu system based on both of them that eliminates confusion, is easier to navigate, and has menu options more logically grouped together.<br />
<br />
References:<br />
* mged<br />
* archer<br />
<br />
Provide screenshots or detailed text indicating what menu options should be available and what exactly is on each menu.<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create Wordpress theme for BRL-CAD website ===<br />
<br />
BRL-CAD's website was recently redesigned. The current website uses Drupal and Mediawiki. Our new website will be using Wordpress and Mediawiki.<br />
<br />
This task involves creating a custom Wordpress theme based on our new website design.<br />
<br />
References:<br />
* http://cpp-tricks.com/brlcad/<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Migrate Drupal site to Wordpress ===<br />
<br />
BRL-CAD's main website content runs on Drupal. There are a lot of articles, user accounts, and other information contained within this installation of Drupal.<br />
<br />
This task involves setting up an installation of Wordpress on our production server and migrating the data from Drupal into the Wordpress site.<br />
<br />
References:<br />
* http://brlcad.org/d/<br />
<br />
This task requires that you establish an account on one of our servers. There is a setup process involved. Join us on IRC for details.<br />
|}<br />
<br />
----<br />
<br />
= When You're Done =<br />
----<br />
<br />
For non-code, just send us your file(s). For code changes, you will be expected to [[Patches|provide a patch file]]. Make sure you ''read'' your patch file before submitting it. Make sure your patch file will apply cleanly to an unmodified checkout of BRL-CAD:<br />
<br />
svn co https://brlcad.svn.sourceforge.net/svnroot/brlcad/brlcad/trunk brlcad.edit<br />
cd brlcad.edit<br />
# make changes<br />
svn diff > ~/my.patch<br />
# read ~/my.patch file with text editor<br />
cd ..<br />
svn co https://brlcad.svn.sourceforge.net/svnroot/brlcad/brlcad/trunk brlcad.fresh<br />
cd brlcad.fresh<br />
patch -p0 < ~/my.patch<br />
# submit your patch file to our patches tracker<br />
&nbsp;</div>Erikhttps://brlcad.org/w/index.php?title=Deuces&diff=6299Deuces2013-11-14T15:22:23Z<p>Erik: /* Code */ g-egg</p>
<hr />
<div>This is a list of succinct tasks that are expected to take most people familiar with the prerequisites less than two hours to complete. It's a great starting point for anyone interested in contributing to BRL-CAD.<br />
<br />
The tasks are all roughly the same complexity with '''''no prior BRL-CAD experience expected'''''. A description is provided along with a list of references and files you'll probably need to edit. Can we make it any easier?<br />
<br />
= Getting Started =<br />
<br />
Contact us (via [[IRC]] or [[Mailing_Lists|brlcad-devel mailing list]]) if you have questions, comments, or ideas of your own you'd like to suggest.<br />
<br />
We've made an awesome virtual disk image that has everything you need preconfigured and ready to go:<br />
<br />
# [https://sourceforge.net/projects/brlcad/files/BRL-CAD%20for%20Virtual%20Machines/ Download our BRL-CAD Virtual Machine (VM) disk image.]<br />
# [https://www.virtualbox.org/wiki/Downloads Install VirtualBox.]<br />
# Import and start the VM, log in (the password is "Brlcad!" without the quotes).<br />
# Run "svn up brlcad.svn" and get started!<br />
<br />
=Pick a Task=<br />
<br />
We break down all tasks into one of five categories. Don't be worried if the tasks all sound confusing to you. Just pick one and start reading the references we've provided. Join IRC or our mailing list and ask questions.<br />
<br />
# Code (programming)<br />
# Documentation and Training (writing)<br />
# Outreach and Research (graphics)<br />
# Quality Assurance (testing)<br />
# User Interface (designing)<br />
<br />
__TOC__<br />
<br />
----<br />
<br />
== Code ==<br />
----<br />
''Tasks related to writing or refactoring code''<br />
<br />
See the When You're Done section above for details on submitting your changes.<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Fix bounding box function for our polygonal mesh (BoT) primitive ===<br />
<br />
BRL-CAD provides functions for its geometric primitives that define a bounding box - a box that completely encloses the volume described by the primitive. Ideally, these boxes are as small as possible while still enclosing the primitive. Currently the routine for BoTs is incorrect. You can use stl-g, obj-g, or any of our other *-g converters to import BoT geometry for testing. <br />
<br />
This task involves studying the current code for the function rt_bot_bbox() and determining what is causing the current inaccuracies (the mged 'bb' command is a good way to visualize primitive bounding boxes). Make changes to produce a more optimal bounding box. Reimplement it from scratch if you like. The raytracing prep code in rt_bot_prep does prepare a better bounding box, so that is one place to check.<br />
<br />
Code:<br />
* src/librt/primitives/bot/bot.c<br />
<br />
|}<br />
&nbsp;<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Close MGED when both windows are closed ===<br />
<br />
BRL-CAD has an interactive geometry editor called MGED. It's often the starting point for beginners and allows creation and manipulation of models using commands. When ''mged'' is run, it creates 2 windows: a text-console command window and an interactive graphics window. When the user closes one of those windows, there is a bug. Closing the graphics window closes the command window.<br />
<br />
This task involves fixing this behavior so that ONLY closing ''both'' windows terminates the process properly and that closing either window does not take the other along with it.<br />
<br />
Code:<br />
* src/mged/mged.c<br />
* src/tclscripts/mged/openw.c<br />
<br />
|}<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Add MGED key-binding to reopen the command window ===<br />
<br />
BRL-CAD has an interactive geometry editor called MGED. It's often the starting point for beginners and allows creation and manipulation of models using commands. When MGED is invoked, it creates 2 windows: a text-console command window and an interactive graphics window. If the user closes the text-console command window, they are left with the interactive graphics window. There is presently no way (correct us if we're wrong) to get the text-console back without restarting mged. A good way to test this is to run in classic mode and run the 'gui' command:<br />
<br />
sushi:~ morrison$ mged -c test.g<br />
BRL-CAD Release 7.22.0 Geometry Editor (MGED)<br />
Fri, 24 Aug 2012 00:02:42 -0400, Compilation 6<br />
morrison@sushi.local:/usr/brlcad/rel-7.22.0<br />
<br />
attach (nu|X|ogl)[nu]? <br />
mged> gui<br />
<br />
This task involves adding some mechanism, perhaps a simple key binding, to the graphics window so that you can get the command window back on-demand.<br />
<br />
Code:<br />
* src/mged/mged.c<br />
* src/tclscripts/mged/openw.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
<br />
=== Implement a primitive surface area function ===<br />
<br />
BRL-CAD provides more than two dozen types of geometry "primitives" such as ellipsoids, boxes, and cones. Every primitive is described by a collection of callback functions, for example rt_ell_bbox() returns the bounding box dimensions for an ellipsoid. Wikipedia, Wolfram Mathworld, and various other math sites (and research papers) around the web include the equations for most of our basic primitives while others are a little more tricky to compute.<br />
<br />
This task involves writing a new callback function that takes an rt_db_internal object and calculates the surface area (units are mm^2). There are numerous examples in our code where we compute surface area for other primitives. The primitives that do not already have a centroid callback are itemized in following.<br />
<br />
References:<br />
* http://en.wikipedia.org/wiki/Surface_area<br />
* http://mathworld.wolfram.com/<br />
* http://www.dtic.mil/cgi-bin/GetTRDoc?AD=AD0274936<br />
* include/raytrace.h: See ft_surf_area callback defined in the rt_functab structure<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for elliptical hyperboloids (EHY) ====<br />
<br />
Code:<br />
* src/librt/primitives/ehy/ehy.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for hyperboloids of one sheet (HYP) ====<br />
<br />
Code:<br />
* src/librt/primitives/hyp/hyp.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for N-faced polysolid (ARBN) ====<br />
<br />
Code:<br />
* src/librt/primitives/arbn/arbn.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for extruded bitmaps (EBM) ====<br />
<br />
Code:<br />
* src/librt/primitives/ebm/ebm.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for gridded volumes (VOL) ====<br />
<br />
Code:<br />
* src/librt/primitives/vol/vol.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for super ellipsoids (SUPERELL) ====<br />
<br />
Code:<br />
* src/librt/primitives/superell/superell.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for polygonal meshes (NMG) ====<br />
<br />
Code:<br />
* src/librt/primitives/nmg/nmg.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... surface area function for NURBS objects (BREP) ====<br />
<br />
Code:<br />
* src/librt/primitives/brep/brep.cpp<br />
<br />
|}<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
<br />
=== Implement a primitive volume function ===<br />
<br />
BRL-CAD provides more than two dozen types of geometry "primitives" such as ellipsoids, boxes, and cones. Every primitive is described by a collection of callback functions, for example rt_ell_bbox() returns the bounding box dimensions for an ellipsoid. Wikipedia, Wolfram Mathworld, and various other math sites (and research papers) around the web include the equations for most of our basic primitives while others are a little more difficult to compute.<br />
<br />
This task involves writing a new callback function that takes an rt_db_internal object and calculates the volume (units are mm^3). There are numerous examples in our code where we compute volume for other primitives. The primitives that do not already have a volume callback are itemized in following.<br />
<br />
References:<br />
* http://en.wikipedia.org/wiki/Volume<br />
* http://mathworld.wolfram.com/<br />
* http://www.dtic.mil/cgi-bin/GetTRDoc?AD=AD0274936<br />
* include/raytrace.h: See ft_volume callback defined in rt_functab structure<br />
<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... volume function for elliptical hyperboloids (EHY) ====<br />
<br />
Code:<br />
* src/librt/primitives/ehy/ehy.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... volume function for superellipsoids (SUPERELL) ====<br />
<br />
Code:<br />
* src/librt/primitives/superell/superell.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... volume function for extruded bitmaps (EBM) ====<br />
<br />
Code:<br />
* src/librt/primitives/ebm/ebm.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... volume function for triangle meshes (BOT) ====<br />
<br />
Code:<br />
* src/librt/primitives/bot/bot.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... volume function for solid polygonal meshes (NMG) ====<br />
<br />
Code:<br />
* src/librt/primitives/nmg/nmg.c<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... volume function for extruded sketches (EXTRUDE) ====<br />
<br />
Code:<br />
* src/librt/primitives/extrude/extrude.c<br />
<br />
|}<br />
<br />
|}<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
<br />
=== Implement a primitive centroid function ===<br />
<br />
BRL-CAD provides more than two dozen types of geometry "primitives" such as ellipsoids, boxes, and cones. Every primitive is described by a collection of callback functions, for example rt_ell_bbox() returns the bounding box dimensions for an ellipsoid. Wikipedia, Wolfram Mathworld, and various other math sites (and research papers) around the web include the equations for most of our basic primitives while others are a little more tricky to compute.<br />
<br />
This task involves writing a new callback function that takes an rt_db_internal object and calculates its centroid (as a point_t 3D point). There are numerous examples in our code where we compute centroids for other primtiives. The primitives that do not already have a centroid callback are itemized in following.<br />
<br />
References:<br />
* http://en.wikipedia.org/wiki/Centroid<br />
* http://mathworld.wolfram.com/<br />
* include/raytrace.h: See ft_centroid callback defined in the rt_functab structure<br />
<br />
Code:<br />
* src/librt/primitives/table.c<br />
* src/librt/primitives/[PRIMITIVE]/[PRIMITIVE].c<br />
<br />
<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... centroid function for right hyperbolic cylinders (RHC) ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... centroid function for gridded volumes (VOL) ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... centroid function for N-faced polysolids (ARBN) ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... centroid function for extruded sketches (EXTRUDE) ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... centroid function for superellipsoids (SUPERELL) ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... centroid function for solid polygonal meshes (NMG) ====<br />
|}<br />
&nbsp;<br />
<br />
|}<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
<br />
=== Implement a primitive UV-mapping callback ===<br />
<br />
BRL-CAD provides more than two dozen types of geometry "primitives" such as ellipsoids, boxes, and cones. Every primitive is described by a collection of callback functions, for example rt_ell_bbox() returns the bounding box dimensions for an ellipsoid. One of those functions describes a UV mapping of the object's surface, which is used for things like texture and bump mapping. An example of this is rt_ell_uv() in the src/librt/primitives/ell/ell.c source file for an ellipsoid. Several of our more complex primitive types (such as BoT, NMG, and BREP/NURBS) do not presently implement a UV-mapping function leading to unexpected runtime behavior.<br />
<br />
This task involves implementing a UV-mapping callback for any of the primitives that do not already have a functional UV-callback defined. Note that this is an advanced task that might take you more than a couple hours if you don't have solid coding skills, but it's ultimately just a few lines of code. See other primitives that already implement a UV-mapping callback for reference.<br />
<br />
References:<br />
* http://en.wikipedia.org/wiki/UV_mapping<br />
* src/librt/primitives/[PRIMITIVE]/[PRIMITIVE].c, read the rt_*_uv() function<br />
<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... UV-mapping for extruded sketches (EXTRUDE) ====<br />
<br />
Code:<br />
* src/librt/primitives/extrude/extrude.c<br />
* src/librt/primitives/table.c<br />
* include/rtgeom.h<br />
<br />
==== complete g-egg exporter ====<br />
The g-egg exporter for panda3d is mostly complete, but needs some fixing and testing. A trivial panda3d app to display a g-egg converted ktank would be adequate.<br />
<br />
|}<br />
&nbsp;<br />
<br />
|}<br />
&nbsp;<br />
<br />
----<br />
<br />
== Documentation and Training ==<br />
----<br />
''Tasks related to creating/editing documents and helping others learn more about BRL-CAD''<br />
<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Add missing documentation (for any ONE command) ===<br />
<br />
BRL-CAD is an extensive system with more than 400 commands and more than a million pages of documentation, but there are approximately 120 commands that are entirely undocumented:<br />
<br />
a-d archer asc2g asc2pix bot-bldxf bottest brep_cube brep_simple brickwall btclsh burst bw-a bw-d bwish c-d chan_add clutter contours d-a damdf dauto dauto2 d-bw dconv ddisp d-f dfft d-i dmod double-asc dpeak dsel dsp_add dstat d-u dwin euclid_format euclid_unformat fbgammamod f-d fence fhor f-i g-adrt g-euclid1 g-jack globe g-off i-a i-d i-f ihist imod istat jack-g kurt lowp molecule nmgmodel nmg-sgp off-g pipe pipetest pix2g pix3filter pixcount pixelswap pixembed pixfields pixfieldsep pixflip-fb pixpaste pix-spm pix-yuv plstat pyramid rawbot remapid rlesortmap rletovcr room rtcell rtexample rtfrac rtrad rtsil rtsrv script-tab sketch solshoot sphflake spltest spm-fb ssampview syn tea tea_nmg testfree texturescale torii ttcp tube txyz-pl u-a u-bw u-d u-f umod ustat vcrtorle vegitation wall wdb_example xbmtorle xyz-pl yuv-pix<br />
<br />
This task involves writing basic documentation for '''JUST ONE''' of those commands in the Docbook XML format. The command documentation should provide a one-sentence description, a detailed paragraph description (200+ words), explanation of '''all''' available command-line options, and one or more examples on how to use the command. <br />
<br />
Code:<br />
* doc/docbook/system/man1/en/Makefile.am<br />
* doc/docbook/system/man1/en/*.xml<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Document MGED's 'saveview' command options ===<br />
<br />
BRL-CAD's primary geometry editor (MGED) provides hundreds of commands. Two of those commands are the savewview and loadview commands that write current view settings out to a text file and read them back in. The saveview command provides -e -i -l and -o options, but they are not documented.<br />
<br />
This task involves writing documentation for those missing options. Consult the source code to see what they do and add the corresponding sections into our Docbook XML doc just like we do in our other documentation files. Test compilation to make sure your XML syntax is correct.<br />
<br />
References:<br />
* src/libged/saveview.c<br />
* doc/docbook/system/mann/en/*.xml<br />
<br />
Code:<br />
* doc/docbook/system/mann/en/saveview.xml<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Write a "BRL-CAD Commands Quick Reference" document ===<br />
<br />
There is already a command quick reference for BRL-CAD's MGED geometry editing tool, but there is not a similar document for BRL-CAD's 400+ command-line commands.<br />
<br />
This task involves writing a quick reference document similar to [http://brlcad.org/w/images/5/52/MGED_Quick_Reference_Card.pdf the MGED quick reference] but for BRL-CAD commands. The sheet should minimally include the following commands:<br />
<br />
mged, rt*, *-g, g-*, fb*, *fb, nirt, remrt, rtsrv, asc2g, g2asc, dbupgrade, pix*, *pix, *-*, brlman, benchmark<br />
<br />
References:<br />
* http://brlcad.org/wiki/Documentation<br />
* http://brlcad.org/w/images/5/52/MGED_Quick_Reference_Card.pdf<br />
* http://appletree.or.kr/quick_reference_cards/CVS-Subversion-Git/git-cheat-sheet-large.png<br />
* http://www.stdout.org/~winston/latex/latexsheet-0.png<br />
* http://img.docstoccdn.com/thumb/orig/524314.png<br />
* http://www.inmensia.com/files/pictures/internal/CheatSheetDrupal4.7.png<br />
* http://www.phpmagicbook.com/wp-content/uploads/2010/06/php-reference-card.jpg<br />
<br />
|}<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Doxygen cleanup ===<br />
<br />
BRL-CAD uses Doxygen for most API documentation but the comment blocks are not optimally set up for Doxygen output.<br />
<br />
This task involves cleaning up the Doxygen comments in the library so that useful reports and API documentation automatically generated (correctly, completely, and cleanly). Verify/fix any Doxygen syntax. Verify/fix groups so that functions are organized neatly and all contained within a group. Provide patches that give clean (PDF) output from Doxygen.<br />
<br />
References:<br />
* http://www.jiggerjuice.net/software/doxygen.html<br />
* http://www.stack.nl/~dimitri/doxygen/starting.html<br />
* http://www.stack.nl/~dimitri/doxygen/<br />
<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... doxygen cleanup for LIBBU ====<br />
<br />
There are approximately 300 documented API function calls in LIBBU.<br />
<br />
Code:<br />
* include/bu.h<br />
* src/libbu<br />
* misc/Doxyfile<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... doxygen cleanup for LIBWDB ====<br />
<br />
There are approximately 100 documented API function calls in LIBWDB. <br />
<br />
Code:<br />
* include/wdb.h<br />
* include/raytrace.h<br />
* src/libwdb<br />
* misc/Doxyfile<br />
<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... doxygen cleanup for LIBRT ====<br />
<br />
There are approximately 1000 documented API function calls in LIBRT. <br />
<br />
Code:<br />
* include/raytrace.h<br />
* src/librt<br />
* src/librt/primitives<br />
* src/librt/comb<br />
* src/librt/binunif<br />
* misc/Doxyfile<br />
|}<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Write a manual page for MGED's "brep" command ===<br />
<br />
BRL-CAD's MGED geometry editor provides hundreds of commands. One of those commands for manipulating and visualizing geometry is the "brep" command.<br />
<br />
This task involves writing a manual page for that command in the Docbook XML format. There are lots of examples to follow.<br />
<br />
References:<br />
* doc/docbook/system/mann/en/*.xml<br />
* http://brlcad.org/wiki/Documentation (contains intro to mged and cheat sheets)<br />
* bin/mged (you'll need to run this to use the "brep" command)<br />
* bin/csgbrep (will create a slew of 'brep'/nurbs objects for the "brep" command)<br />
<br />
Code:<br />
<br />
* doc/docbook/system/mann/en/brep.xml (you write this)<br />
* doc/docbook/system/mann/en/CMakeLists.txt (you edit this)<br />
<br />
Running "make" in a build directory will compile your documentation into html and man page format so you can validate the syntax and formatting. See [[Compiling]] for help.<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Write up Wiki page tutorial on our Volumetric Primitive ===<br />
<br />
BRL-CAD provides a couple dozen distinct primitives. Each primitive is defined by a set of parameters. Several of the more complex primitives have a wiki page describing them in more detail with an example on how to create them.<br />
<br />
This task involves writing up a page on the VOL primitive. Figure out how to use it (see the "in" command), create an example input data set, and write up a wiki page on exactly what steps are needed similar to our other wiki pages:<br />
<br />
References:<br />
* http://brlcad.org/wiki/DSP<br />
* http://brlcad.org/wiki/Sketch<br />
* http://brlcad.org/wiki/EBM <-- particularly useful as the data is similar for VOL<br />
<br />
Show how to create a VOL with at least two layers/slices. Include images like the other examples. Put the write-up at http://brlcad.org/wiki/VOL<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Write a wiki tutorial on how to create a polygonal mesh (NMG) manually ===<br />
<br />
BRL-CAD provides a couple dozen distinct primitives. Each primitive is defined by a set of parameters. Several of the more complex primitives have a wiki page describing them in more detail with an example on how to create them.<br />
<br />
This task involves writing up a page on the NMG polygonal mesh primitive. Figure out how to use it (not a simple task, will require some trial and error), create an example input, and write up a wiki page on exactly what steps are needed similar to our other wiki pages:<br />
<br />
References:<br />
* http://brlcad.org/wiki/DSP<br />
* http://brlcad.org/wiki/EBM<br />
* http://brlcad.org/wiki/Sketch <-- particularly useful as neither NMG nor sketch are meant to be created manually<br />
<br />
Note the "facetize" command in mged will convert an existing object into NMG format. The get/put commands should help from there like the sketch tutorial.<br />
<br />
Show how to create an NMG cube or wedge or similar simple shape. Include images like the other examples. Put the write-up at http://brlcad.org/wiki/NMG<br />
<br />
|}<br />
<br />
----<br />
<br />
==Outreach and Research ==<br />
----<br />
''Tasks related to community management, outreach/marketing, studying problems, and recommending solutions''<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
<br />
=== Investigate permuted vertex lists from g-iges + iges-g ===<br />
<br />
BRL-CAD has a geometry exporter and importer for the International Graphics Exchange Standard (IGES) file format. If you run our g-iges exporter on some geometry, then run iges-g on that same geometry to import it back to BRL-CAD format, the geometry will have permuted vertex lists. Particularly for geometry already in polygonal format, such as our NMG or BoT geometry, this conversion should result in identical geometry but presently does not.<br />
<br />
This task involves investigating why this occurs, reporting (in detail) why it occurs, and if obvious, making a recommendation on how to fix the problem.<br />
<br />
Code:<br />
* src/conv/iges<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Write article on BRL-CAD's code hardening efforts ===<br />
<br />
We've been working for several years on "code hardening", improving the quality of BRL-CAD's source code through a variety of best practices and code cleanup efforts.<br />
<br />
This task has you write an article that succinctly summarizes all of our efforts. You'll need to become familiar with our HACKING file as well as read up on our various hardening efforts. You're welcome to ask our devs questions over IRC for more information too.<br />
<br />
Include at least one picture. Article should be 300-900 words long and be fully proof-read before submitting (check for grammar and spelling mistakes, please).<br />
<br />
Resources:<br />
* http://brlcad.org/wiki/Code_Cleanup<br />
* http://brlcad.org/d/node/96<br />
* http://www.coverity.com/library/pdf/coverity-scan-2011-open-source-integrity-report.pdf<br />
<br />
Add the article to http://brlcad.org/wiki/Community_Publication_Portal<br />
<br />
|}<br />
<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Write an article soliciting a Windows platform maintainer ===<br />
<br />
BRL-CAD runs on a number of platforms and distributes releases many times a year. Creating a release for any particular binary platform, like Windows or Mac OS X or Linux, is delegated to a "release maintainer". We currently have maintainers for a number of platforms but do not have one for Windows. Basically, it's a volunteer job, it's a lot of work, but not very hard and very rewarding. There are thousands of binary downloads every month, so lots of people benefit from a maintainer's efforts. <br />
<br />
This task involves writing a brief solicitation article announcing our interest for a maintainer, describing the responsibilities involved, and telling them how to take up this responsibility. Come talk to us on IRC for more specific details.<br />
<br />
Resources:<br />
* http://svn.code.sf.net/p/brlcad/code/brlcad/trunk/HACKING<br />
(See the release section near the bottom to see what maintainers do)<br />
<br />
Add the article to http://brlcad.org/wiki/Community_Publication_Portal<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create an ISST screenshot or animation ===<br />
<br />
Everyone loves to see screenshots and animations of software in action. We use both in our marketing and outreach. See some of the examples below that we already have.<br />
<br />
Create an awesome screenshot and/or animation of our 'isst' tool in action. It's an interactive geometry viewer interface. It should be graphically interesting and give some sense of capability. You should import a visually complex and interesting model with LOTS of polygons and detail.<br />
<br />
References:<br />
* http://brlcad.org/gallery/d/19-4/MGED.jpg<br />
* http://brlcad.org/tmp/archer.png<br />
* http://brlcad.org/gallery/s/screenshots/<br />
* http://www.google-melange.com/gci/task/view/google/gci2012/8019211<br />
<br />
Note that we have several screenshot tasks. Note you may have to go through some or our basic MGED tutorials (see docs section on our website) just to be able to display geometry. Finally, give others a chance if you already completed one of the other screenshot tasks. ;)<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Generate a code coverage report (lcov+gcov) ===<br />
<br />
This task involves setting up and generating an lcov code coverage analysis on BRL-CAD. After learning how to use the tool, discuss with the developers what portion of the code will be most useful to analyze, or scan these:<br />
<br />
"benchmark"<br />
"make test"<br />
"make regress"<br />
Submit the results.<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Model BRL-CAD logo in BRL-CAD ===<br />
<br />
The BRL-CAD Logo depicts two interlocked nodes. Modeling the new Logo in BRL-CAD in CSG (without NURBS, without polygons) requires some careful arrangement, but can provide an attractive three dimensional rendering that we can use for a number of purposes..<br />
<br />
The output of this task will be a .g file of BRL-CAD logo and a rendered image. The two segments you model MUST be two or more regions, ideally hinged together (you can have center pins or not, you decide). This is your opportunity as an artist and 3D magician to come up with an interesting yet faithful interpretation.<br />
<br />
References:<br />
* http://brlcad.org/images/angelov_256.png<br />
* http://brlcad.org/d/node/92<br />
* Introduction to MGED at http://brlcad.org/wiki/Documentation<br />
<br />
Note that there are other logo modeling tasks and yours must start from scratch and be completely original. If we get a hint that yours was based off of or used measurements from some other model, you will be barred.<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Profile NURBS prep performance ===<br />
<br />
BRL-CAD implements support for rendering of NURBS representation geometry. If you import a solid 3DM or STEP format model into BRL-CAD, it will import as BREP/NURBS geometry. Opening that geometry in BRL-CAD's MGED editor will tell you what objects are available and our 'rt' tool will raytrace it. When geometry is ray traced, it first goes through a "prep" phase and then it starts shooting rays. Our prep phase is entirely unoptimized so we'd like to know where all the time is presently being spent during prep..<br />
<br />
This task involves importing some NURBS geometry into BRL-CAD and ray tracing that geometry with a profiler watching our prep performance. Any profiler will do, including gprof, but a performance monitor like oprofile or the Mac "Instruments" application (or Shark) are preferred.<br />
<br />
Learning how to use a profiler is beyond the scope of this task, so it make take you considerably longer to provide us with useful information if you've never run a profiler before.<br />
<br />
To capture prep performance, you will need to import some fairly complex geometry. You should be able to search google with "filetype:3dm" or "filetype:step" or find something on grabcad.com to import<br />
<br />
Running "tops" within mged will tell you what geometry is available for rendering.<br />
<br />
Running "rt -o file.png -s32" on the system command line (not inside mged) should minimize the ray overhead or you can specifically isolate the prep phase we care about. Prep is the time between when rt is run where it opens a window until the first pixels are fired and pixels start filling in.<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Continue investigating GMP integration ===<br />
<br />
BRL-CAD uses a fastf_t typedef for most all math operations that is usually a "double" floating point type. We would like to provide the option for resorting to exact arithmetic if possible by merely redefining fastf_t to a C++ type sufficiently overloaded to behave the same. You should be proficient with C++ operator overloading to take this work on. This task is a continuation of a prior GCI task (read it in full!):<br />
<br />
http://www.google-melange.com/gci/task/view/google/gci2012/7946218<br />
<br />
This task involves testing compilation with a C++ class with overloaded operators such that vmath macro calls still work as well as a sampling of LIBBN API function calls without major changes to the original code. A perfect example case study would be creating the class then testing whether bn_dist_pt3_pt3() and bn_mat_determinant() compute correctly for values that cannot be exactly represented with floating point arithmetic.<br />
<br />
Building on the previous GCI task work, take it to the next step. Try setting a vector to 1/3, 1/3, 1/3 and 0.1, 0.1, 0.1 and get proper values to print. Change the V3ARGS() macro if needed. If that all works, try to get bn_dist_pt3_pt3() to work. Report and discuss your progress.<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create prototype 2D Drawing ===<br />
<br />
BRL-CAD provides limited services for drafting features including the production of 2D CAD drawings (blueprints).<br />
<br />
This task involves designing a 2D CAD drawing prototype. The prototype MUST capture a set of design requirements and follows industry conventions.<br />
<br />
If you've never seen a real blueprint drawing before, then this task might be too hard for you. Your result needs to refer to ISO 128 and/or ASME Y14.41 or other standard drawing elements. <br />
<br />
Basically, identifying a style of drawing that we should support including pointing out the critical elements to be included on each drawing, their location, size, placement, etc.<br />
<br />
References:<br />
* http://brlcad.org/design/drafting<br />
* http://en.wikipedia.org/wiki/ISO_128<br />
* http://en.wikipedia.org/wiki/ASME_Y14.41-2003<br />
* http://en.wikipedia.org/wiki/Geometric_Dimensioning_and_Tolerancing<br />
* http://www.ptc.com/WCMS/files/45691/en/4307_FoundationXE_DS.pdf<br />
<br />
Note that this is a "redo" of a previous GCI task. Read the discussion thread and his work to help ensure you don't make similar mistakes. ;-)<br />
<br />
http://www.google-melange.com/gci/task/view/google/gci2012/7985229<br />
<br />
|}<br />
<br />
<br />
----<br />
<br />
== Quality Assurance ==<br />
----<br />
''Tasks related to testing and ensuring code is of high quality''<br />
<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Fix single-precision floating point crash ===<br />
<br />
By default, all of BRL-CAD compiles using double-precision floating point arithmetic. We provide a simple typedef, however, that converts almost the entire system over to single-precision floating point. This compilation mode was recently cleaned up and tested, but a bug was found. The problem is reproduced very simply by compiling in single precision mode and running our "rt" ray tracer tool.<br />
<br />
To compile in single precision, edit the include/bn.h header file and change the fastf_t typedef from double to float. To reproduce the bug, compile BRL-CAD and write this out to a text file named star.view:<br />
<br />
viewsize 2.500000000e+05;<br />
eye_pt 2.102677960e+05 8.455500000e+04 2.934714650e+04;<br />
viewrot -6.733560560e-01 6.130643360e-01 4.132114880e-01 0.000000000e+00<br />
5.539599410e-01 4.823888300e-02 8.311441420e-01 0.000000000e+00<br />
4.896120540e-01 7.885590550e-01 -3.720948210e-01 0.000000000e+00<br />
0.000000000e+00 0.000000000e+00 0.000000000e+00 1.000000000e+00 ;<br />
start 0;<br />
end;<br />
<br />
Then run rt feeding it that view script as input. This is an example how to run within the gdb debugger:<br />
gdb path/to/bin/rt<br />
...<br />
(gdb) run -F/dev/X -M .cmake/share/db/star.g all < star.view<br />
<br />
At this point, rt should crash due to an infinite recursion. A backtrace in the debugger will show lots and lots of calls to rt_shootray() and light_hit().<br />
<br />
This task involves investigating and preventing the crash. Provide a patch that fixes the bug.<br />
<br />
References:<br />
* man gdb<br />
* brlman rt<br />
<br />
Code:<br />
* src/librt/shoot.c<br />
* src/liboptical/sh_light.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Fix closedb ===<br />
<br />
BRL-CAD geometry editor application (mged) has several hundred commands including two very simple commands for opening and closing a geometry database file. While the user rarely ever needs to close the file, as all changes are always immediately saved, it can be of use to scripting applications. However, at some point in the recent past, the ''closedb'' command was horked. It's undoubtedly something very simple but we haven't bothered to look due to other priorities. You can fix it. If you run these simple steps within graphical mged, you should see how commands stop working after calling closedb:<br />
<br />
mged> opendb test.g y<br />
mged> make sph sph<br />
mged> l sph<br />
mged> closedb<br />
mged> make sph sph<br />
mged> opendb test.g<br />
mged> l sph<br />
mged> exit<br />
<br />
Provide a patch that fixes the bug or tell us which SVN revision introduced the bug. Make sure you can reproduce the bug before claiming this task, which presumes you know how to download/install BRL-CAD from a source distribution.<br />
<br />
Code:<br />
* src/mged/mged.c<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create an utility library (LIBBU) API unit test ===<br />
<br />
There are more than 300 library functions in our core LIBBU library. As a core library used by nearly every one of BRL-CAD's tools, testing those functions for correct behavior is important.<br />
<br />
This task involves implementing a new unit test for any of LIBBU's source files that do not already have a unit test defined. The test should run all of the public functions and be hooked into our build system. We have lots of existing unit tests to follow as an example.<br />
<br />
References:<br />
* include/bu.h<br />
* src/libbu/*.c<br />
* src/libbu/tests/*.c<br />
<br />
Code:<br />
* src/libbu/tests/[TEST].c<br />
* src/libbu/tests/CMakeLists.txt<br />
<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... unit test for LIBBU badmagic.c ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... unit test for LIBBU bomb.c ====<br />
|}<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create numerics library (LIBBN) API unit test ===<br />
<br />
There are more than 300 library functions in our core LIBBN library. As a core library used by nearly every one of BRL-CAD's tools, testing those functions for correct behavior is important.<br />
<br />
This task involves implementing a new unit test for any of LIBBN's source files that do not already have a unit test defined. The test should run all of the public functions and be hooked into our build system. We have lots of existing unit tests to follow as an example.<br />
<br />
References:<br />
* include/bn.h<br />
* include/plot3.h<br />
* include/vmath.h<br />
* src/libbn/*.c<br />
* src/libbu/tests/*.c <-- note libbu, not libbn for examples<br />
<br />
Code:<br />
* src/libbn/tests/[TEST].c<br />
* src/libbn/tests/CMakeLists.txt<br />
<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... unit test for LIBBN axis.c ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... unit test for LIBBN qmath.c ====<br />
|}<br />
&nbsp;<br />
{| cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
==== ... unit test for LIBBN rand.c ====<br />
|}<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Find, reliably reproduce, and report any bug in Archer ===<br />
<br />
Archer is our new modeling interface and a soon to merge with our long-standing MGED geometry editor. It undoubtedly has bugs. It's your job to find one, but do so in a manner that is so obvious that one of the other devs will be able to instantly reproduce the bug given your specific instructions. Find a way to make archer crash, become unresponsive, or otherwise behave incorrectly. You will have to explore the tool with minimal documentation.<br />
<br />
This task involves filing a bug report with verifiable and reproducible steps that clearly demonstrate the bug. It can't be a bug already reported or otherwise documented nor can it be merely behavior you don't like.<br />
<br />
References:<br />
* archer<br />
* Introduction to MGED at http://brlcad.org/wiki/Documentation (many of the mged commands are available in some fashion within archer) <br />
* BUGS file in any source/binary distribution<br />
* http://sourceforge.net/tracker/?atid=640802&group_id=105292&func=browse<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Reproduce any 10 unconfirmed open bug reports ===<br />
<br />
BRL-CAD presently has approximately 75 open bug reports of which 50 are unassigned. Read the comments and status to see if the bug has been confirmed/reproduced. <br />
<br />
This task involves going through those reports and REPRODUCE at least 10 of the ones that have not been confirmed. When you can reproduce the issue being reported, you'll comment on the thread to state as much and attach any data you used to reproduce the crash.<br />
<br />
References:<br />
* https://sourceforge.net/tracker/?limit=100&func=&group_id=105292&atid=640802&assignee=100&status=1&submit=Filter<br />
|}<br />
----<br />
<br />
== User Interface ==<br />
----<br />
''Tasks related to user experience research or user interface design and interaction''<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Design a prototype CAD GUI layout ===<br />
<br />
BRL-CAD's usability is notoriously complex and "expert friendly". MGED and Archer are the main geometry editors, with drastically different user interfaces.<br />
<br />
This task involves evaluating the features provided by MGED and Archer, then designing a new GUI layout that encompasses their features while improving usability. Rationale for design decisions and layout should be provided.<br />
<br />
References:<br />
* http://brlcad.org/design/gui<br />
<br />
Provide one or more mock-up images (png, pdf, psd, html, whatever)<br />
<br />
Search for other similar GCI tasks to avoid making a similar design. You can use any tools, but your work must be original.<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create an ISST screenshot or animation ===<br />
<br />
Everyone loves to see screenshots and animations of software in action. We use both in our marketing and outreach. See some of the examples below that we already have.<br />
<br />
Create an awesome screenshot and/or animation of our 'isst' tool in action. It's an interactive geometry viewer interface. It should be graphically interesting and give some sense of capability. You should import a visually complex and interesting model with LOTS of polygons and detail.<br />
<br />
References:<br />
* http://brlcad.org/gallery/d/19-4/MGED.jpg<br />
* http://brlcad.org/tmp/archer.png<br />
* http://brlcad.org/gallery/s/screenshots/<br />
* http://www.google-melange.com/gci/task/view/google/gci2012/8019211<br />
<br />
Note that we have several screenshot tasks. Note you may have to go through some or our basic MGED tutorials (see docs section on our website) just to be able to display geometry. Finally, give others a chance if you already completed one of the other screenshot tasks. ;)<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Categorize all of BRL-CAD's commands into a spreadsheet ===<br />
<br />
BRL-CAD is a suite of more than 400 processing tools, image tools, geometry converters, and more. There is an existing spreadsheet that characterizes all of the available commands in terms of inputs, outputs, and options, but there is insufficient characterization of BRL-CAD's commands as to how they logically group and work together.<br />
<br />
This task involves building up a spreadsheet that lists all of our commands, describing a finite set of command categories, and characterizing all commands into those categories while filling in the spreadsheet with details for each command.<br />
<br />
References:<br />
* A spreadsheet template will be provided.<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Redesign MGED/Archer's Menu ===<br />
<br />
BRL-CAD's geometry editing applications, like most graphical applications, have an application menu with a variety of features, capabilities, and options, but with little attention to cohesive design.<br />
<br />
Review the menus for MGED and Archer. Design a new menu system based on both of them that eliminates confusion, is easier to navigate, and has menu options more logically grouped together.<br />
<br />
References:<br />
* mged<br />
* archer<br />
<br />
Provide screenshots or detailed text indicating what menu options should be available and what exactly is on each menu.<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create Wordpress theme for BRL-CAD website ===<br />
<br />
BRL-CAD's website was recently redesigned. The current website uses Drupal and Mediawiki. Our new website will be using Wordpress and Mediawiki.<br />
<br />
This task involves creating a custom Wordpress theme based on our new website design.<br />
<br />
References:<br />
* http://cpp-tricks.com/brlcad/<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Migrate Drupal site to Wordpress ===<br />
<br />
BRL-CAD's main website content runs on Drupal. There are a lot of articles, user accounts, and other information contained within this installation of Drupal.<br />
<br />
This task involves setting up an installation of Wordpress on our production server and migrating the data from Drupal into the Wordpress site.<br />
<br />
References:<br />
* http://brlcad.org/d/<br />
<br />
This task requires that you establish an account on one of our servers. There is a setup process involved. Join us on IRC for details.<br />
|}<br />
<br />
----<br />
<br />
= When You're Done =<br />
----<br />
<br />
For non-code, just send us your file(s). For code changes, you will be expected to [[Patches|provide a patch file]]. Make sure you ''read'' your patch file before submitting it. Make sure your patch file will apply cleanly to an unmodified checkout of BRL-CAD:<br />
<br />
svn co https://brlcad.svn.sourceforge.net/svnroot/brlcad/brlcad/trunk brlcad.edit<br />
cd brlcad.edit<br />
# make changes<br />
svn diff > ~/my.patch<br />
# read ~/my.patch file with text editor<br />
cd ..<br />
svn co https://brlcad.svn.sourceforge.net/svnroot/brlcad/brlcad/trunk brlcad.fresh<br />
cd brlcad.fresh<br />
patch -p0 < ~/my.patch<br />
# submit your patch file to our patches tracker<br />
&nbsp;</div>Erikhttps://brlcad.org/w/index.php?title=User:Erik&diff=4944User:Erik2013-01-30T22:39:57Z<p>Erik: </p>
<hr />
<div>Developer of horrible monstrosities.<br />
<br />
Currently <br />
* writing a replacement for CIA.vc (post commits to irc chan), currently available at http://elfga.com/notify/<br />
* maintaining FreeBSD (http://FreeBSD.org) port<br />
* code gardening<br />
* working on adrt/isst/tie stuff<br />
* developing cel shader<br />
* SSE experiments<br />
* SWIG export of core libraries<br />
* other things and stuff<br />
<br />
Has done<br />
* port to FreeBSD5 (2003)<br />
* re-write build system to use automake/autoconf/libtool/etc (from "cake", 2003)<br />
* developed metaball primitive<br />
* developed marching cubes functionality for CSG to generate triangle meshes<br />
* mentored André for MLT (http://brlcad.org/wiki/Metropolis_Light_Transport) impl. His web log is http://andrecastelo.wordpress.com/<br />
* wrote "save as any image" framework (src/libbu/image.c, later src/libicv) and began tool conversion to use it<br />
* wrote a basic obj-g converter<br />
* mentoring [[User:Popescu.andrei1991|Andrei]] with libpkg stuff<br />
* GCI mentoring<br />
* other things and stuff.</div>Erikhttps://brlcad.org/w/index.php?title=User:Erik&diff=4943User:Erik2013-01-30T22:39:00Z<p>Erik: minor gsoc/gci updates</p>
<hr />
<div>Developer of horrible monstrosities.<br />
<br />
Currently <br />
* writing a replacement for CIA.vc (post commits to irc chan)<br />
* maintaining FreeBSD (http://FreeBSD.org) port<br />
* code gardening<br />
* working on adrt/isst/tie stuff<br />
* developing cel shader<br />
* SSE experiments<br />
* SWIG export of core libraries<br />
* other things and stuff<br />
<br />
Has done<br />
* port to FreeBSD5 (2003)<br />
* re-write build system to use automake/autoconf/libtool/etc (from "cake", 2003)<br />
* developed metaball primitive<br />
* developed marching cubes functionality for CSG to generate triangle meshes<br />
* mentored André for MLT (http://brlcad.org/wiki/Metropolis_Light_Transport) impl. His web log is http://andrecastelo.wordpress.com/<br />
* wrote "save as any image" framework (src/libbu/image.c, later src/libicv) and began tool conversion to use it<br />
* wrote a basic obj-g converter<br />
* mentoring [[User:Popescu.andrei1991|Andrei]] with libpkg stuff<br />
* GCI mentoring<br />
* other things and stuff.</div>Erikhttps://brlcad.org/w/index.php?title=User:Erik&diff=4685User:Erik2012-11-29T17:50:28Z<p>Erik: mention bot work</p>
<hr />
<div>Developer of horrible monstrosities.<br />
<br />
Currently <br />
* writing a replacement for CIA.vc (post commits to irc chan)<br />
* maintaining FreeBSD (http://FreeBSD.org) port<br />
* code gardening<br />
* working on adrt/isst/tie stuff<br />
* developing cel shader<br />
* SSE experiments<br />
* SWIG export of core libraries<br />
* mentoring [[User:Popescu.andrei1991|Andrei]] with libpkg stuff<br />
* other things and stuff<br />
<br />
Has done<br />
* port to FreeBSD5 (2003)<br />
* re-write build system to use automake/autoconf/libtool/etc (from "cake", 2003)<br />
* developed metaball primitive<br />
* developed marching cubes functionality for CSG to generate triangle meshes<br />
* mentored André for MLT (http://brlcad.org/wiki/Metropolis_Light_Transport) impl. His web log is http://andrecastelo.wordpress.com/<br />
* wrote "save as any image" framework (src/libbu/image.c, later src/libicv) and began tool conversion to use it<br />
* wrote a basic obj-g converter<br />
* other things and stuff.</div>Erikhttps://brlcad.org/w/index.php?title=User:Popescu.andrei1991&diff=4228User:Popescu.andrei19912012-07-25T12:03:48Z<p>Erik: stub in dates</p>
<hr />
<div>==Personal Info==<br />
Hello, my name is Andrei - Constantin Popescu, I usually go by Andrei. I am a second year undergraduate at Polytechnic University of Bucharest,studying at the<br />
computer science department.<br />
<br />
==Contact== <br />
I can usually be found on IRC on #brlcad - freenode, I have various nicknames, depending on availablity : andrei, andrei_, andrei__.<br />
The quickest way to reach me on e-mail is the address:<br />
popescu.andrei1991@gmail.com - I read emails on this several times a day.<br />
My github account is : https://github.com/pandrei <br />
<br />
I will use this page to keep track of my progress on a daily basis.<br />
<br />
==Project Summary==<br />
Firstly, here can be found my official proposal.<br />
https://google-melange.appspot.com/gsoc/proposal/review/google/gsoc2012/popescuandrei/4002<br />
<br />
The purpose of a package managing library ( or tool) is to pass around packages <br />
containing data from brlcad tools. The packages are sent via TCP and as a result<br />
are using TCP header.<br />
TCP -- http://en.wikipedia.org/wiki/Transmission_Control_Protocol<br />
<br />
My current knowledge is that the TCP Payload[1] has a size of 64kb, at least<br />
in the linux kernel. There has been a reported incident where libpkg fails to send 24k+ packages.<br />
[1] Payload - TCP field containinig effective data (user data, for example).<br />
<br />
I believe this is the reported incident : http://permalink.gmane.org/gmane.comp.cad.brlcad.devel/959.<br />
<br />
Tpkg will be used for testing the package issue. <br />
I am currently researching dstat and ifstat, found via <br />
apt-cache search ifstat<br />
dstat - versatile resource statistics tool<br />
ifstat - InterFace STATistics Monitoring<br />
<br />
The curent state of brlcad libpkg is a basic client-server protocol.<br />
<br />
<br />
<br />
==GsoC 2012 progress==<br />
<br />
So far I have managed to compile and install brl-cad on a 32-bit Archlinux.<br />
I am focusing on the tpkg command to see what exactly happens and properly submitting the global removal patch.<br />
<br />
<br />
Tests have been run 3D version on a remote machine. The graphics are present on here on the log. However, after more discussion it was decided there is too much noise in 3d mesh.<br />
<br />
Currently, tests have been performed for package size from 2048 to 4194304 ( 2048 ^ 2 ). Tests have been performed on a 8M file. <br />
This is the graphic obtained by testing : http://i.imgur.com/H5Q2u.jpg <br />
<br />
TODO : add some github link with files and numerical values.<br />
<br />
There is a second test, running package size from 1 to 2048 on a 8M test.<br />
It has not finished at the moment of writing. However, a graph was drawn with some partial data ( 1 - 95 package size ). It's correctness needs to be checked but it does seem to look like an exponential curve.<br />
<br />
TODO : add details and graphics when the script finishes.<br />
<br />
I m currently working on fixing the unit test. <br />
<br />
== Performance measuring ==<br />
<br />
The 3d graphics have finished.<br />
<br />
File size increase as powers of two series from 1 to 8MB<br />
<br />
Package size 1 - 2048<br />
<br />
http://i.imgur.com/OPum5.png<br />
<br />
Package size 2048 - 4194304<br />
<br />
http://i.imgur.com/fH4rL.png<br />
<br />
Package size 1 - 4194304<br />
<br />
http://i.imgur.com/AXUpN.png<br />
<br />
After converting data into CSV format and using GNU plot I have obtained the following graphics : <br />
<br />
1 - 2048 : http://i.imgur.com/tnWAa.png<br />
<br />
2048 - 4194304 : http://i.imgur.com/isNXL.png<br />
<br />
Currently I m working to see if I can combine the two files. From what I read so far this seems rather complicated.<br />
<br />
== Daily development log ==<br />
<br />
<br />
== Weeks 1 - 3 ==<br />
21th May - 8th of June - exams period, minor work on tpkg patch and on the<br />
red - black tree test unit.<br />
<br />
9th June - working on obtaining commit access asap. Currently developing the<br />
performance shell script.<br />
<br />
10-11th June - not much work , documenting regarding bash programming.<br />
<br />
== Week 4 ==<br />
<br />
12-13th June -finishing the shell script, applying feedback given by Erik on the tpkg parameter patch.<br />
<br />
14th June - submitting the final version of the shell script.<br />
<br />
15-17th of June - learning K&R indentation, learning about POSIX. Finishing the tpkg script and the tpkg.c modifications.<br />
<br />
18th of June - unsuccesful attempts to sync the server and client ( To start the client only after server started) using signal handling, docummenting about signal handling<br />
<br />
19th of June - unsuccesful attempts to achieve the above by using inter-process communications, understanding thread concepts, docummenting about the basics of fork() , pthreads_<br />
<br />
== Week 5 ==<br />
<br />
20th of June - sync the server with the client by using a loop to detect a key string (while "Server_ready" isn't found in the log_file the client does not start. Having issues with redirecting output from a background process<br />
<br />
21st of June - finished tpkg script for localhost ( both client and server are on the same machine), developing the remote one. (Using two different machines)<br />
<br />
22nd of June - getting some hints from #bash, reading about ssh, working on the ssh remote script(password-less ssh login process). Having issues with the ssh session not exiting properly.<br />
<br />
23rd of June - script finished, full functional started script on two machines<br />
setting up log files / reading a bit about sampling necessary for graphic( how many points are enough )<br />
<br />
24th - 25th of June - scripts running time, realized I could have done them a lot better and faster. No notable work done in these days. ( a script using small files ran twice and one using large files( up to 700 mb ) ran once.<br />
<br />
26th of June the total dimension for the log files was 8.4Gb on server machine as well as on client ( minor difference) purging the files from irrelevant data.<br />
read about sed and awk.<br />
Compared the first two tests( which use identical parameters) and found no notable difference. Starting to read about and write the octave script. Reading about interpolation and how can I use it if I don t know what points am I missing.<br />
<br />
27th of June - asked for some mathematical hints on #octave - freenode.<br />
Finished graphs currently without interpolation. Looking up bu_bomb.log but they are empty. Re-run the script for a small number of iterations still found no error. <br />
<br />
== Week 6 == <br />
<br />
28th of June - uploaded data. upated logs.<br />
<br />
29th of June - Reading about google test, planning on what testing framework to use for libpkg client - server.<br />
<br />
30th of June - still stuck with the OOP from google test.<br />
<br />
1st of July - learning / understanding how to use google test for this was taking too long, finding another way.<br />
<br />
2nd of July - initially created the unit test as a shell, after further digging, decided to change the plan and make it a .c unit test.<br />
<br />
3rd of July - finished unit testing. uploaded unit test on sourceforge. <br />
<br />
4th of July - minor work, mostly look up things I already did and see where and what I can improve.<br />
<br />
== Week 7 ==<br />
<br />
5th of July - Issue with wallclock, script was modified to counter the wallclock instability. Single variable tests were run.<br />
<br />
6th of July - issues with the script, for some reason ssh was not working. Adjusting that. Finished all the issues with the scripts / tpkg. Started 2d graphics ( 1 - 2048 ) and ( 2048 -> 2048^2).<br />
<br />
7th of July - 2048 -> 2048^2 testing finished, graph drawn. Minor analysis on it. Drawn a graph with the partial data from 1 - 2048 one, does seem incorrect. Will be reworked.<br />
<br />
8th of July - Restarted 1 - 2048 test. Discussing further tests and how I should proceed. Minor reading about unit tests in networking<br />
<br />
9th of July - Scripts still running, wrote unit test. Received feedback started applying it. Monitoring the values obtained from the tests. The " 3D graphic " test failed ( script execution ended ). It was an script error not a tpkg error.<br />
Fixed it and resumed tests.<br />
<br />
10th of July - working on the test unit, running tests. <br />
<br />
11th of July - Graphed the results of one test<br />
<br />
== Week 8 ==<br />
<br />
12th of July - discovered an error in testing. Previously calculated average was taken into consideration when it should have not, restarted scripts. Got two more machines ( installing archlinux + brlcad on them )<br />
<br />
13th of July - fixing HACKING issues on previous patches. Providing 1-2048 Graph.<br />
<br />
14th - 15th of July - minor work, waiting for tests mainly.<br />
<br />
16th of July - finished tests, graphed results. TODO:// Complete with rest<br />
<br />
17th of July - obtain data in CSV format, attempt to check scripts correctness, minor reasearch about gnuplot<br />
<br />
18th of July -<br />
<br />
== Week 9 ==<br />
<br />
19th of July -<br />
<br />
20th of July -<br />
<br />
21th of July -<br />
<br />
22th of July -<br />
<br />
23th of July -<br />
<br />
24th of July -<br />
<br />
25th of July -</div>Erikhttps://brlcad.org/w/index.php?title=Building_from_SVN&diff=4227Building from SVN2012-07-25T11:55:47Z<p>Erik: </p>
<hr />
<div>== Obtain the sources ==<br />
<br />
BRL-CAD has recently [[Cvs2svn|switched from CVS to the Subversion system]]. In the new system some of the earlier complexities inherent to CVS are gone, no ''-dP'' option is required and developers will not need their passwords or usernames until it is time to commit a change.<br />
<br />
For non-developers:<br />
<pre>svn checkout https://brlcad.svn.sourceforge.net/svnroot/brlcad/brlcad/trunk brlcad</pre><br />
<br />
Note: If you do not yet have an SVN client installed, go to http://subversion.tigris.org for information on obtaining an appropriate SVN client for your platform. Most modern Linux/BSD/UNIX distributions will also have SVN available in their package repositories.<br />
<br />
== Generate the configure script ==<br />
cd brlcad<br />
./autogen.sh<br />
<br />
If autogen.sh reports that the build system is NOT ready and it's not clear why, rerun autogen.sh in verbose mode:<br />
./autogen.sh --verbose<br />
For example, if you're running Ubuntu and you don't have autoconf installed, you may need to run the command "sudo apt-get install autoconf", and then try to run autogen.sh again. You may need to also install "libtool" or some other package.<br />
=== An example generating the configure script on Mac OS X ===<br />
You need to do " sudo port install libtool" to get GNU version of libtool.<br />
imac:brlcad username$ sudo ln -s /usr/local/bin/glibtoolize /usr/bin/libtoolize<br />
Password:<br />
imac:brlcad username$ ./autogen.sh<br />
Preparing the BRL-CAD build system...please wait<br />
<br />
Found GNU Autoconf version 2.61<br />
Found GNU Automake version 1.10<br />
Found GNU Libtool version 1.5.26<br />
<br />
Automatically preparing build ... done<br />
<br />
The BRL-CAD build system is now prepared. To build here, run:<br />
./configure<br />
make<br />
imac:brlcad username$<br />
<br />
== Configure the build system ==<br />
./configure --help<br />
./configure --prefix=[install_dir] --enable-optimized --enable-all<br />
<br />
When building for multiuser file servers it is often useful to make the install_dir reflect the version and/or architecture of the compile. An example would be "--prefix=/usr/brlcad/rel-7.20.2" to install into a /usr/brlcad/rel-7.20.2 directory. This way a single system can have multiple versions of BRL-CAD installed or multiple binary formats for various architectures if installing on a network file system. Symbolic links are then usually added to point to the "current" or "main" version that is preferable to provide so that users only need to add /usr/brlcad/bin to their path. Examples include:<br />
<br />
;By version<br />
:/usr/brlcad/rel-7.8.0 (release 7.8.0)<br />
:/usr/brlcad/rel-7.6.0 (release 7.6.0)<br />
<br />
;By architecture<br />
:/usr/brlcad/ia32 (linux on Pentium)<br />
:/usr/brlcad/ia64 (linux on Itanium)<br />
:/usr/brlcad/x86_64 (linux on Opteron)<br />
<br />
;By version and architecture<br />
:/usr/brlcad/rel-7.8.0/mips32 (IRIX on MIPS in 32-bit mode, release 7.8.0)<br />
:/usr/brlcad/rel-7.8.0/mips64 (IRIX on MIPS in 64-bit mode, release 7.8.0)<br />
:/usr/brlcad/rel-7.8.2/mips32 (IRIX on MIPS in 32-bit mode, release 7.8.2)<br />
<br />
IMPORTANT!!! - Because BRL-CAD has such a long development history, it predates some library naming conventions in modern operating systems. This means an attempt to configure for an install in the "/usr" path on Linux (for example) will stand a good chance of damaging important system libraries - e.g. BRL-CAD libraries put in "/usr/lib" may overwrite system libraries with the same names. Using "/usr/brlcad" or "/opt/brlcad" means all installed files will be safely contained in the brlcad directory.<br />
<br />
== Compile and test your build ==<br />
make<br />
<br />
At this point, you should have a fully installed and working system. You can test things by doing:<br />
<br />
make test<br />
make benchmark<br />
<br />
Both the test and benchmark should report successfully if everything is working correctly. Report any failures to the BRL-CAD [http://sourceforge.net/tracker/?group_id=105292&atid=640802 bug tracker].<br />
<br />
== Install ==<br />
make install<br />
<br />
If you created a prefix as described above for multiple versions or multiple architectures, you should now create your symbolic links for user convenience and consistency. Example where /usr/brlcad/rel-7.8.0/mips32 was used as the install_dir prefix:<br />
<br />
<pre>% ln -s rel-7.8.0/mips32 /usr/brlcad/stable<br />
% ln -s stable/bin /usr/brlcad/bin<br />
% ln -s stable/include /usr/brlcad/include<br />
% ln -s stable/lib /usr/brlcad/lib<br />
% ln -s stable/man /usr/brlcad/man<br />
% ln -s stable/share /usr/brlcad/share<br />
% ls -l /usr/brlcad<br />
total 48<br />
lrwxr-xr-x 1 root wheel 10 12 Apr 09:00 bin -> stable/bin<br />
lrwxr-xr-x 1 root wheel 14 12 Apr 09:00 include -> stable/include<br />
lrwxr-xr-x 1 root wheel 10 12 Apr 09:00 lib -> stable/lib<br />
lrwxr-xr-x 1 root wheel 10 12 Apr 09:00 man -> stable/man<br />
drwxr-xr-x 7 root wheel 238 11 Apr 18:00 rel-7.8.0<br />
lrwxr-xr-x 1 root wheel 12 12 Apr 09:00 share -> stable/share<br />
lrwxr-xr-x 1 root wheel 9 12 Apr 09:00 stable -> rel-7.8.0/mips32</pre><br />
<br />
''Future versions of BRL-CAD may provide this symbolic link operation for you as a configure option. Keep an eye out in the configure --help output.''<br />
<br />
== Setup environment (optional) ==<br />
At this point, everything should be ready for use. If the default prefix of /usr/brlcad was used or if the corresponding symbolic links were created, users should only need to add /usr/brlcad/bin to their PATH in order to find binaries for the package (optionally setting their MANPATH as well):<br />
<br />
For bash:<br />
<br />
export PATH=/usr/brlcad/bin:$PATH<br />
export MANPATH=/usr/brlcad/man:$MANPATH<br />
<br />
For csh/tcsh:<br />
<br />
set path=( /usr/brlcad/bin $path )<br />
setenv MANPATH /usr/brlcd/man:$MANPATH<br />
rehash<br />
<br />
If users do not want to modify their PATH, they can get by providing the full path to the binaries (e.g. /usr/brlcad/bin/mged). To find BRL-CAD manual pages without setting your MANPATH, use the provided "brlman" binary instead of "man".<br />
<br />
== Test installation ==<br />
If everything went well, there should now be more than 400 command-line applications at your disposal for processing images and geometry. A quick test of functionality (and performance) is to run the BRL-CAD benchmark again, which is installed as the benchmark tool:<br />
<br />
benchmark<br />
<br />
Additionally, you can run the MGED solid modeler:<br />
<br />
mged<br />
<br />
[[Category:Documentation]]</div>Erikhttps://brlcad.org/w/index.php?title=User:Erik&diff=3779User:Erik2012-05-31T14:42:17Z<p>Erik: add link to Andrei's page</p>
<hr />
<div>Developer of horrible monstrosities.<br />
<br />
Currently <br />
* maintaining FreeBSD (http://FreeBSD.org) port<br />
* code gardening<br />
* working on adrt/isst/tie stuff<br />
* developing cel shader<br />
* SSE experiments<br />
* SWIG export of core libraries<br />
* mentoring [[User:Popescu.andrei1991|Andrei]] with libpkg stuff<br />
* other things and stuff<br />
<br />
Has done<br />
* port to FreeBSD5 (2003)<br />
* re-write build system to use automake/autoconf/libtool/etc (from "cake", 2003)<br />
* developed metaball primitive<br />
* developed marching cubes functionality for CSG to generate triangle meshes<br />
* mentored André for MLT (http://brlcad.org/wiki/Metropolis_Light_Transport) impl. His web log is http://andrecastelo.wordpress.com/<br />
* wrote "save as any image" framework (src/libbu/image.c, later src/libicv) and began tool conversion to use it<br />
* wrote a basic obj-g converter<br />
* other things and stuff.</div>Erikhttps://brlcad.org/w/index.php?title=User:Erik&diff=3557User:Erik2012-05-03T20:34:53Z<p>Erik: shuffle, add, etc</p>
<hr />
<div>Developer of horrible monstrosities.<br />
<br />
Currently <br />
* maintaining FreeBSD (http://FreeBSD.org) port<br />
* code gardening<br />
* working on adrt/isst/tie stuff<br />
* developing cel shader<br />
* SSE experiments<br />
* SWIG export of core libraries<br />
* mentoring andrei_ with libpkg stuff<br />
* other things and stuff<br />
<br />
Has done<br />
* port to FreeBSD5 (2003)<br />
* re-write build system to use automake/autoconf/libtool/etc (from "cake", 2003)<br />
* developed metaball primitive<br />
* developed marching cubes functionality for CSG to generate triangle meshes<br />
* mentored André for MLT (http://brlcad.org/wiki/Metropolis_Light_Transport) impl. His web log is http://andrecastelo.wordpress.com/<br />
* wrote "save as any image" framework (src/libbu/image.c, later src/libicv) and began tool conversion to use it<br />
* wrote a basic obj-g converter<br />
* other things and stuff.</div>Erikhttps://brlcad.org/w/index.php?title=Main_page&diff=2877Main page2011-05-14T12:36:59Z<p>Erik: Undo revision 2876 by Kingjeffclark (Talk) Spam link</p>
<hr />
<div>__NOTOC__<br />
<br />
= BRL-CAD Wiki =<br />
<br />
Welcome to the BRL-CAD Wiki! A wiki is a type of site that allows visitors to directly contribute to the content of a website. The intention of the BRL-CAD Wiki is to get ''everyone'' in the community working together on providing the information that everyone needs. The wiki is intended as a place for any documentation, tutorials, support, examples, and other pieces of information that may be of use to others. All are welcome to contribute and anyone may edit most of the wiki pages. With everyone's help, we can make this a tremendous resource for the CAD community.<br />
<br />
Don't be shy with your contributions. Give editing a try and be proud of your contributions! If you make a mistake, they're very easy to undo and you don't even need to have an account created. If you do create an account, however, you will be credited with the contribution in the page's history. <br />
<br />
So be '''bold''' and ''have at it''!<br />
<br />
== Getting started ==<br />
<br />
* [[FAQ]]<br />
* [[Documentation]]<br />
* [[MGED Commands]]<br />
* [[BRL-CAD Commands]]<br />
* [[BRL-CAD Primitives]]<br />
* [http://brlcad.org/gallery Image Gallery]<br />
* [[SVN]]<br />
* [[Forums]]<br />
<br />
== Want to get get involved? ==<br />
<br />
* [[Contributor Quickies]]<br />
* [http://brlcad.org/BRL-CAD_Priorities.png BRL-CAD Priorities]<br />
* [http://brlcad.org/~sean/ideas.html Additional Development Ideas]<br />
* [[Code Cleanup]]<br />
<br />
== Tutorials ==<br />
* [[Animation]]<br />
* [[EBM]]<br />
* [[SGI_Cube]]<br />
* [[Sketch]]<br />
* [[Cutting and Pasting PIX files]]<br />
* [[Distributed Rendering]]<br />
* [[Lighting]]<br />
* [[Spiral]]: Scripting MGED with Perl<br />
<br />
== Projects == <br />
* [[Google Summer of Code]]<br />
* [[Developer Documents]]<br />
* [[Geometry_Service_Project_Main|Geometry Service Project]]<br />
* [[ProE-BRL|Pro/ENGINEER to BRL-CAD export plugin]]<br />
* [[STEP|ISO 103030 STEP Geometry Conversion Support]]<br />
<br />
== Third-party Projects ==<br />
* [[Hex]] - Create threaded metric bolts, nuts, and washers<br />
* [[Projecto VeRDE]] - Designing a vehicle for collecting space debris<br />
<br />
== BRL-CAD Model Repository ==<br />
<br />
[http://more.brlcad.org/ BRL-CAD Model Repository] Share your models and get community feedback.<br />
<br />
----<br />
If you are unsure on how to edit or add new pages, see the [[Help:Contents|Help]]. Consult the [http://meta.wikimedia.org/wiki/Help User's Guide] for information on using a wiki, particularly the section on [http://meta.wikimedia.org/wiki/Help:Editing editing] pages.<br />
<br />
Unless otherwise noted, all contributions to the BRL-CAD wiki are made available under the terms of the [[BSD Documentation License]] (BDL). Please refer to the wiki site [[disclaimer]] for more details.</div>Erikhttps://brlcad.org/w/index.php?title=GenericMultiStringMsg&diff=2860GenericMultiStringMsg2011-04-26T16:09:48Z<p>Erik: Update to mirror the manifest format</p>
<hr />
<div>This message type is to pass a list of GSStrings.<br />
<br />
Contents are a network order uint32_t describing the number of strings in the list followed by a series of GSStrings.</div>Erikhttps://brlcad.org/w/index.php?title=NetMsgTypes&diff=2859NetMsgTypes2011-04-26T16:08:42Z<p>Erik: call the manifest a genericmultistring instead of a 'special'</p>
<hr />
<div>----<br />
=NetMsg Generic Templates=<br />
----<br />
The GSNet API provides several Template classes to be used or extended from.<br />
<br />
* [[GenericOneByteMsg|Generic One Byte Msg]] <br />
* [[GenericTwoBytesMsg|Generic Two Byte Msg]] <br />
* [[GenericFourBytesMsg|Generic Four Byte Msg]] <br />
* [[GenericEightByteMsg|Generic Eight Byte Msg]] <br />
* [[GenericMultiByteMsg|Generic Multi Byte Msg]] <br />
* [[GenericOneStringMsg|Generic One String Msg]]<br />
* [[GenericMultiStringMsg|Generic Multi-String Msg]]<br />
<br />
----<br />
<br />
=NetMsg MsgTypes=<br />
----<br />
<br />
Some NetMsgs will need to have custom bodies. Here is a list of NetMsgs, their related MsgTypes, and links to details on that specific NetMsg:<br />
<br /><br /><br />
'''NOTE:''' This list is *NOT* up-to-date as of 3.25.11<br />
<br /><br /><br />
'''TODO:''' Replace this with Doxy files<br />
<br /><br /><br />
<br />
{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #666699; padding: 0;"<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 90px;"|'''MsgType ID'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 200px;"|'''Name'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Parent Class'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF;"|'''Additional Info'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0042<br />
|style="border: 1px solid #666699;"|RUALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|Ping without time info (necessary?)<br />
|-<br />
|style="border: 1px solid #666699;"|0x0043<br />
|style="border: 1px solid #666699;"|IMALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|Pong without time info (necessary?)<br />
|-<br />
|style="border: 1px solid #666699;"|0x0050<br />
|style="border: 1px solid #666699;"|Failure<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'error code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0051<br />
|style="border: 1px solid #666699;"|Success<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'success code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0060<br />
|style="border: 1px solid #666699;"|PING<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time<br />
|-<br />
|style="border: 1px solid #666699;"|0x0062<br />
|style="border: 1px solid #666699;"|PONG<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time, dup of the ping value<br />
|-<br />
|style="border: 1px solid #666699;"|0x0100<br />
|style="border: 1px solid #666699;"|GS Remote Nodename Set<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0150<br />
|style="border: 1px solid #666699;"|Disconnect Request<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0200<br />
|style="border: 1px solid #666699;"|New Node on Network<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0250<br />
|style="border: 1px solid #666699;"|Full Nodename List Request<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0255<br />
|style="border: 1px solid #666699;"|Full Nodename List<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0300<br />
|style="border: 1px solid #666699;"|[[NewSessionReqMsg|New Session Request]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|Two strings, username and password<br />
|-<br />
|style="border: 1px solid #666699;"|0x0305<br />
|style="border: 1px solid #666699;"|[[SessionInfoMsg|Session Information]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|One string, the session UUID<br />
|-<br />
|style="border: 1px solid #666699;"|0x0400<br />
|style="border: 1px solid #666699;"|[[GeometryReqMsg|Geometry Request]]<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|Has additional custom fields.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0401<br />
|style="border: 1px solid #666699;"|[[GeometryBoTReqMsg|BoT Geometry Request]]<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|Requests geometry in BoT format, with exactly one BoT per region.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0402<br />
|style="border: 1px solid #666699;"|[[GeometryListReqMsg|Geometry List Request]]<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|Requests a list of geometry artifacts at given location.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0403<br />
|style="border: 1px solid #666699;"|[[GeometryListResMsg|Geometry List Results]]<br />
|style="border: 1px solid #666699;"|[[GenericMultiStringMsg]]<br />
|style="border: 1px solid #666699;"|Display a list of geometry artifact names.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0405<br />
|style="border: 1px solid #666699;"|[[GeometryManifestMsg|Geometry Manifest]]<br />
|style="border: 1px solid #666699;"|[[GenericMultiStringMsg]]<br />
|style="border: 1px solid #666699;"|List of 'object' names about to be received as chunks. ReUUID is the associated GeometryReqMsg UUID.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0410<br />
|style="border: 1px solid #666699;"|[[GeometryChunkMsg|Geometry Chunk]]<br />
|style="border: 1px solid #666699;"|[[GenericMultiByteMsg]]<br />
|style="border: 1px solid #666699;"|Raw .g information. Chunks can be written to a file to produce a viable V5 .g db. ReUUID is the associated GeometryReqMsg UUID.<br />
|}</div>Erikhttps://brlcad.org/w/index.php?title=GenericMultiStringMsg&diff=2858GenericMultiStringMsg2011-04-26T15:48:06Z<p>Erik: multistring message</p>
<hr />
<div>This message type is to pass a list of GSStrings.<br />
<br />
Message length is used to determine the number of strings in the list, just keep reading GSStrings and reducing the length left by strlen+4 for each one.</div>Erikhttps://brlcad.org/w/index.php?title=NetMsgTypes&diff=2857NetMsgTypes2011-04-26T15:42:33Z<p>Erik: Add ls message req/res. Add multistring msg.</p>
<hr />
<div>----<br />
=NetMsg Generic Templates=<br />
----<br />
The GSNet API provides several Template classes to be used or extended from.<br />
<br />
* [[GenericOneByteMsg|Generic One Byte Msg]] <br />
* [[GenericTwoBytesMsg|Generic Two Byte Msg]] <br />
* [[GenericFourBytesMsg|Generic Four Byte Msg]] <br />
* [[GenericEightByteMsg|Generic Eight Byte Msg]] <br />
* [[GenericMultiByteMsg|Generic Multi Byte Msg]] <br />
* [[GenericOneStringMsg|Generic One String Msg]]<br />
* [[GenericMultiStringMsg|Generic Multi-String Msg]]<br />
<br />
----<br />
<br />
=NetMsg MsgTypes=<br />
----<br />
<br />
Some NetMsgs will need to have custom bodies. Here is a list of NetMsgs, their related MsgTypes, and links to details on that specific NetMsg:<br />
<br /><br /><br />
'''NOTE:''' This list is *NOT* up-to-date as of 3.25.11<br />
<br /><br /><br />
'''TODO:''' Replace this with Doxy files<br />
<br /><br /><br />
<br />
{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #666699; padding: 0;"<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 90px;"|'''MsgType ID'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 200px;"|'''Name'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Parent Class'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF;"|'''Additional Info'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0042<br />
|style="border: 1px solid #666699;"|RUALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|Ping without time info (necessary?)<br />
|-<br />
|style="border: 1px solid #666699;"|0x0043<br />
|style="border: 1px solid #666699;"|IMALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|Pong without time info (necessary?)<br />
|-<br />
|style="border: 1px solid #666699;"|0x0050<br />
|style="border: 1px solid #666699;"|Failure<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'error code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0051<br />
|style="border: 1px solid #666699;"|Success<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'success code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0060<br />
|style="border: 1px solid #666699;"|PING<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time<br />
|-<br />
|style="border: 1px solid #666699;"|0x0062<br />
|style="border: 1px solid #666699;"|PONG<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time, dup of the ping value<br />
|-<br />
|style="border: 1px solid #666699;"|0x0100<br />
|style="border: 1px solid #666699;"|GS Remote Nodename Set<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0150<br />
|style="border: 1px solid #666699;"|Disconnect Request<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0200<br />
|style="border: 1px solid #666699;"|New Node on Network<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0250<br />
|style="border: 1px solid #666699;"|Full Nodename List Request<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0255<br />
|style="border: 1px solid #666699;"|Full Nodename List<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0300<br />
|style="border: 1px solid #666699;"|[[NewSessionReqMsg|New Session Request]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|Two strings, username and password<br />
|-<br />
|style="border: 1px solid #666699;"|0x0305<br />
|style="border: 1px solid #666699;"|[[SessionInfoMsg|Session Information]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|One string, the session UUID<br />
|-<br />
|style="border: 1px solid #666699;"|0x0400<br />
|style="border: 1px solid #666699;"|[[GeometryReqMsg|Geometry Request]]<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|Has additional custom fields.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0401<br />
|style="border: 1px solid #666699;"|[[GeometryBoTReqMsg|BoT Geometry Request]]<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|Requests geometry in BoT format, with exactly one BoT per region.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0402<br />
|style="border: 1px solid #666699;"|[[GeometryListReqMsg|Geometry List Request]]<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|Requests a list of geometry artifacts at given location.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0403<br />
|style="border: 1px solid #666699;"|[[GeometryListResMsg|Geometry List Results]]<br />
|style="border: 1px solid #666699;"|[[GenericMultiStringMsg]]<br />
|style="border: 1px solid #666699;"|Display a list of geometry artifact names.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0405<br />
|style="border: 1px solid #666699;"|[[GeometryManifestMsg|Geometry Manifest]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|uint32 n followed by n GSStrings. List of 'object' names about to be received as chunks. ReUUID is the associated GeometryReqMsg UUID.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0410<br />
|style="border: 1px solid #666699;"|[[GeometryChunkMsg|Geometry Chunk]]<br />
|style="border: 1px solid #666699;"|[[GenericMultiByteMsg]]<br />
|style="border: 1px solid #666699;"|Raw .g information. Chunks can be written to a file to produce a viable V5 .g db. ReUUID is the associated GeometryReqMsg UUID.<br />
|}</div>Erikhttps://brlcad.org/w/index.php?title=NetMsgTypes&diff=2815NetMsgTypes2011-04-04T14:39:37Z<p>Erik: add bot geometry request</p>
<hr />
<div>----<br />
=NetMsg Generic Templates=<br />
----<br />
The GSNet API provides several Template classes to be used or extended from.<br />
<br />
* [[GenericOneByteMsg|Generic One Byte Msg]] <br />
* [[GenericTwoBytesMsg|Generic Two Byte Msg]] <br />
* [[GenericFourBytesMsg|Generic Four Byte Msg]] <br />
* [[GenericEightByteMsg|Generic Eight Byte Msg]] <br />
* [[GenericMultiByteMsg|Generic Multi Byte Msg]] <br />
* [[GenericOneStringMsg|Generic One String Msg]]<br />
<br />
----<br />
<br />
=NetMsg MsgTypes=<br />
----<br />
<br />
Some NetMsgs will need to have custom bodies. Here is a list of NetMsgs, their related MsgTypes, and links to details on that specific NetMsg:<br />
<br /><br /><br />
'''NOTE:''' This list is *NOT* up-to-date as of 3.25.11<br />
<br /><br /><br />
'''TODO:''' Replace this with Doxy files<br />
<br /><br /><br />
<br />
{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #666699; padding: 0;"<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 90px;"|'''MsgType ID'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 200px;"|'''Name'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Parent Class'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF;"|'''Additional Info'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0042<br />
|style="border: 1px solid #666699;"|RUALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|Ping without time info (necessary?)<br />
|-<br />
|style="border: 1px solid #666699;"|0x0043<br />
|style="border: 1px solid #666699;"|IMALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|Pong without time info (necessary?)<br />
|-<br />
|style="border: 1px solid #666699;"|0x0050<br />
|style="border: 1px solid #666699;"|Failure<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'error code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0051<br />
|style="border: 1px solid #666699;"|Success<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'success code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0060<br />
|style="border: 1px solid #666699;"|PING<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time<br />
|-<br />
|style="border: 1px solid #666699;"|0x0062<br />
|style="border: 1px solid #666699;"|PONG<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time, dup of the ping value<br />
|-<br />
|style="border: 1px solid #666699;"|0x0100<br />
|style="border: 1px solid #666699;"|GS Remote Nodename Set<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0150<br />
|style="border: 1px solid #666699;"|Disconnect Request<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0200<br />
|style="border: 1px solid #666699;"|New Node on Network<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0250<br />
|style="border: 1px solid #666699;"|Full Nodename List Request<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0255<br />
|style="border: 1px solid #666699;"|Full Nodename List<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0300<br />
|style="border: 1px solid #666699;"|[[NewSessionReqMsg|New Session Request]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|Two strings, username and password<br />
|-<br />
|style="border: 1px solid #666699;"|0x0305<br />
|style="border: 1px solid #666699;"|[[SessionInfoMsg|Session Information]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|One string, the session UUID<br />
|-<br />
|style="border: 1px solid #666699;"|0x0400<br />
|style="border: 1px solid #666699;"|[[GeometryReqMsg|Geometry Request]]<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|Has additional custom fields.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0401<br />
|style="border: 1px solid #666699;"|[[GeometryBoTReqMsg|BoT Geometry Request]]<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|Requests geometry in BoT format, with exactly one BoT per region.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0405<br />
|style="border: 1px solid #666699;"|[[GeometryManifestMsg|Geometry Manifest]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|uint32 n followed by n GSStrings. List of 'object' names about to be received as chunks. ReUUID is the associated GeometryReqMsg UUID.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0410<br />
|style="border: 1px solid #666699;"|[[GeometryChunkMsg|Geometry Chunk]]<br />
|style="border: 1px solid #666699;"|[[GenericMultiByteMsg]]<br />
|style="border: 1px solid #666699;"|Raw .g information. Chunks can be written to a file to produce a viable V5 .g db. ReUUID is the associated GeometryReqMsg UUID.<br />
|}</div>Erikhttps://brlcad.org/w/index.php?title=GeometryChunkMsg&diff=2785GeometryChunkMsg2011-03-30T19:31:23Z<p>Erik: mention length in stream</p>
<hr />
<div>A network order uint32 describing length followed by actual raw binary V5 .g goodness. <br />
<br />
ReUUID is the same as the associated GeometryReqMsg's UUID.<br />
<br />
There will be the same number of these as there were entries in the GeometryManifest.<br />
<br />
NOT guaranteed to be in the same order as the manifest, or any order at all.</div>Erikhttps://brlcad.org/w/index.php?title=GeometryChunkMsg&diff=2784GeometryChunkMsg2011-03-30T19:30:10Z<p>Erik: New page: Actual raw binary V5 .g goodness. ReUUID is the same as the associated GeometryReqMsg's UUID. There will be the same number of these as there were entries in the GeometryManifest. NOT ...</p>
<hr />
<div>Actual raw binary V5 .g goodness. <br />
<br />
ReUUID is the same as the associated GeometryReqMsg's UUID.<br />
<br />
There will be the same number of these as there were entries in the GeometryManifest.<br />
<br />
NOT guaranteed to be in the same order as the manifest, or any order at all.</div>Erikhttps://brlcad.org/w/index.php?title=GeometryManifestMsg&diff=2783GeometryManifestMsg2011-03-30T19:27:28Z<p>Erik: New page: Sent after a geometry req is recv'd, but before the chunks are sent. uint32 number of objects/strings/chunks. List of GSStrings for returned objects. ReUUID is the same as the GeometryR...</p>
<hr />
<div>Sent after a geometry req is recv'd, but before the chunks are sent.<br />
<br />
uint32 number of objects/strings/chunks.<br />
<br />
List of GSStrings for returned objects.<br />
<br />
ReUUID is the same as the GeometryReqMsg's UUID.</div>Erikhttps://brlcad.org/w/index.php?title=GeometryReqMsg&diff=2782GeometryReqMsg2011-03-30T19:24:15Z<p>Erik: New page: Message sent to the server to request data. Single GSString with a URI/URN style encoding of the geometry (path/to/file.g/top). (Should this be a multistring message?)</p>
<hr />
<div>Message sent to the server to request data. Single GSString with a URI/URN style encoding of the geometry (path/to/file.g/top). <br />
<br />
(Should this be a multistring message?)</div>Erikhttps://brlcad.org/w/index.php?title=NetMsgTypes&diff=2781NetMsgTypes2011-03-30T19:22:11Z<p>Erik: add more info</p>
<hr />
<div>----<br />
=NetMsg Generic Templates=<br />
----<br />
The GSNet API provides several Template classes to be used or extended from.<br />
<br />
* [[GenericOneByteMsg|Generic One Byte Msg]] <br />
* [[GenericTwoBytesMsg|Generic Two Byte Msg]] <br />
* [[GenericFourBytesMsg|Generic Four Byte Msg]] <br />
* [[GenericEightByteMsg|Generic Eight Byte Msg]] <br />
* [[GenericMultiByteMsg|Generic Multi Byte Msg]] <br />
* [[GenericOneStringMsg|Generic One String Msg]]<br />
<br />
----<br />
<br />
=NetMsg MsgTypes=<br />
----<br />
<br />
Some NetMsgs will need to have custom bodies. Here is a list of NetMsgs, their related MsgTypes, and links to details on that specific NetMsg:<br />
<br /><br /><br />
'''NOTE:''' This list is *NOT* up-to-date as of 3.25.11<br />
<br /><br /><br />
'''TODO:''' Replace this with Doxy files<br />
<br /><br /><br />
<br />
{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #666699; padding: 0;"<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 90px;"|'''MsgType ID'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 200px;"|'''Name'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Parent Class'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF;"|'''Additional Info'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0042<br />
|style="border: 1px solid #666699;"|RUALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|Ping without time info (necessary?)<br />
|-<br />
|style="border: 1px solid #666699;"|0x0043<br />
|style="border: 1px solid #666699;"|IMALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|Pong without time info (necessary?)<br />
|-<br />
|style="border: 1px solid #666699;"|0x0050<br />
|style="border: 1px solid #666699;"|Failure<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'error code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0051<br />
|style="border: 1px solid #666699;"|Success<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'success code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0060<br />
|style="border: 1px solid #666699;"|PING<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time<br />
|-<br />
|style="border: 1px solid #666699;"|0x0062<br />
|style="border: 1px solid #666699;"|PONG<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time, dup of the ping value<br />
|-<br />
|style="border: 1px solid #666699;"|0x0100<br />
|style="border: 1px solid #666699;"|GS Remote Nodename Set<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0150<br />
|style="border: 1px solid #666699;"|Disconnect Request<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0200<br />
|style="border: 1px solid #666699;"|New Node on Network<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0250<br />
|style="border: 1px solid #666699;"|Full Nodename List Request<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0255<br />
|style="border: 1px solid #666699;"|Full Nodename List<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0300<br />
|style="border: 1px solid #666699;"|[[NewSessionReqMsg|New Session Request]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|Two strings, username and password<br />
|-<br />
|style="border: 1px solid #666699;"|0x0305<br />
|style="border: 1px solid #666699;"|[[SessionInfoMsg|Session Information]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|One string, the session UUID<br />
|-<br />
|style="border: 1px solid #666699;"|0x0400<br />
|style="border: 1px solid #666699;"|[[GeometryReqMsg|Geometry Request]]<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|Has additional custom fields.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0405<br />
|style="border: 1px solid #666699;"|[[GeometryManifestMsg|Geometry Manifest]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|uint32 n followed by n GSStrings. List of 'object' names about to be received as chunks. ReUUID is the associated GeometryReqMsg UUID.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0410<br />
|style="border: 1px solid #666699;"|[[GeometryChunkMsg|Geometry Chunk]]<br />
|style="border: 1px solid #666699;"|[[GenericMultiByteMsg]]<br />
|style="border: 1px solid #666699;"|Raw .g information. Chunks can be written to a file to produce a viable V5 .g db. ReUUID is the associated GeometryReqMsg UUID.<br />
|}</div>Erikhttps://brlcad.org/w/index.php?title=NetMsgTypes&diff=2776NetMsgTypes2011-03-28T20:28:09Z<p>Erik: fix link</p>
<hr />
<div>----<br />
=NetMsg Generic Templates=<br />
----<br />
The GSNet API provides several Template classes to be used or extended from.<br />
<br />
* [[GenericOneByteMsg|Generic One Byte Msg]] <br />
* [[GenericTwoBytesMsg|Generic Two Byte Msg]] <br />
* [[GenericFourBytesMsg|Generic Four Byte Msg]] <br />
* [[GenericEightByteMsg|Generic Eight Byte Msg]] <br />
* [[GenericMultiByteMsg|Generic Multi Byte Msg]] <br />
* [[GenericOneStringMsg|Generic One String Msg]]<br />
<br />
----<br />
<br />
=NetMsg MsgTypes=<br />
----<br />
<br />
Some NetMsgs will need to have custom bodies. Here is a list of NetMsgs, their related MsgTypes, and links to details on that specific NetMsg:<br />
<br /><br /><br />
'''NOTE:''' This list is *NOT* up-to-date as of 3.25.11<br />
<br /><br /><br />
'''TODO:''' Replace this with Doxy files<br />
<br /><br /><br />
<br />
{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #666699; padding: 0;"<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 90px;"|'''MsgType ID'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 200px;"|'''Name'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Parent Class'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF;"|'''Additional Info'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0042<br />
|style="border: 1px solid #666699;"|RUALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0043<br />
|style="border: 1px solid #666699;"|IMALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0050<br />
|style="border: 1px solid #666699;"|Failure<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'error code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0051<br />
|style="border: 1px solid #666699;"|Success<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'success code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0060<br />
|style="border: 1px solid #666699;"|PING<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time<br />
|-<br />
|style="border: 1px solid #666699;"|0x0062<br />
|style="border: 1px solid #666699;"|PONG<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time<br />
|-<br />
|style="border: 1px solid #666699;"|0x0100<br />
|style="border: 1px solid #666699;"|GS Remote Nodename Set<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0150<br />
|style="border: 1px solid #666699;"|Disconnect Request<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0200<br />
|style="border: 1px solid #666699;"|New Node on Network<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0250<br />
|style="border: 1px solid #666699;"|Full Nodename List Request<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0255<br />
|style="border: 1px solid #666699;"|Full Nodename List<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0300<br />
|style="border: 1px solid #666699;"|[[NewSessionReqMsg|New Session Request]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|Two strings, username and password<br />
|-<br />
|style="border: 1px solid #666699;"|0x0305<br />
|style="border: 1px solid #666699;"|[[SessionInfoMsg|Session Information]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|One string, the session UUID<br />
|-<br />
|style="border: 1px solid #666699;"|0x0400<br />
|style="border: 1px solid #666699;"|[[GeometryReqMsg|Geometry Request]]<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|Has additional custom fields.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0405<br />
|style="border: 1px solid #666699;"|[[GeometryManifestMsg|Geometry Manifest]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0410<br />
|style="border: 1px solid #666699;"|[[GeometryChunkMsg|Geometry Chunk]]<br />
|style="border: 1px solid #666699;"|[[GenericMultiByteMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|}</div>Erikhttps://brlcad.org/w/index.php?title=Category:Geometry_Service&diff=2775Category:Geometry Service2011-03-28T20:26:22Z<p>Erik: New page: Pages related to the GeometryService</p>
<hr />
<div>Pages related to the GeometryService</div>Erikhttps://brlcad.org/w/index.php?title=GSNet_String&diff=2774GSNet String2011-03-28T20:25:44Z<p>Erik: mention lack of terminating NULL</p>
<hr />
<div>[[category:Geometry Service]]<br />
[[category:GSNet Protocol]]<br />
----<br />
==Description==<br />
A commonly used data type in the GSNet Protocol. Contains a 4 byte Length field followed by an ascii string of length '''Length'''. There is no terminating NULL.<br />
<br />
==Fields ==<br />
<br />
{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #666699; padding: 0;"<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Element'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 230px;"|'''Length'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Default Value'''<br />
|-<br />
|style="border: 1px solid #666699;"|Length<br />
|style="border: 1px solid #666699;"|uint32 (4 bytes)<br />
|style="border: 1px solid #666699;"|''none''<br />
|-<br />
|style="border: 1px solid #666699;"|8bit char array<br />
|style="border: 1px solid #666699;"|uint8[]<br />
|style="border: 1px solid #666699;"|''none''<br />
|-<br />
|}</div>Erikhttps://brlcad.org/w/index.php?title=Common_NetMsg_Exchanges&diff=2773Common NetMsg Exchanges2011-03-28T18:25:06Z<p>Erik: list initial connect pattern</p>
<hr />
<div>This whole page needs to be redone with flow charts!<br />
<br />
Initial handshake:<br />
* Server sends [GS Remote Nodename Set]<br />
* Client sends [GS Remote Nodename Set]<br />
* Client sends [NewSessionReqMsg] (login/passwd)<br />
* Server sends [SessionInfoMsg] (uuid of session)<br />
<br />
Now ready to process</div>Erikhttps://brlcad.org/w/index.php?title=NewSessionReqMsg&diff=2772NewSessionReqMsg2011-03-28T18:23:01Z<p>Erik: New page: Two (GS style network order uint32_t followed by ascii, no terminating 0) strings First is username Second is password (in plain text)</p>
<hr />
<div>Two (GS style network order uint32_t followed by ascii, no terminating 0) strings<br />
<br />
First is username<br />
Second is password (in plain text)</div>Erikhttps://brlcad.org/w/index.php?title=GeometryServiceNetworkProtocol&diff=2771GeometryServiceNetworkProtocol2011-03-28T18:05:27Z<p>Erik: Message Length does not include magic/length values.</p>
<hr />
<div>[[category:Geometry Service]]<br />
[[category:GSNet Protocol]]<br />
----<br />
<br />
{|<br />
|width=344 valign=top|[[Image:GSNet_Symbol.png|left|top|GSNet]]<br />
|The Geometry Service Network (GSNet) Protocol is a TCP/IP based protocol designed to facilitate socketed communications between Geometry Service Nodes on a network. A Geometry Service Node is defined as any softwares that supports communication via the GSNet Protocol.<br />
<br /><br />
__TOC__ <br />
|}<br />
<br />
----<br />
<br />
=GSNet Msg (Visual) Breakdown=<br />
[[Image:GSNetMsgBreakdown.png|520x373px]]<br />
<br />
----<br />
<br />
=GSNet Msg Description=<br />
==Header==<br />
The header of the GSNet Msg contains the information necessary for quickly determining authenticity, type and length. Geometry Service's network library, libNetwork, is built upon BRL-CAD's networking library: libPKG. This causes the header byte layout to look like this:<br />
<br /><br /><br />
<br />
{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #666699; padding: 0;"<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Element'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Length'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Value'''<br />
|-<br />
|style="border: 1px solid #666699;"|Magic1<br />
|style="border: 1px solid #666699;"|int16 (2 Bytes)<br />
|style="border: 1px solid #666699;"|Always 0x41FE<br />
|-<br />
|style="border: 1px solid #666699;"|Magic2<br />
|style="border: 1px solid #666699;"|int16 (2 Bytes)<br />
|style="border: 1px solid #666699;"|Always 0x5309<br />
|-<br />
|style="border: 1px solid #666699;"|MessageLength<br />
|style="border: 1px solid #666699;"|int32 (4 bytes)<br />
|style="border: 1px solid #666699;"|Does *NOT* include the magic or length, so is packet size - 8<br />
|-<br />
|style="border: 1px solid #666699;"|MsgType<br />
|style="border: 1px solid #666699;"|int16 (2 bytes)<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|MessageUUID<br />
|style="border: 1px solid #666699;"|[[GSNet_String|String (Variable bytes)]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|HasRegardingUUID<br />
|style="border: 1px solid #666699;"|Boolean (1 byte)<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|RegardingMessageUUID<br />
|style="border: 1px solid #666699;"|[[GSNet_String|String (Variable bytes)]]<br />
|style="border: 1px solid #666699;"|<br />
|}<br />
<br />
<br />
===libPKG Part===<br />
Due to some C and C++ incompatibilities, the libPKG "Type" parameter is used as "Magic2" in the GSNet Protocol. This is due to libPKG's need for each network connection to have a callback table that maps NetMsg types to pointers to the appropriate NetMsg handler function. The GSNetwork library uses a publish/subscription scheme to route NetMsg. LibPKG strips off the libPKG header before calling the appropriate callback function, thus making per class deserialization extremely complex. To address these issues, the GSNetwork library routes NetMsg based on the "GS Msg Type" parameter rather than the "libPKG Type" parameter.<br />
<br /><br /><br />
Table showing modifications described above:<br />
<br /><br /><br />
{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #666699; padding: 0;"<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''libPKG element'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''GSNet element'''<br />
|-<br />
|style="border: 1px solid #666699;"|Magic<br />
|style="border: 1px solid #666699;"|Magic01<br />
|-<br />
|style="border: 1px solid #666699;"|Type<br />
|style="border: 1px solid #666699;"|Magic02<br />
|-<br />
|style="border: 1px solid #666699;"|Length<br />
|style="border: 1px solid #666699;"|Length<br />
|}<br />
<br />
* '''Magic01:''' 2 bytes of data designed to ensure integrity of data and mark NetMsg starting point.<br />
* '''Magic02:''' 2 bytes of data designed to ensure integrity of data and mark NetMsg starting point.<br />
* '''Length:''' 4 byte integer that represents the number of bytes in the message from the end of this value to the end.<br />
<br /><br /><br />
===GSNet Part===<br />
<br />
* '''MsgType:''' 2 byte integer value that tells what type of message this is. <br />
* '''MessageUUID:''' Standard UUID for this message. Currently stored as a string.<br />
* '''HasRegardingUUID:''' Boolean flag that indicates whether there is a Regarding UUID or not. <br />
* '''RegardingMessageUUID:''' Standard UUID that indicates this NetMsg is a response to another NetMsg.<br />
<br />
----<br />
<br />
==Data==<br />
----<br />
The Data load of a NetMsg is, obivously, the important and unique part. Data Loads can be as small as zero (in the case of a TypeOnlyMsg) or many kilobytes long.<br />
<br />
Here is a list of [[NetMsgTypes|NetMsg types]] and here is a list of [[Common NetMsg Exchanges]].</div>Erikhttps://brlcad.org/w/index.php?title=NetMsgTypes&diff=2770NetMsgTypes2011-03-28T18:02:39Z<p>Erik: GSPONG is 0x62, not 0x61</p>
<hr />
<div>----<br />
=NetMsg Generic Templates=<br />
----<br />
The GSNet API provides several Template classes to be used or extended from.<br />
<br />
* [[GenericOneByteMsg|Generic One Byte Msg]] <br />
* [[GenericTwoBytesMsg|Generic Two Byte Msg]] <br />
* [[GenericFourBytesMsg|Generic Four Byte Msg]] <br />
* [[GenericEightBytesMsg|Generic Eight Byte Msg]] <br />
* [[GenericMultiByteMsg|Generic Multi Byte Msg]] <br />
* [[GenericOneStringMsg|Generic One String Msg]]<br />
<br />
----<br />
<br />
=NetMsg MsgTypes=<br />
----<br />
<br />
Some NetMsgs will need to have custom bodies. Here is a list of NetMsgs, their related MsgTypes, and links to details on that specific NetMsg:<br />
<br /><br /><br />
'''NOTE:''' This list is *NOT* up-to-date as of 3.25.11<br />
<br /><br /><br />
'''TODO:''' Replace this with Doxy files<br />
<br /><br /><br />
<br />
{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #666699; padding: 0;"<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 90px;"|'''MsgType ID'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 200px;"|'''Name'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Parent Class'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF;"|'''Additional Info'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0042<br />
|style="border: 1px solid #666699;"|RUALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0043<br />
|style="border: 1px solid #666699;"|IMALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0050<br />
|style="border: 1px solid #666699;"|Failure<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'error code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0051<br />
|style="border: 1px solid #666699;"|Success<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'success code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0060<br />
|style="border: 1px solid #666699;"|PING<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time<br />
|-<br />
|style="border: 1px solid #666699;"|0x0062<br />
|style="border: 1px solid #666699;"|PONG<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time<br />
|-<br />
|style="border: 1px solid #666699;"|0x0100<br />
|style="border: 1px solid #666699;"|GS Remote Nodename Set<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0150<br />
|style="border: 1px solid #666699;"|Disconnect Request<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0200<br />
|style="border: 1px solid #666699;"|New Node on Network<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0250<br />
|style="border: 1px solid #666699;"|Full Nodename List Request<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0255<br />
|style="border: 1px solid #666699;"|Full Nodename List<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0300<br />
|style="border: 1px solid #666699;"|[[NewSessionReqMsg|New Session Request]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|Two strings, username and password<br />
|-<br />
|style="border: 1px solid #666699;"|0x0305<br />
|style="border: 1px solid #666699;"|[[SessionInfoMsg|Session Information]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|One string, the session UUID<br />
|-<br />
|style="border: 1px solid #666699;"|0x0400<br />
|style="border: 1px solid #666699;"|[[GeometryReqMsg|Geometry Request]]<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|Has additional custom fields.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0405<br />
|style="border: 1px solid #666699;"|[[GeometryManifestMsg|Geometry Manifest]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0410<br />
|style="border: 1px solid #666699;"|[[GeometryChunkMsg|Geometry Chunk]]<br />
|style="border: 1px solid #666699;"|[[GenericMultiByteMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|}</div>Erikhttps://brlcad.org/w/index.php?title=NetMsgTypes&diff=2769NetMsgTypes2011-03-28T17:19:41Z<p>Erik: guessing at payloads</p>
<hr />
<div>----<br />
=NetMsg Generic Templates=<br />
----<br />
The GSNet API provides several Template classes to be used or extended from.<br />
<br />
* [[GenericOneByteMsg|Generic One Byte Msg]] <br />
* [[GenericTwoBytesMsg|Generic Two Byte Msg]] <br />
* [[GenericFourBytesMsg|Generic Four Byte Msg]] <br />
* [[GenericEightBytesMsg|Generic Eight Byte Msg]] <br />
* [[GenericMultiByteMsg|Generic Multi Byte Msg]] <br />
* [[GenericOneStringMsg|Generic One String Msg]]<br />
<br />
----<br />
<br />
=NetMsg MsgTypes=<br />
----<br />
<br />
Some NetMsgs will need to have custom bodies. Here is a list of NetMsgs, their related MsgTypes, and links to details on that specific NetMsg:<br />
<br /><br /><br />
'''NOTE:''' This list is *NOT* up-to-date as of 3.25.11<br />
<br /><br /><br />
'''TODO:''' Replace this with Doxy files<br />
<br /><br /><br />
<br />
{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #666699; padding: 0;"<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 90px;"|'''MsgType ID'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 200px;"|'''Name'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF; width: 180px;"|'''Parent Class'''<br />
|style="border: 1px solid #666699; background-color: #666699; color: #FFFFFF;"|'''Additional Info'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0042<br />
|style="border: 1px solid #666699;"|RUALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0043<br />
|style="border: 1px solid #666699;"|IMALIVE<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0050<br />
|style="border: 1px solid #666699;"|Failure<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'error code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0051<br />
|style="border: 1px solid #666699;"|Success<br />
|style="border: 1px solid #666699;"|[[GenericOneByteMsg]]<br />
|style="border: 1px solid #666699;"|1 byte 'success code'<br />
|-<br />
|style="border: 1px solid #666699;"|0x0060<br />
|style="border: 1px solid #666699;"|PING<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time<br />
|-<br />
|style="border: 1px solid #666699;"|0x0061<br />
|style="border: 1px solid #666699;"|PONG<br />
|style="border: 1px solid #666699;"|[[GenericEightByteMsg]]<br />
|style="border: 1px solid #666699;"|8 byte time stamp for start time<br />
|-<br />
|style="border: 1px solid #666699;"|0x0100<br />
|style="border: 1px solid #666699;"|GS Remote Nodename Set<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0150<br />
|style="border: 1px solid #666699;"|Disconnect Request<br />
|style="border: 1px solid #666699;"|[[TypeOnlyMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0200<br />
|style="border: 1px solid #666699;"|New Node on Network<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|String is the Nodename<br />
|-<br />
|style="border: 1px solid #666699;"|0x0250<br />
|style="border: 1px solid #666699;"|Full Nodename List Request<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0255<br />
|style="border: 1px solid #666699;"|Full Nodename List<br />
|style="border: 1px solid #666699;"|<br />
|style="border: 1px solid #666699;"|'''''Not Implemented Yet'''<br />
|-<br />
|style="border: 1px solid #666699;"|0x0300<br />
|style="border: 1px solid #666699;"|[[NewSessionReqMsg|New Session Request]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|Two strings, username and password<br />
|-<br />
|style="border: 1px solid #666699;"|0x0305<br />
|style="border: 1px solid #666699;"|[[SessionInfoMsg|Session Information]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|One string, the session UUID<br />
|-<br />
|style="border: 1px solid #666699;"|0x0400<br />
|style="border: 1px solid #666699;"|[[GeometryReqMsg|Geometry Request]]<br />
|style="border: 1px solid #666699;"|[[GenericOneStringMsg]]<br />
|style="border: 1px solid #666699;"|Has additional custom fields.<br />
|-<br />
|style="border: 1px solid #666699;"|0x0405<br />
|style="border: 1px solid #666699;"|[[GeometryManifestMsg|Geometry Manifest]]<br />
|style="border: 1px solid #666699;"|[[NetMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|-<br />
|style="border: 1px solid #666699;"|0x0410<br />
|style="border: 1px solid #666699;"|[[GeometryChunkMsg|Geometry Chunk]]<br />
|style="border: 1px solid #666699;"|[[GenericMultiByteMsg]]<br />
|style="border: 1px solid #666699;"|<br />
|}</div>Erikhttps://brlcad.org/w/index.php?title=General_Tree_Walker&diff=2575General Tree Walker2011-03-11T20:10:01Z<p>Erik: New page: There are currently several slightly different functions to recursively walk the CSG tree. This task would be to implement a new tree walking function capable of replacing them all and alt...</p>
<hr />
<div>There are currently several slightly different functions to recursively walk the CSG tree. This task would be to implement a new tree walking function capable of replacing them all and altering software that uses the old walkers to use the single new unified one.<br />
<br />
Requirements<br />
*Familiarity in C</div>Erikhttps://brlcad.org/w/index.php?title=Shader_Enhancements&diff=2574Shader Enhancements2011-03-11T20:06:38Z<p>Erik: New page: Shaders for the ray-tracer are currently coded in C and explicitly added to the active shader list. A shader to bridge the RT shader system to the BSD licensed implementation of OSL ( [htt...</p>
<hr />
<div>Shaders for the ray-tracer are currently coded in C and explicitly added to the active shader list. A shader to bridge the RT shader system to the BSD licensed implementation of OSL ( [http://code.google.com/p/openshadinglanguage/] ) would allow a richer visual capability.<br />
<br />
This task would involve writing the shader bridge in liboptical as well as a shader editor in mged (with a 'preview' button to raytrace a thumbnail of a sphere using the shader).<br />
<br />
*Familiarity with C/++<br />
*Familiarity with Tcl/Tk</div>Erikhttps://brlcad.org/w/index.php?title=Voxelize&diff=2571Voxelize2011-03-11T19:49:25Z<p>Erik: New page: Voxel data sets are commonly used in computational fluid dynamic simulations. The current technique for creating voxels from BRL-CAD geometry is to use the proprietary cubit framework. Th...</p>
<hr />
<div>Voxel data sets are commonly used in computational fluid dynamic simulations. The current technique for creating voxels from BRL-CAD geometry is to use the proprietary cubit framework.<br />
<br />
This task would involve using raytracing to interrogate a specified combination/region/assembly and produce a set of arb8's in a new region approximating the shape. Interface should be similar to the facetize command and will need the TCL binding to connect the mged editor to the library functionality.<br />
<br />
*Familiarity with C<br />
*Familiarity with Tcl/Tk</div>Erikhttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas&diff=2569Google Summer of Code/Project Ideas2011-03-11T19:42:05Z<p>Erik: /* BRL-CAD Core Library Enhancement */</p>
<hr />
<div>The list of possible projects below should serve as a good starting point for new developers that would like to get involved in working on BRL-CAD. The ideas below range from the very hard and math intense to the very easy, feel free to scale the scope of the project up or down as needed. The suggested project ideas below are merely starting points. In addition to those below, you may also want to consider some of these ideas.<br />
<br />
A detailed articulate (i.e. excellent) proposal that has been discussed with us beforehand will generally trump any listed priority. Please do contact us (IRC or brlcad-devel mailing list) if you have any questions, corrections, comments, or ideas of your own that you'd like to suggest.<br />
<br />
Be sure to read up on our application process for getting started with your proposal submission if you have not done so already. <br />
<br />
= Project Ideas =<br />
<br />
== <AN IDEA OF YOUR OWN> ==<br />
<br />
Do you have an idea of your own? Let us know and maybe we'll like it too. We're very open to new ideas, areas of academic research, industry applications, and any other ways that may help get you hooked on BRL-CAD development. Just remember that BRL-CAD is a solid modeling CAD suite so keep that in mind when scoping your project. The idea needs to fit in with our project goals, it needs to be specific, and it needs to be detailed.<br />
<br />
Requirements:<br />
<br />
*Passion for the task being suggested<br />
*Buy-in from one of the existing developers<br />
<br />
Difficulty: variable<br />
<br />
== Display Managers / Framebuffers ==<br />
<br />
BRL-CAD uses a display manager to view geometry (wireframes, text, overlayed framebuffers) in graphical applications such as MGED. Current display managers talk directly to low level graphical toolkits such as X and OpenGL. A project goal for BRL-CAD is to implement a display manager using a cross platform toolkit that abstracts the low level cross platform details and gives us a single, unified codebase. Specific projects include:<br />
<br />
* [[OGRE Display Manager]]<br />
* [[Qt Display Manager]]<br />
<br />
In addition to the display manager, BRL-CAD also uses a framebuffer to display the results of its raytracer as they are generated. A single cross platform framebuffer is also very desirable.<br />
<br />
* [[Qt Framebuffer]]<br />
* [[Other Cross Platform Framebuffer]]<br />
<br />
== Graphical Interface Enhancements ==<br />
<br />
The primary environment in which users interact with BRL-CAD geometry is the MGED editor. An "improved MGED" editor, currently called Archer, has been in development for some time as an eventual replacement for MGED. There are many very useful projects related to Archer:<br />
<br />
* [[MGED to Archer Command Migration]]<br />
* [[MGED Sketch Editor Migration and Enhancement]]<br />
* [[Ayam Editor Feature Integration]]<br />
* [[Analytical Raytracing Visualization]]<br />
* [[Level of Detail Wireframes]]<br />
* [[BoT Editing]]<br />
* [[NMG Editing]]<br />
* [[Graph layout based geometry hierarchy view]]<br />
<br />
== BRL-CAD Core Library Enhancement ==<br />
<br />
* [[Analysis Library]]<br />
* [[Geometry Conversion Library]]<br />
* [[GED Transactions]]<br />
* [[Geometric Constraint Solver]]<br />
* [[Material and Shader Objects]]<br />
* [[General Tree Walker]]<br />
* [[Geometry Selection Functionality]]<br />
* [[Space Partitioning for Tessellation]]<br />
* [[NMG Raytracing Performance Improvement]]<br />
* [[STEP Libraries]]<br />
* [[libsvn within Geometry Database Format]]<br />
* [[Shader Enhancements]](libpixie? OSL?)<br />
* [[Generalized abstracted spacial partitioning capability]]<br />
* [[Rework of libbu/libbn to not require Tcl]]<br />
* [[High Dynamic Range Support]]<br />
* [[Voxelize]] command<br />
<br />
== Non-Uniform Rational B-Splines ==<br />
<br />
BRL-CAD has recently implemented raytracing support for NURBS primitives. There are several remaining tasks to be done with NURBS, many of them high impact.<br />
<br />
* [[NURBS Intersections]]<br />
* [[NURBS Tessellation]]<br />
* [[CSG to NURBS conversion]]<br />
* [[Plate Mode NURBS raytracing]]<br />
<br />
<br />
== Tools ==<br />
<br />
* [[IGES import improvements]]<br />
* [[SVG renderer]]<br />
* [[Overlap tool]]<br />
* [[Automated exploded view tool]] (http://vis.berkeley.edu/papers/exview3D/)<br />
* [[Automated cutaway view tool]] (http://grail.cs.washington.edu/projects/cutaways/)<br />
* [[Add exec option to search]]<br />
* [[Converter completion so all current formats have both import and export]]<br />
* [[GUI Animation editor/creator]]<br />
* [[blender-g importer]] (investigate gamekit's blender support - is it useful?)<br />
* [[Complete bu_image/libicv and redo all pix tools to use it]]</div>Erikhttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas&diff=2520Google Summer of Code/Project Ideas2011-03-10T15:38:45Z<p>Erik: /* BRL-CAD Core Library Enhancement */</p>
<hr />
<div>The list of possible projects below should serve as a good starting point for new developers that would like to get involved in working on BRL-CAD. The ideas below range from the very hard and math intense to the very easy, feel free to scale the scope of the project up or down as needed. The suggested project ideas below are merely starting points. In addition to those below, you may also want to consider some of these ideas.<br />
<br />
A detailed articulate (i.e. excellent) proposal that has been discussed with us beforehand will generally trump any listed priority. Please do contact us (IRC or brlcad-devel mailing list) if you have any questions, corrections, comments, or ideas of your own that you'd like to suggest.<br />
<br />
Be sure to read up on our application process for getting started with your proposal submission if you have not done so already. <br />
<br />
= Project Ideas =<br />
<br />
== <AN IDEA OF YOUR OWN> ==<br />
<br />
Do you have an idea of your own? Let us know and maybe we'll like it too. We're very open to new ideas, areas of academic research, industry applications, and any other ways that may help get you hooked on BRL-CAD development. Just remember that BRL-CAD is a solid modeling CAD suite so keep that in mind when scoping your project. The idea needs to fit in with our project goals, it needs to be specific, and it needs to be detailed.<br />
<br />
Requirements:<br />
<br />
*Passion for the task being suggested<br />
*Buy-in from one of the existing developers<br />
<br />
Difficulty: variable<br />
<br />
== Display Managers / Framebuffers ==<br />
<br />
BRL-CAD uses a display manager to view geometry (wireframes, text, overlayed framebuffers) in graphical applications such as MGED. Current display managers talk directly to low level graphical toolkits such as X and OpenGL. A project goal for BRL-CAD is to implement a display manager using a cross platform toolkit that abstracts the low level cross platform details and gives us a single, unified codebase. Specific projects include:<br />
<br />
* [[OGRE Display Manager]]<br />
* [[Qt Display Manager]]<br />
<br />
In addition to the display manager, BRL-CAD also uses a framebuffer to display the results of its raytracer as they are generated. A single cross platform framebuffer is also very desirable.<br />
<br />
* [[Qt Framebuffer]]<br />
* [[Other Cross Platform Framebuffer]]<br />
<br />
* [[High Dynamic Range Support]] (openexr?)<br />
<br />
== Graphical Interface Enhancements ==<br />
<br />
The primary environment in which users interact with BRL-CAD geometry is the MGED editor. An "improved MGED" editor, currently called Archer, has been in development for some time as an eventual replacement for MGED. There are many very useful projects related to Archer:<br />
<br />
* [[MGED to Archer Command Migration]]<br />
* [[MGED Sketch Editor Migration and Enhancement]]<br />
* [[Ayam Editor Feature Integration]]<br />
* [[Analytical Raytracing Visualization]]<br />
* [[Level of Detail Wireframes]]<br />
* [[BoT Editing]]<br />
* [[NMG Editing]]<br />
* [[Graph layout based geometry hierarchy view]]<br />
* Plenty more to list... check TODO, notes<br />
<br />
== BRL-CAD Core Library Enhancement ==<br />
<br />
* [[Analysis Library]]<br />
* [[Geometry Conversion Library]]<br />
* [[GED Transactions]]<br />
* [[Geometric Constraint Solver]]<br />
* [[Material and Shader Objects]]<br />
* [[General Tree Walker]]<br />
* [[Geometry Selection Functionality]]<br />
* [[Space Partitioning for Tessellation]]<br />
* [[NMG Raytracing Performance Improvement]]<br />
* [[Fixed-precision compile-time interface]]<br />
* [[STEP Libraries]]<br />
* [[libsvn within Geometry Database Format]]<br />
* [[SWIG wrapper around librt and libged]]<br />
* [[Shader Enhancements]](libpixie? OSL?)<br />
* [[SIMD of ray shooting]] (runtime selectable)<br />
* [[Parallel prep]]<br />
* [[Generalized abstracted spacial partitioning capability]]<br />
* [[BoT CSG evaluator]]<br />
* [[hoist tcl stuff from bu/bn to tclcad?]]<br />
<br />
== Non-Uniform Rational B-Splines ==<br />
<br />
BRL-CAD has recently implemented raytracing support for NURBS primitives. There are several remaining tasks to be done with NURBS, many of them high impact.<br />
<br />
* [[NURBS Intersections]]<br />
* [[NURBS Tessellation]]<br />
* [[CSG to NURBS conversion]]<br />
* [[Plate Mode NURBS raytracing]]<br />
* [[Mesh to NURBS]]<br />
* [[Point Cloud to NURBS]]<br />
<br />
== Tools ==<br />
<br />
* [[SVG renderer]]<br />
* [[Overlap tool]]<br />
* [[Automated exploded view tool]] (http://vis.berkeley.edu/papers/exview3D/)<br />
* [[Automated cutaway view tool]] (http://grail.cs.washington.edu/projects/cutaways/)<br />
* [[search exec]] (maybe...)<br />
* [[Converter completion so all current formats have both import and export]]<br />
* [[GUI Animation editor/creator]]<br />
* [[Blender plugin to read/write .g files]] (python with ffi to librt/libwdb?)<br />
* [[Complete bu_image/libicv and redo all pix tools to use it]]</div>Erikhttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas&diff=2519Google Summer of Code/Project Ideas2011-03-10T15:37:44Z<p>Erik: 'csg' makes more sense than 'boolean' here</p>
<hr />
<div>The list of possible projects below should serve as a good starting point for new developers that would like to get involved in working on BRL-CAD. The ideas below range from the very hard and math intense to the very easy, feel free to scale the scope of the project up or down as needed. The suggested project ideas below are merely starting points. In addition to those below, you may also want to consider some of these ideas.<br />
<br />
A detailed articulate (i.e. excellent) proposal that has been discussed with us beforehand will generally trump any listed priority. Please do contact us (IRC or brlcad-devel mailing list) if you have any questions, corrections, comments, or ideas of your own that you'd like to suggest.<br />
<br />
Be sure to read up on our application process for getting started with your proposal submission if you have not done so already. <br />
<br />
= Project Ideas =<br />
<br />
== <AN IDEA OF YOUR OWN> ==<br />
<br />
Do you have an idea of your own? Let us know and maybe we'll like it too. We're very open to new ideas, areas of academic research, industry applications, and any other ways that may help get you hooked on BRL-CAD development. Just remember that BRL-CAD is a solid modeling CAD suite so keep that in mind when scoping your project. The idea needs to fit in with our project goals, it needs to be specific, and it needs to be detailed.<br />
<br />
Requirements:<br />
<br />
*Passion for the task being suggested<br />
*Buy-in from one of the existing developers<br />
<br />
Difficulty: variable<br />
<br />
== Display Managers / Framebuffers ==<br />
<br />
BRL-CAD uses a display manager to view geometry (wireframes, text, overlayed framebuffers) in graphical applications such as MGED. Current display managers talk directly to low level graphical toolkits such as X and OpenGL. A project goal for BRL-CAD is to implement a display manager using a cross platform toolkit that abstracts the low level cross platform details and gives us a single, unified codebase. Specific projects include:<br />
<br />
* [[OGRE Display Manager]]<br />
* [[Qt Display Manager]]<br />
<br />
In addition to the display manager, BRL-CAD also uses a framebuffer to display the results of its raytracer as they are generated. A single cross platform framebuffer is also very desirable.<br />
<br />
* [[Qt Framebuffer]]<br />
* [[Other Cross Platform Framebuffer]]<br />
<br />
* [[High Dynamic Range Support]] (openexr?)<br />
<br />
== Graphical Interface Enhancements ==<br />
<br />
The primary environment in which users interact with BRL-CAD geometry is the MGED editor. An "improved MGED" editor, currently called Archer, has been in development for some time as an eventual replacement for MGED. There are many very useful projects related to Archer:<br />
<br />
* [[MGED to Archer Command Migration]]<br />
* [[MGED Sketch Editor Migration and Enhancement]]<br />
* [[Ayam Editor Feature Integration]]<br />
* [[Analytical Raytracing Visualization]]<br />
* [[Level of Detail Wireframes]]<br />
* [[BoT Editing]]<br />
* [[NMG Editing]]<br />
* [[Graph layout based geometry hierarchy view]]<br />
* Plenty more to list... check TODO, notes<br />
<br />
== BRL-CAD Core Library Enhancement ==<br />
<br />
* [[Analysis Library]]<br />
* [[Geometry Conversion Library]]<br />
* [[GED Transactions]]<br />
* [[Geometric Constraint Solver]]<br />
* [[Material and Shader Objects]]<br />
* [[General Tree Walker]]<br />
* [[Geometry Selection Functionality]]<br />
* [[Space Partitioning for Tessellation]]<br />
* [[NMG Raytracing Performance Improvement]]<br />
* [[Fixed-precision compile-time interface]]<br />
* [[STEP Libraries]]<br />
* [[libsvn within Geometry Database Format]]<br />
* [[SWIG wrapper around librt and libged]]<br />
* [[Shader Enhancements]](libpixie? OSL?)<br />
* [[SIMD of ray shooting]] (runtime selectable)<br />
* [[Parallel prep]]<br />
* [[Generalized abstracted spacial partitioning capability]]<br />
* [[BoT CSG evaluator]]<br />
<br />
== Non-Uniform Rational B-Splines ==<br />
<br />
BRL-CAD has recently implemented raytracing support for NURBS primitives. There are several remaining tasks to be done with NURBS, many of them high impact.<br />
<br />
* [[NURBS Intersections]]<br />
* [[NURBS Tessellation]]<br />
* [[CSG to NURBS conversion]]<br />
* [[Plate Mode NURBS raytracing]]<br />
* [[Mesh to NURBS]]<br />
* [[Point Cloud to NURBS]]<br />
<br />
== Tools ==<br />
<br />
* [[SVG renderer]]<br />
* [[Overlap tool]]<br />
* [[Automated exploded view tool]] (http://vis.berkeley.edu/papers/exview3D/)<br />
* [[Automated cutaway view tool]] (http://grail.cs.washington.edu/projects/cutaways/)<br />
* [[search exec]] (maybe...)<br />
* [[Converter completion so all current formats have both import and export]]<br />
* [[GUI Animation editor/creator]]<br />
* [[Blender plugin to read/write .g files]] (python with ffi to librt/libwdb?)<br />
* [[Complete bu_image/libicv and redo all pix tools to use it]]</div>Erikhttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas&diff=2518Google Summer of Code/Project Ideas2011-03-10T15:35:51Z<p>Erik: /* Tools */</p>
<hr />
<div>The list of possible projects below should serve as a good starting point for new developers that would like to get involved in working on BRL-CAD. The ideas below range from the very hard and math intense to the very easy, feel free to scale the scope of the project up or down as needed. The suggested project ideas below are merely starting points. In addition to those below, you may also want to consider some of these ideas.<br />
<br />
A detailed articulate (i.e. excellent) proposal that has been discussed with us beforehand will generally trump any listed priority. Please do contact us (IRC or brlcad-devel mailing list) if you have any questions, corrections, comments, or ideas of your own that you'd like to suggest.<br />
<br />
Be sure to read up on our application process for getting started with your proposal submission if you have not done so already. <br />
<br />
= Project Ideas =<br />
<br />
== <AN IDEA OF YOUR OWN> ==<br />
<br />
Do you have an idea of your own? Let us know and maybe we'll like it too. We're very open to new ideas, areas of academic research, industry applications, and any other ways that may help get you hooked on BRL-CAD development. Just remember that BRL-CAD is a solid modeling CAD suite so keep that in mind when scoping your project. The idea needs to fit in with our project goals, it needs to be specific, and it needs to be detailed.<br />
<br />
Requirements:<br />
<br />
*Passion for the task being suggested<br />
*Buy-in from one of the existing developers<br />
<br />
Difficulty: variable<br />
<br />
== Display Managers / Framebuffers ==<br />
<br />
BRL-CAD uses a display manager to view geometry (wireframes, text, overlayed framebuffers) in graphical applications such as MGED. Current display managers talk directly to low level graphical toolkits such as X and OpenGL. A project goal for BRL-CAD is to implement a display manager using a cross platform toolkit that abstracts the low level cross platform details and gives us a single, unified codebase. Specific projects include:<br />
<br />
* [[OGRE Display Manager]]<br />
* [[Qt Display Manager]]<br />
<br />
In addition to the display manager, BRL-CAD also uses a framebuffer to display the results of its raytracer as they are generated. A single cross platform framebuffer is also very desirable.<br />
<br />
* [[Qt Framebuffer]]<br />
* [[Other Cross Platform Framebuffer]]<br />
<br />
* [[High Dynamic Range Support]] (openexr?)<br />
<br />
== Graphical Interface Enhancements ==<br />
<br />
The primary environment in which users interact with BRL-CAD geometry is the MGED editor. An "improved MGED" editor, currently called Archer, has been in development for some time as an eventual replacement for MGED. There are many very useful projects related to Archer:<br />
<br />
* [[MGED to Archer Command Migration]]<br />
* [[MGED Sketch Editor Migration and Enhancement]]<br />
* [[Ayam Editor Feature Integration]]<br />
* [[Analytical Raytracing Visualization]]<br />
* [[Level of Detail Wireframes]]<br />
* [[BoT Editing]]<br />
* [[NMG Editing]]<br />
* [[Graph layout based geometry hierarchy view]]<br />
* Plenty more to list... check TODO, notes<br />
<br />
== BRL-CAD Core Library Enhancement ==<br />
<br />
* [[Analysis Library]]<br />
* [[Geometry Conversion Library]]<br />
* [[GED Transactions]]<br />
* [[Geometric Constraint Solver]]<br />
* [[Material and Shader Objects]]<br />
* [[General Tree Walker]]<br />
* [[Geometry Selection Functionality]]<br />
* [[Space Partitioning for Tessellation]]<br />
* [[NMG Raytracing Performance Improvement]]<br />
* [[Fixed-precision compile-time interface]]<br />
* [[STEP Libraries]]<br />
* [[libsvn within Geometry Database Format]]<br />
* [[SWIG wrapper around librt and libged]]<br />
* [[Shader Enhancements]](libpixie? OSL?)<br />
* [[SIMD of ray shooting]] (runtime selectable)<br />
* [[Parallel prep]]<br />
* [[Generalized abstracted spacial partitioning capability]]<br />
* [[BoT boolean evaluator]]<br />
<br />
== Non-Uniform Rational B-Splines ==<br />
<br />
BRL-CAD has recently implemented raytracing support for NURBS primitives. There are several remaining tasks to be done with NURBS, many of them high impact.<br />
<br />
* [[NURBS Intersections]]<br />
* [[NURBS Tessellation]]<br />
* [[CSG to NURBS conversion]]<br />
* [[Plate Mode NURBS raytracing]]<br />
* [[Mesh to NURBS]]<br />
* [[Point Cloud to NURBS]]<br />
<br />
== Tools ==<br />
<br />
* [[SVG renderer]]<br />
* [[Overlap tool]]<br />
* [[Automated exploded view tool]] (http://vis.berkeley.edu/papers/exview3D/)<br />
* [[Automated cutaway view tool]] (http://grail.cs.washington.edu/projects/cutaways/)<br />
* [[search exec]] (maybe...)<br />
* [[Converter completion so all current formats have both import and export]]<br />
* [[GUI Animation editor/creator]]<br />
* [[Blender plugin to read/write .g files]] (python with ffi to librt/libwdb?)<br />
* [[Complete bu_image/libicv and redo all pix tools to use it]]</div>Erikhttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas&diff=2517Google Summer of Code/Project Ideas2011-03-10T15:32:20Z<p>Erik: /* Tools */</p>
<hr />
<div>The list of possible projects below should serve as a good starting point for new developers that would like to get involved in working on BRL-CAD. The ideas below range from the very hard and math intense to the very easy, feel free to scale the scope of the project up or down as needed. The suggested project ideas below are merely starting points. In addition to those below, you may also want to consider some of these ideas.<br />
<br />
A detailed articulate (i.e. excellent) proposal that has been discussed with us beforehand will generally trump any listed priority. Please do contact us (IRC or brlcad-devel mailing list) if you have any questions, corrections, comments, or ideas of your own that you'd like to suggest.<br />
<br />
Be sure to read up on our application process for getting started with your proposal submission if you have not done so already. <br />
<br />
= Project Ideas =<br />
<br />
== <AN IDEA OF YOUR OWN> ==<br />
<br />
Do you have an idea of your own? Let us know and maybe we'll like it too. We're very open to new ideas, areas of academic research, industry applications, and any other ways that may help get you hooked on BRL-CAD development. Just remember that BRL-CAD is a solid modeling CAD suite so keep that in mind when scoping your project. The idea needs to fit in with our project goals, it needs to be specific, and it needs to be detailed.<br />
<br />
Requirements:<br />
<br />
*Passion for the task being suggested<br />
*Buy-in from one of the existing developers<br />
<br />
Difficulty: variable<br />
<br />
== Display Managers / Framebuffers ==<br />
<br />
BRL-CAD uses a display manager to view geometry (wireframes, text, overlayed framebuffers) in graphical applications such as MGED. Current display managers talk directly to low level graphical toolkits such as X and OpenGL. A project goal for BRL-CAD is to implement a display manager using a cross platform toolkit that abstracts the low level cross platform details and gives us a single, unified codebase. Specific projects include:<br />
<br />
* [[OGRE Display Manager]]<br />
* [[Qt Display Manager]]<br />
<br />
In addition to the display manager, BRL-CAD also uses a framebuffer to display the results of its raytracer as they are generated. A single cross platform framebuffer is also very desirable.<br />
<br />
* [[Qt Framebuffer]]<br />
* [[Other Cross Platform Framebuffer]]<br />
<br />
* [[High Dynamic Range Support]] (openexr?)<br />
<br />
== Graphical Interface Enhancements ==<br />
<br />
The primary environment in which users interact with BRL-CAD geometry is the MGED editor. An "improved MGED" editor, currently called Archer, has been in development for some time as an eventual replacement for MGED. There are many very useful projects related to Archer:<br />
<br />
* [[MGED to Archer Command Migration]]<br />
* [[MGED Sketch Editor Migration and Enhancement]]<br />
* [[Ayam Editor Feature Integration]]<br />
* [[Analytical Raytracing Visualization]]<br />
* [[Level of Detail Wireframes]]<br />
* [[BoT Editing]]<br />
* [[NMG Editing]]<br />
* [[Graph layout based geometry hierarchy view]]<br />
* Plenty more to list... check TODO, notes<br />
<br />
== BRL-CAD Core Library Enhancement ==<br />
<br />
* [[Analysis Library]]<br />
* [[Geometry Conversion Library]]<br />
* [[GED Transactions]]<br />
* [[Geometric Constraint Solver]]<br />
* [[Material and Shader Objects]]<br />
* [[General Tree Walker]]<br />
* [[Geometry Selection Functionality]]<br />
* [[Space Partitioning for Tessellation]]<br />
* [[NMG Raytracing Performance Improvement]]<br />
* [[Fixed-precision compile-time interface]]<br />
* [[STEP Libraries]]<br />
* [[libsvn within Geometry Database Format]]<br />
* [[SWIG wrapper around librt and libged]]<br />
* [[Shader Enhancements]](libpixie? OSL?)<br />
* [[SIMD of ray shooting]] (runtime selectable)<br />
* [[Parallel prep]]<br />
* [[Generalized abstracted spacial partitioning capability]]<br />
* [[BoT boolean evaluator]]<br />
<br />
== Non-Uniform Rational B-Splines ==<br />
<br />
BRL-CAD has recently implemented raytracing support for NURBS primitives. There are several remaining tasks to be done with NURBS, many of them high impact.<br />
<br />
* [[NURBS Intersections]]<br />
* [[NURBS Tessellation]]<br />
* [[CSG to NURBS conversion]]<br />
* [[Plate Mode NURBS raytracing]]<br />
* [[Mesh to NURBS]]<br />
* [[Point Cloud to NURBS]]<br />
<br />
== Tools ==<br />
<br />
* [[SVG renderer]]<br />
* [[Overlap tool]]<br />
* [[Automated exploded view tool]] (http://vis.berkeley.edu/papers/exview3D/)<br />
* [[Automated cutaway view tool]] (http://grail.cs.washington.edu/projects/cutaways/)<br />
* [[search exec]] (maybe...)<br />
* [[Converter completion so all current formats have both import and export]]<br />
* [[GUI Animation editor/creator]]</div>Erikhttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas&diff=2516Google Summer of Code/Project Ideas2011-03-10T15:31:31Z<p>Erik: /* BRL-CAD Core Library Enhancement */</p>
<hr />
<div>The list of possible projects below should serve as a good starting point for new developers that would like to get involved in working on BRL-CAD. The ideas below range from the very hard and math intense to the very easy, feel free to scale the scope of the project up or down as needed. The suggested project ideas below are merely starting points. In addition to those below, you may also want to consider some of these ideas.<br />
<br />
A detailed articulate (i.e. excellent) proposal that has been discussed with us beforehand will generally trump any listed priority. Please do contact us (IRC or brlcad-devel mailing list) if you have any questions, corrections, comments, or ideas of your own that you'd like to suggest.<br />
<br />
Be sure to read up on our application process for getting started with your proposal submission if you have not done so already. <br />
<br />
= Project Ideas =<br />
<br />
== <AN IDEA OF YOUR OWN> ==<br />
<br />
Do you have an idea of your own? Let us know and maybe we'll like it too. We're very open to new ideas, areas of academic research, industry applications, and any other ways that may help get you hooked on BRL-CAD development. Just remember that BRL-CAD is a solid modeling CAD suite so keep that in mind when scoping your project. The idea needs to fit in with our project goals, it needs to be specific, and it needs to be detailed.<br />
<br />
Requirements:<br />
<br />
*Passion for the task being suggested<br />
*Buy-in from one of the existing developers<br />
<br />
Difficulty: variable<br />
<br />
== Display Managers / Framebuffers ==<br />
<br />
BRL-CAD uses a display manager to view geometry (wireframes, text, overlayed framebuffers) in graphical applications such as MGED. Current display managers talk directly to low level graphical toolkits such as X and OpenGL. A project goal for BRL-CAD is to implement a display manager using a cross platform toolkit that abstracts the low level cross platform details and gives us a single, unified codebase. Specific projects include:<br />
<br />
* [[OGRE Display Manager]]<br />
* [[Qt Display Manager]]<br />
<br />
In addition to the display manager, BRL-CAD also uses a framebuffer to display the results of its raytracer as they are generated. A single cross platform framebuffer is also very desirable.<br />
<br />
* [[Qt Framebuffer]]<br />
* [[Other Cross Platform Framebuffer]]<br />
<br />
* [[High Dynamic Range Support]] (openexr?)<br />
<br />
== Graphical Interface Enhancements ==<br />
<br />
The primary environment in which users interact with BRL-CAD geometry is the MGED editor. An "improved MGED" editor, currently called Archer, has been in development for some time as an eventual replacement for MGED. There are many very useful projects related to Archer:<br />
<br />
* [[MGED to Archer Command Migration]]<br />
* [[MGED Sketch Editor Migration and Enhancement]]<br />
* [[Ayam Editor Feature Integration]]<br />
* [[Analytical Raytracing Visualization]]<br />
* [[Level of Detail Wireframes]]<br />
* [[BoT Editing]]<br />
* [[NMG Editing]]<br />
* [[Graph layout based geometry hierarchy view]]<br />
* Plenty more to list... check TODO, notes<br />
<br />
== BRL-CAD Core Library Enhancement ==<br />
<br />
* [[Analysis Library]]<br />
* [[Geometry Conversion Library]]<br />
* [[GED Transactions]]<br />
* [[Geometric Constraint Solver]]<br />
* [[Material and Shader Objects]]<br />
* [[General Tree Walker]]<br />
* [[Geometry Selection Functionality]]<br />
* [[Space Partitioning for Tessellation]]<br />
* [[NMG Raytracing Performance Improvement]]<br />
* [[Fixed-precision compile-time interface]]<br />
* [[STEP Libraries]]<br />
* [[libsvn within Geometry Database Format]]<br />
* [[SWIG wrapper around librt and libged]]<br />
* [[Shader Enhancements]](libpixie? OSL?)<br />
* [[SIMD of ray shooting]] (runtime selectable)<br />
* [[Parallel prep]]<br />
* [[Generalized abstracted spacial partitioning capability]]<br />
* [[BoT boolean evaluator]]<br />
<br />
== Non-Uniform Rational B-Splines ==<br />
<br />
BRL-CAD has recently implemented raytracing support for NURBS primitives. There are several remaining tasks to be done with NURBS, many of them high impact.<br />
<br />
* [[NURBS Intersections]]<br />
* [[NURBS Tessellation]]<br />
* [[CSG to NURBS conversion]]<br />
* [[Plate Mode NURBS raytracing]]<br />
* [[Mesh to NURBS]]<br />
* [[Point Cloud to NURBS]]<br />
<br />
== Tools ==<br />
<br />
* [[SVG renderer]]<br />
* [[Overlap tool]]<br />
* [[Automated exploded view tool]] (http://vis.berkeley.edu/papers/exview3D/)<br />
* [[Automated cutaway view tool]] (http://grail.cs.washington.edu/projects/cutaways/)<br />
* [[search exec]] (maybe...)</div>Erikhttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/Project_Ideas&diff=2514Google Summer of Code/Project Ideas2011-03-10T14:45:25Z<p>Erik: /* BRL-CAD Core Library Enhancement */</p>
<hr />
<div>The list of possible projects below should serve as a good starting point for new developers that would like to get involved in working on BRL-CAD. The ideas below range from the very hard and math intense to the very easy, feel free to scale the scope of the project up or down as needed. The suggested project ideas below are merely starting points. In addition to those below, you may also want to consider some of these ideas.<br />
<br />
A detailed articulate (i.e. excellent) proposal that has been discussed with us beforehand will generally trump any listed priority. Please do contact us (IRC or brlcad-devel mailing list) if you have any questions, corrections, comments, or ideas of your own that you'd like to suggest.<br />
<br />
Be sure to read up on our application process for getting started with your proposal submission if you have not done so already. <br />
<br />
= Project Ideas =<br />
<br />
== <AN IDEA OF YOUR OWN> ==<br />
<br />
Do you have an idea of your own? Let us know and maybe we'll like it too. We're very open to new ideas, areas of academic research, industry applications, and any other ways that may help get you hooked on BRL-CAD development. Just remember that BRL-CAD is a solid modeling CAD suite so keep that in mind when scoping your project. The idea needs to fit in with our project goals, it needs to be specific, and it needs to be detailed.<br />
<br />
Requirements:<br />
<br />
*Passion for the task being suggested<br />
*Buy-in from one of the existing developers<br />
<br />
Difficulty: variable<br />
<br />
== Display Managers / Framebuffers ==<br />
<br />
BRL-CAD uses a display manager to view geometry (wireframes, text, overlayed framebuffers) in graphical applications such as MGED. Current display managers talk directly to low level graphical toolkits such as X and OpenGL. A project goal for BRL-CAD is to implement a display manager using a cross platform toolkit that abstracts the low level cross platform details and gives us a single, unified codebase. Specific projects include:<br />
<br />
* [[OGRE Display Manager]]<br />
* [[Qt Display Manager]]<br />
<br />
In addition to the display manager, BRL-CAD also uses a framebuffer to display the results of its raytracer as they are generated. A single cross platform framebuffer is also very desirable.<br />
<br />
* [[Qt Framebuffer]]<br />
* [[Other Cross Platform Framebuffer]]<br />
<br />
== Graphical Interface Enhancements ==<br />
<br />
The primary environment in which users interact with BRL-CAD geometry is the MGED editor. An "improved MGED" editor, currently called Archer, has been in development for some time as an eventual replacement for MGED. There are many very useful projects related to Archer:<br />
<br />
* [[MGED to Archer Command Migration]]<br />
* [[MGED Sketch Editor Migration and Enhancement]]<br />
* [[Ayam Editor Feature Integration]]<br />
* [[Analytical Raytracing Visualization]]<br />
* [[Level of Detail Wireframes]]<br />
* [[BoT Editing]]<br />
* [[NMG Editing]]<br />
* [[Graph layout based geometry hierarchy view]]<br />
* Plenty more to list... check TODO, notes<br />
<br />
== BRL-CAD Core Library Enhancement ==<br />
<br />
* [[Analysis Library]]<br />
* [[Geometry Conversion Library]]<br />
* [[GED Transactions]]<br />
* [[Geometric Constraint Solver]]<br />
* [[Material and Shader Objects]]<br />
* [[General Tree Walker]]<br />
* [[Geometry Selection Functionality]]<br />
* [[Space Partitioning for Tessellation]]<br />
* [[NMG Raytracing Performance Improvement]]<br />
* [[Fixed-precision compile-time interface]]<br />
* [[STEP Libraries]]<br />
* [[libsvn within Geometry Database Format]]<br />
* [[SWIG wrapper around librt and libged]]<br />
<br />
== Non-Uniform Rational B-Splines ==<br />
<br />
BRL-CAD has recently implemented raytracing support for NURBS primitives. There are several remaining tasks to be done with NURBS, many of them high impact.<br />
<br />
* [[NURBS Intersections]]<br />
* [[NURBS Tessellation]]<br />
* [[CSG to NURBS conversion]]<br />
* [[Plate Mode NURBS raytracing]]<br />
* [[Mesh to NURBS]]<br />
* [[Point Cloud to NURBS]]<br />
<br />
== Tools ==<br />
<br />
* [[SVG renderer]]<br />
* [[Overlap tool]]<br />
* [[Automated exploded view tool]] (http://vis.berkeley.edu/papers/exview3D/)<br />
* [[Automated cutaway view tool]] (http://grail.cs.washington.edu/projects/cutaways/)</div>Erikhttps://brlcad.org/w/index.php?title=Main_page&diff=2347Main page2010-11-19T14:32:09Z<p>Erik: Undo revision 2346 by MilissaGodinez (Talk)</p>
<hr />
<div>__NOTOC__<br />
<br />
= BRL-CAD Wiki =<br />
<br />
Welcome to the BRL-CAD Wiki! A wiki is a type of site that allows visitors to directly contribute to the content of a website. The intention of the BRL-CAD Wiki is to get ''everyone'' in the community working together on providing the information that everyone needs. The wiki is intended as a place for any documentation, tutorials, support, examples, and other pieces of information that may be of use to others. All are welcome to contribute and anyone may edit most of the wiki pages. With everyone's help, we can make this a tremendous resource for the CAD community.<br />
<br />
Don't be shy with your contributions. Give editing a try and be proud of your contributions! If you make a mistake, they're very easy to undo and you don't even need to have an account created. If you do create an account, however, you will be credited with the contribution in the page's history. <br />
<br />
So be '''bold''' and ''have at it''!<br />
<br />
== Getting started ==<br />
<br />
* [[FAQ]]<br />
* [[Documentation]]<br />
* [[MGED Commands]]<br />
* [[BRL-CAD Commands]]<br />
* [[BRL-CAD Primitives]]<br />
* [[Support]]<br />
* [http://brlcad.org/gallery Image Gallery]<br />
* [[SVN]]<br />
* [[Forums]]<br />
<br />
== Tutorials ==<br />
* [[Animation]]<br />
* [[EBM]]<br />
* [[SGI_Cube]]<br />
* [[Sketch]]<br />
* [[Cutting and Pasting PIX files]]<br />
* [[Distributed Rendering]]<br />
* [[Lighting]]<br />
* [[Spiral]]: Scripting MGED with Perl<br />
<br />
== Projects == <br />
* [[Google Summer of Code]]<br />
* [[Developer Documents]]<br />
* [[Geometry_Service_Project_Main|Geometry Service Project]]<br />
<br />
== Third-party Projects ==<br />
* [[Hex]] - Create threaded metric bolts, nuts, and washers<br />
* [[Projecto VeRDE]] - Designing a vehicle for collecting space debris<br />
<br />
----<br />
If you are unsure on how to edit or add new pages, see the [[Help:Contents|Help]]. Consult the [http://meta.wikimedia.org/wiki/Help User's Guide] for information on using a wiki, particularly the section on [http://meta.wikimedia.org/wiki/Help:Editing editing] pages.<br />
<br />
Unless otherwise noted, all contributions to the BRL-CAD wiki are made available under the terms of the [[BSD Documentation License]] (BDL). Please refer to the wiki site [[disclaimer]] for more details.</div>Erikhttps://brlcad.org/w/index.php?title=URL_URI_URN_Implimentations&diff=2244URL URI URN Implimentations2010-06-04T14:26:57Z<p>Erik: Undo revision 2243 by Shirnie12 (Talk)</p>
<hr />
<div>{{DesignDocument}}<br />
<br />
cad://dloman@fe80::21b:63ff:fe03:3cdf%en1/hardware/fasteners/9.16th/3in/aluminum/bolt.g/<br />
<br />
<br />
<br />
<br />
cad://dloman@sassyhost/hardware/fasteners/bolts.g/9.16th/3inch/aluminum/dwaynesbolt/bolt01.s<br />
cad://user @hostname /dir /dir /db /comb /comb /comb /region /solid <br />
cad://user @hostname /comb /comb /comb /comb /comb /comb /region /solid<br />
<br />
<br />
<br />
cad://dloman@sassyhost/hardware/fasteners/bolts/9.16th/3inch/aluminum/dwaynesbolt/bolt01.s<br />
cad://dloman@sassyhost/hardware.g/fasteners.g/bolts.g/9.16th.g/3inch.g/aluminum.g/dwaynesbolt.g/bolt01.s.g</div>Erik