GSoC/GCI Archive
Google Summer of Code 2013

BRL-CAD

Web Page: http://brlcad.org/wiki/Google_Summer_of_Code/Project_Ideas

Mailing List: https://lists.sourceforge.net/lists/listinfo/brlcad-devel

BRL-CAD Logo

BRL-CAD is a powerful cross-platform open source solid modeling computer-aided design (CAD) system.

BRL-CAD provides solid geometry editing, ray-tracing, geometric analysis, image and signal-processing, performance analysis tools, a robust high-performance geometry engine, and much more. It's more than a million lines of code, 400+ binary applications, dozens of libraries, and has been under development for more than 30 years.

applicants: GET STARTED HERE

The BRL-CAD community is represented and developed by a consortium of individuals in the open source community from academia, government, and private industry.  BRL-CAD's primary development focus areas include:

  • CAD (design),
  • CAM (manufacturing),
  • CAE (engineering),
  • solid modeling (analysis), and
  • computer graphics (visualization).

BRL-CAD's users are primarily composed of individuals in the CAD industry where modeling requirements are fundamentally different from those of content modelers (such as Blender) that are used for animation, gaming, and film purposes.  BRL-CAD's primary competitors are in a separate industry where commercial products like AutoCAD, Solidworks, Pro/Engineer, and CATIA dominate. See our industry diagram for a visual overview of where BRL-CAD fits within the various CAD industries.

Our community vision is to become the best solid modeling system by encouraging worldwide collaboration, improving recognition and awareness, providing effective user-friendly features, and by continuing to work smart to delight our users.

Projects

  • Consolidating and Adding the Image Processing Functions to LIBICV BRL-CAD has a number of image processing tools. Currently all the tools are implemented in a modular fashion where in each tool is accessed as a module. The primitive task of this project is to combine the image processing functionalities of these tools to a library. This task will ensure the reusability of these functionalities by the application programmer through relevant api calls in the code and thus will be useful for building a proper GUI for BRL-CAD and helpful in other new tools/functions to be added to BRL-CAD in future.
  • Implementation of a heart primitive In our world today , we observe that all solid objects are simply combinations of basic ones like cubes,spheres,cones,etc and we frequently have to manipulate objects which have surfaces such as gadgets and devices . With the explosion in ubiquitous technology, Computer-aided design (CAD) software helps us create digital content in adverts and movies as well as visualize some solid objects like perfume bottles and shampoo before they are actually manufactured. In this project, we propose that BRL-CAD, which aspires to be the best CAD software, should incorporate a heart, a symbol of love, into its core functionality as one of its basic solid objects in order to increase its customer base and differentiate itself amongst its competitors. Indeed, this heart structure ( also called a heart primitive ) shall be used by those producing cartoons and designing electronic cards, gifts and presents during celebrations such as birthdays, weddings,family reunions, anniversaries and Valentine's day which deeply appeals to many individuals,families and communities.So during the summer, this heart primitive will be included into the raytrace library as a set of routines with corresponding support added to other parts of the source code.
  • Matrix Pull Routine for performing the opposite of the Matrix Push on Geometry. The pull routine takes a specific node on a CSG tree, walking down to the primitive shapes restoring the geometric transformations(scaling, translation or rotations) at each stage down the CSG tree traversal based on reversing all the geometric transformations that occurred on the primitive shapes located at the leaf. Pull routine also stores the local coordinate systems at each point during the traversal from the primitives up to the given initial node. All transformation matrices visited along the tree will be set to their original transformation matrices. This command will fail if no changes occurred to the primitive shapes at the leaves of the csg tree.
  • New Cross-Platform 3D Display Manager The purpose of this project is to create a new cross-platform 3D display manager. A display manager is the primary means with which BRL-CAD interacts graphically with geometry. The framework used in implementation will be Qt. The project will be structured as an extension to BRL-CAD's libdm library.
  • NURBS Intersection BRL-CAD currently has a routine to compute the intersection curves of two NURBS surfaces, and in general cases it works well, but to get a more robust one, I still need lots of work on it this summer. Lots of tests and verification are needed, and maybe a TDD (Test Driven Development) can be used in this step. To get the SSI working in all cases, no matter what the input is like is very important, otherwise it would be useless. In this summer, if there is enough time, I would like to finish the remaining parts of evaluating NURBS, and finally offer a routine to convert CSG combination objects to evaluated NURBS objects. The work includes partitioning a surface, and building the new NURBS geometry. If there's still some time remaining, I will tried to do more tests and verification to make the implementation better.
  • STEP Libraries STEP is the current standard for exchange of CAD data between different software packages. BRL-CAD makes use of the NIST STEP Class Libraries code to support its step-g converter, but this source code was written before many current C++ standard practices and libraries were finalized. As a consequence, it needs both cleanup and performance enhancements.
  • Web Interface of BRL-CAD This project aims at making a web interface of BRL-CAD, means shifting all features and functionality of desktop software to browser. Although, the scope of this project is much wider, but for current GSoC project, we are implementing it as a basic concept, enabling the user to access BRL-CAD from anywhere through the web. This way, we are extending BRL-CAD’s capability to mobile users without any need for download and installation. Hence, this web interface of BRL-CAD is adding another dimension in the improvement its ease of use.