Editing Deuces

From BRL-CAD

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 114: Line 114:
 
* src/librt/primitives/table.c
 
* src/librt/primitives/table.c
 
* include/rtgeom.h
 
* include/rtgeom.h
 
 
 
|}
 
 
 
 
 
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 
| style="padding: 20px;" |
 
=== Fix elliptical torus triangulation ===
 
 
BRL-CAD has many 3D object types, one of them being an "Elliptical Torus".  If you create a new MGED database and run this sequence of commands, it'll crash due to excessive recursion:
 
 
<pre>
 
make eto eto
 
tol norm 1
 
facetize eto.bot eto
 
</pre>
 
 
This task's goal is to reproduce, identify, and fix the bug so that detailed eto tessellation completes successfully.  To get started, see the rt_eto_tess() function in src/librt/primitives/eto/eto.c and the facetize command logic in libged.
 
 
Code:
 
* src/librt/primitives/eto/eto.c, <- you'll probably need to modify this file
 
* src/libged/facetize/facetize.cpp
 
 
&nbsp;
 
|}
 
&nbsp;
 
 
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 
| style="padding: 20px;" |
 
=== Implement a function that evaluates volume with spherical sampling ===
 
 
Implement this function:
 
 
    int estimate_volume(struct db_i *dbip,
 
                        struct directory *dp,
 
                        size_t min_samples,
 
                        double confidence);
 
 
For this function, you'll want to read up on some of BRL-CAD's basic data structures by looking at headers in the include/rt directory or by reading our [https://brlcad.org/docs/api/ API documentation].  Calling rt_db_internal() and rt_bound_internal() will get you the bounding box around geometry from which you can calculate a bounding sphere.  Once you have the bounding sphere, randomly generate a set of min_samples*2 points on the surface of the sphere.  Shoot a ray through those points using rt_shootray(), as in the ray tracing [[Example_Application|example]].  Keep track of a volume estimate and keep shooting sets of min_samples rays until the estimate is less than the specified confidence value.  Volume of a sphere is (4/3 * pi * r^3) so dividing that by num_samples will give a per-ray factor and multiplying all hit thicknesses by that factor will give a running volume estimate.
 
 
References:
 
* https://brlcad.org/docs/api/
 
* https://brlcad.org/wiki/Example_Application
 
* https://stackoverflow.com/questions/9600801/evenly-distributing-n-points-on-a-sphere
 
* https://karthikkaranth.me/blog/generating-random-points-in-a-sphere/
 
 
&nbsp;
 
|}
 
&nbsp;
 
 
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 
| style="padding: 20px;" |
 
 
=== Implement a function to return an object's color ===
 
 
CAD geometry can have colors specified in a number of ways including directly on that object, in a parent object, and in a lookup table.  For this task, you're going to implement a function that reports the color of an object given a path to that object:
 
 
    int get_color(struct db_i *dbip, const char *path, struct bu_color *rgb);
 
 
You'll need to iteratively consider each object named on the specified path (e.g., "/car/wheel/tire.r/torus") starting with "car" and working your down the path (i.e., 'wheel', 'tire.r', and then 'torus') to 1) see if a color is set on that object and 2) see if that color overrides lower-level colors (i.e., is inherited down the path), and 3) if it's a region object, whether there is a color set in the region table.  You'll need to db_lookup() each object on the path to get access to its data.
 
 
For this function, you'll want to read up on some of BRL-CAD's basic data structures by looking at headers in the include/rt directory or by reading our [https://brlcad.org/docs/api/ API documentation].  This task may seem complicated if you're not familiar with C/C++ APIs, data structures, or hierarchical paths, so don't be shy [https://brlcad.zulipchat.com asking] questions.
 
 
References:
 
* https://brlcad.org/docs/api/
 
 
Code References:
 
* src/libged/display_list.c
 
* src/libged/color/color.c
 
* src/librt/prep.c
 
 
&nbsp;
 
|}
 
&nbsp;
 
 
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 
| style="padding: 20px;" |
 
 
=== Stub in an OpenVDB object ===
 
 
BRL-CAD has dozens of distinct primitive object types.  For this task, you're going to implement the bare minimum to necessary to create a new object with the "make" command in MGED.
 
 
The best way to achieve this task is by searching for a keyword for another primitive (e.g., 'grep -r -i superell .') and implementing your new object the same way.  Start with the 'make' command itself in src/libged/make/make.c and add "vdb" alongside where you find one of the other primitive types (e.g., superell).  To get that to compile, you'll have to add new symbols you've defined into header files (e.g., include/rt/rtgeom.h).  You'll eventually need to implement barebones logic in src/librt/primitives/vdb too.
 
 
Code:
 
* include/rt/defines.h <- needs an ID
 
* include/rt/geom.h <- needs an "internal" i.e., in-memory structure
 
* src/libged/make/make.c <- needs to recognize "vdb" as a valid type
 
* src/librt/primitives/table.cpp <- needs an entry
 
* src/librt/primtiives/vdb <- needs a dir
 
* src/librt/primitives/vdb/vdb.c <- needs _import5/_export5 callbacks, maybe _describe too
 
  
 
&nbsp;
 
&nbsp;
Line 243: Line 151:
 
Reference:
 
Reference:
 
* Come [https://brlcad.zulipchat.com talk with us] to make sure you get a copy of the latest version.
 
* Come [https://brlcad.zulipchat.com talk with us] to make sure you get a copy of the latest version.
* https://brlcad.org/w/images/9/90/Intro_to_BRL-CAD.pdf
 
* https://brlcad.org/w/images/c/cf/Introduction_to_MGED.pdf
 
* ... there's another new one, but you have to ask for it ...
 
  
 
&nbsp;
 
&nbsp;
Line 253: Line 158:
 
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 
| style="padding: 20px;" |
 
| style="padding: 20px;" |
 
 
=== Translate "Contributors Guide To BRL-CAD" To Any Language ===
 
=== Translate "Contributors Guide To BRL-CAD" To Any Language ===
  
Line 488: Line 392:
  
 
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.
 
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.
 
&nbsp;
 
|}
 
&nbsp;
 
 
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 
| style="padding: 20px;" |
 
=== Upgrade OpenNURBS, report issues ===
 
 
BRL-CAD uses a customized OpenNURBS library for advanced geometry but it's out of date.  For this task, you're going to download the latest OpenNURBS code and upgrade the sources we bundle.  The easiest way is probably to move src/other/openNURBS to src/other/openNURBS.backup, and then put the latest OpenNURBS release into src/other/openNURBS.
 
 
Once that's done, you'll need to add the src/other/openNURBS.backup/CMakeLists.txt file and make sure the list of files it has matches the files in src/other/openNURBS.  Last but not least, re-run cmake and make sure it compiles.  You may need to consult the newer openNURBS makefile to see if there are other edits needed in the CMakeLists.txt file.
 
 
Save output from any commands you run because you'll probably encounter an error, and that's okay.  Just submit logs of all output so we can figure out next steps.
 
 
References:
 
* https://github.com/mcneel/opennurbs
 
 
Code:
 
* src/other/openNURBS <- replace existing with latest openNURBS from github
 
  
 
&nbsp;
 
&nbsp;
Line 789: Line 673:
 
| style="padding: 20px;" |
 
| style="padding: 20px;" |
  
=== Categorize commands into a spreadsheet ===
+
=== Categorize all of BRL-CAD's commands into a spreadsheet ===
 +
 
 +
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.
 +
 
 +
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.
 +
 
 +
References:
 +
* A spreadsheet template will be provided.
 +
 
 +
&nbsp;
 +
|}
 +
&nbsp;
 +
 
 +
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 +
| style="padding: 20px;" |
 +
===  Design a Cover Photo for Facebook page (and other social networks) ===
 +
 
 +
BRL-CAD got it's logo changed, and it's website is undergoing a change. So this re-branding of BRL-CAD also requires a good, well designed and attractive cover photo for the BRL-CAD's Facebook page or other Social Media Appearances. It should feature a good tagline telling some killer feature of BRL-CAD, BRL-CAD's new logo and/or some illustration/image regarding the feature highlighted in tagline.
 +
 
 +
It should be consistent with the color scheme of our new website design.
 +
 
 +
New website design
 +
*http://cpp-tricks.com/brlcad/
 +
 
 +
&nbsp;
 +
|}
 +
&nbsp;
 +
 
 +
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 +
| style="padding: 20px;" |
 +
===  Design a banner ad for BRL-CAD ===
 +
 
 +
BRL-CAD is one of the oldest open source communities. This community has a good following, so we want to give a chance to everyone so that they can show their support to the community by adding a banner ad in their website. You have to create a banner ad that can be embedded in the website by copy pasting some simple lines of code (basically an iframe).
 +
 
 +
Such a banner ad can also be used in various sections of our own website.
  
BRL-CAD is a suite of more than 400 commands, processing tools, image tools, geometry converters, and more.  MGED also has a command-line with hundreds of commands too.  Help us reorganize one of those command sets.
+
The task requires you to create a CSS3 based animated horizontal and vertical banner add, highlighting some feature of BRL-CAD or making some call to action. This call to action can be joining mailing list, or signing up for community, or link to latest post etc.  
  
This task involves creating a spreadsheet that lists all commands and groups them together into a finite set of categories or labels. This spreadsheet will help us identify places where commands can be consolidated, commands we might want to consider removing, common groupings for documentation, etc. 
+
For Inspiration and tutorial refer
 +
*http://tympanus.net/Tutorials/AnimatedWebBanners/
  
 
&nbsp;
 
&nbsp;
Line 801: Line 720:
 
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 
| style="padding: 20px;" |
 
| style="padding: 20px;" |
 +
=== Creating Motion Typography video for BRL-CAD  ===
 +
 +
BRL-CAD has a lot of great features that can be highlighted. A motion typography video highlighting these features would be a wonderful addition to the front page of website.
  
===  Design a Cover Photo for Facebook (and other social media) ===
+
This task requires you to create a motion typography video that will convince user to give BRL-CAD a try, it could be titled something like "x reasons to choose BRL-CAD" or anything similar (give your creative minds a flight). The video should not be more than 2 minutes.
  
BRL-CAD website and marketing materials are constantly undergoing change.  Effective marketing requires well designed and attractive imagery. Imagery ideally should showcase some feature of BRL-CAD, some highlight, something visually interesting and compelling.
+
For inspiration about what a motion typography, see
 +
*http://vimeo.com/24715531
  
References:
+
&nbsp;
* https://www.facebook.com/brlcad
+
|}
 +
&nbsp;
 +
 
 +
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 +
| style="padding: 20px;" |
 +
=== Create a screen-cast for BRL-CAD  ===
 +
 
 +
Getting started with BRL-CAD is sometimes not so smooth. A screen-cast giving a tour of BRL-CAD's GUI and the steps involved in creating the first model will make it easy for users to get started.
 +
 
 +
For this task you need to install BRL-CAD on your computer. Create a very basic model in it and record your screen as you create the model. It should also give a tour of BRL-CAD's workspace. You can choose model of your choice. Keep something very basic and easy for the first time users.
 +
 
 +
&nbsp;
 +
|}
 +
&nbsp;
 +
 
 +
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 +
| style="padding: 20px;" |
 +
=== Loading Google charts from API  ===
 +
 
 +
A basic wrapper of GCharts has been implemented a while ago : https://bitbucket.org/suryajith/benchmark/src/a27dd8c05d6819a527650e06a63076599d2e0d66/libs/charting.py?at=default With the google charts improving their API system which wasn't around then, see if the code could be optimized so to get the charts the optimal way.
 +
 
 +
Reference:  
 +
*https://developers.google.com/chart/interactive/docs/index
  
 
&nbsp;
 
&nbsp;
Line 815: Line 760:
 
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 
{| style="background-color:#fefefe; border-style: solid; border-width: 4px;" width="100%"
 
| style="padding: 20px;" |
 
| style="padding: 20px;" |
=== Create a video for BRL-CAD ===
+
=== Design a hall of fame for BRL-CAD developers ===
  
Watching someone else use software is incredibly helpful to some. Create a screen-cast video for BRL-CAD that showcases some  feature, goes over steps involved in creating some model, or shows how to accomplish some other task.
+
We love our developers and want to have a special place in it's website to thank and motivate hard working folks behind BRL-CAD. Your task would be to use an image manipulation software such as GIMP or Photoshop and design a hall of fame page for developers. It should have avatars and names of all the developers. For inspiration you can take a look at http://underscores.me/. You are free to experiment and design anyway you want, just make sure that the color scheme and font-scheme is consistent with the new BRL-CAD web design.  
  
You'll need to install BRL-CAD on your computer and use it in the video. Create or import some model and make a recording.
+
Links:
 +
* http://cpp-tricks.com/brlcad/
 +
* http://underscores.me/
  
 
&nbsp;
 
&nbsp;

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)