https://brlcad.org/w/api.php?action=feedcontributions&user=Gauravjeet&feedformat=atomBRL-CAD - User contributions [en]2024-03-28T20:40:43ZUser contributionsMediaWiki 1.32.2https://brlcad.org/w/index.php?title=OGV_on_FreeBSD&diff=9822OGV on FreeBSD2016-08-18T09:01:13Z<p>Gauravjeet: /* Step 2: Build the node module */</p>
<hr />
<div>== Getting Ready ==<br />
<br />
Since Meteor installer doesn't support freeBSD operating system, we need to manually build and compile the meteor source code. Currently, this method is tested on version '''10.2-RELEASE-p18'''<br />
<br />
If possible, use a freshly installed freeBSD system. Any trace of node/npm can create problems while compilation, Most of the problems I faced were because of some old/unsupported version of node and npm.<br />
<br />
== Installing few packages ==<br />
<br />
We need to install some packages in order to start our meteor compilation.<br />
<br />
<code>$ sudo pkg install -y bash git gmake mongodb node npm python</code><br />
<br />
== Installing Meteor ==<br />
<br />
=== Step 1 : Clone the Repository ===<br />
<br />
The first step is to get the meteor source code on your machine. I cloned it in home directory, so it's easy to execute meteor script, using $HOME variable.<br /><br />
<code>$ cd $HOME</code><br /><br /><br />
<code>$ git clone --depth 1 https://github.com/4commerce-technologies-AG/meteor</code><br />
<br />
=== Step 2: Build the node module ===<br />
<br />
Next cd into the cloned directory by<br /><br />
<code>$ cd $HOME/meteor</code> <br /><br /><br />
Execute the build node script in scripts folder <br /><code>$ scripts/build-node-for-dev-bundle.sh</code><br /><br /><br />
Execute the generate bundle script <br /><code> $ scripts/generate-dev-bundle.sh </code><br /><br /><br />
<br />
''The above two scripts execution may take some time depending upon the configuration of the host machine. So have a little patience while executing them ;)''<br />
<br />
=== Step 3: Give meteor it's first try ===<br />
<br />
Now meteor is installed successfully and you can give it first try by<br /><br />
<code> $ $HOME/meteor/meteor --version </code><br />
<br />
''The above-mentioned code of line assumes that your meteor folder is in the home directory''<br />
<br />
== Get OGV ==<br />
Now that meteor is successfully installed, it's time to run OGV on system.<br />
Clone OGV from it's official repository by<br /><br />
<code> git clone https://github.com/BRL-CAD/OGV.git </code><br />
<br /><br /><br />
Go to the OGV app directory <br /><br />
<code> $ cd /path/to/clone/OGV-Meteor/OGV </code><br /><br /><br />
Run meteor using the following command <br /><br />
<code> $ $HOME/meteor/meteor </code><br />
<br />
== Keep OGV running on a server ==<br />
If you are working on a cloud server and want OGV to keep running, even if you close the connection, you can do so by using tmux.<br />
<br /><br /><br />
Install tmux by<br /><br />
<code>$ sudo pkg install tmux </code><br /><br /><br />
Start tmux session by <br /><br />
<code>$ tmux </code><br /> <br /><br />
Run meteor inside tmux session in the usual way.<br />
Get out of the session using <code> Ctrl + b </code> and then press the key '''D''' on keyboard to detach from that session. Now you can safely log out and it won't end the meteor process you started inside tmux session.</div>Gauravjeethttps://brlcad.org/w/index.php?title=OGV_on_FreeBSD&diff=9821OGV on FreeBSD2016-08-18T08:57:36Z<p>Gauravjeet: Created page with "== Getting Ready == Since Meteor installer doesn't support freeBSD operating system, we need to manually build and compile the meteor source code. Currently, this method is t..."</p>
<hr />
<div>== Getting Ready ==<br />
<br />
Since Meteor installer doesn't support freeBSD operating system, we need to manually build and compile the meteor source code. Currently, this method is tested on version '''10.2-RELEASE-p18'''<br />
<br />
If possible, use a freshly installed freeBSD system. Any trace of node/npm can create problems while compilation, Most of the problems I faced were because of some old/unsupported version of node and npm.<br />
<br />
== Installing few packages ==<br />
<br />
We need to install some packages in order to start our meteor compilation.<br />
<br />
<code>$ sudo pkg install -y bash git gmake mongodb node npm python</code><br />
<br />
== Installing Meteor ==<br />
<br />
=== Step 1 : Clone the Repository ===<br />
<br />
The first step is to get the meteor source code on your machine. I cloned it in home directory, so it's easy to execute meteor script, using $HOME variable.<br /><br />
<code>$ cd $HOME</code><br /><br /><br />
<code>$ git clone --depth 1 https://github.com/4commerce-technologies-AG/meteor</code><br />
<br />
=== Step 2: Build the node module ===<br />
<br />
Next cd into the cloned directory by<br /><br />
<code>$ cd $HOME/meteor</code> <br /><br /><br />
#Execute the build node script in scripts folder <br /><code>$ scripts/build-node-for-dev-bundle.sh</code><br /><br /><br />
#Execute the generate bundle script <br /><code> $ scripts/generate-dev-bundle.sh </code><br /><br />
<br />
''The above two scripts execution may take some time depending upon the configuration of the host machine. So have a little patience while executing them ;)''<br />
<br />
=== Step 3: Give meteor it's first try ===<br />
<br />
Now meteor is installed successfully and you can give it first try by<br /><br />
<code> $ $HOME/meteor/meteor --version </code><br />
<br />
''The above-mentioned code of line assumes that your meteor folder is in the home directory''<br />
<br />
== Get OGV ==<br />
Now that meteor is successfully installed, it's time to run OGV on system.<br />
Clone OGV from it's official repository by<br /><br />
<code> git clone https://github.com/BRL-CAD/OGV.git </code><br />
<br /><br /><br />
Go to the OGV app directory <br /><br />
<code> $ cd /path/to/clone/OGV-Meteor/OGV </code><br /><br /><br />
Run meteor using the following command <br /><br />
<code> $ $HOME/meteor/meteor </code><br />
<br />
== Keep OGV running on a server ==<br />
If you are working on a cloud server and want OGV to keep running, even if you close the connection, you can do so by using tmux.<br />
<br /><br /><br />
Install tmux by<br /><br />
<code>$ sudo pkg install tmux </code><br /><br /><br />
Start tmux session by <br /><br />
<code>$ tmux </code><br /> <br /><br />
Run meteor inside tmux session in the usual way.<br />
Get out of the session using <code> Ctrl + b </code> and then press the key '''D''' on keyboard to detach from that session. Now you can safely log out and it won't end the meteor process you started inside tmux session.</div>Gauravjeethttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/2016&diff=9704Google Summer of Code/20162016-05-15T07:02:14Z<p>Gauravjeet: </p>
<hr />
<div>= GSoC 2016 With BRL-CAD =<br />
<br />
'''BRL-CAD was accepted as a [https://summerofcode.withgoogle.com mentoring organization] for the Google Summer of Code!'''<br />
<br />
We accepted '''9''' students that prepared quality proposals and demonstrated commitment, with details below for those students that were successful. As an umbrella org, several students were selected for associated orgs LibreCAD, OpenSCAD, and FreeCAD.<br />
<br />
= Accepted Projects =<br />
<br />
== Automatic Polygonal Mesh Healing ==<br />
* 80-char summary<br />
* Student: [[User:tandoorichick|Rakshika Bagavathy]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:tandoorichick/GSoC2016/Project |Project Plan]]<br />
* [[User:your_wiki_username/GSoC2016/Logs|Development Logs]]<br />
<br />
== BRL-CAD Web Infrastructure Update ==<br />
* Create brand new main website and wiki update<br />
* Student: [[User:Oleksandr_dubenko|Oleksandr Dubenko]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [https://blog.esde.name/project-plan/ Project Plan]<br />
* [https://blog.esde.name/ Development Logs]<br />
<br />
== User Interface for Customizing Models ==<br />
* Create user interface to Customize Model interactively instead of modifying them manually.<br />
* Student: [[User:Amarjeet_Singh_Kapoor|Amarjeet Singh Kapoor]]<br />
* [https://summerofcode.withgoogle.com/projects/#6243883906236416 Abstract]<br />
* [[User: Amarjeet_Singh_Kapoor/GSoC2016/Project |Project Plan]]<br />
* [https://amarjeetkapoor1.wordpress.com/ Development Logs ]<br />
<br />
== GPGPU Support for Boolean Evaluation Used in Ray Tracing ==<br />
* Accelerate Boolean Evauluation using a GPU, if available<br />
* Student: [[User:catchchaos|Param Hanji]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:Catchchaos/GSoC2016/Proposal|Project Plan]]<br />
* [https://catchchaos.wordpress.com/ Development Logs]<br />
<br />
== LibreCAD 3 Scriptable User Interface Creation ==<br />
* Create GUI for operations and allow it to be modified without recompilation<br />
* Student: [[User:Feragon.xi|Florian Roméo]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:Feragon.xi/GSoC2016/Project |Project Plan]]<br />
* [https://gsoc16.feragon.net/ Development Logs]<br />
<br />
== LibreCAD V3 Bezier and FILE I/O==<br />
* Adding support of beziers and DXF output to LibreCAD_3<br />
* Student: [[User:Gaganjyotsingh|Gaganjyot Singh]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[https://goo.gl/1O2zkV Project Plan]]<br />
* [[https://codebasement.wordpress.com Development Logs]]<br />
<br />
== Online Geometry Viewer ==<br />
* Making [https://github.com/BRL-CAD/OGV-meteor OGV] production ready and available to use for a wider majority of people.<br />
<br />
* Student: [[User:Gauravjeet|Gauravjeet Singh]]<br />
* [https://summerofcode.withgoogle.com/projects/#4756339498680320 Abstract]<br />
* [http://gauravjeetsingh.github.io/proposal/ Project Plan]<br />
* [http://gauravjeetsingh.github.io/ Development Logs]<br />
<br />
== Plate Mode NURBS raytracing ==<br />
* Implementing plate mode raytracing for NURBS surfaces<br />
* Student: [[User:bojian_ustc|Bojian Wu]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:bojian_ustc/GSoC2016/Project |Project Plan]]<br />
* [http://bojianwu.github.io Development Logs]<br />
<br />
== The FreeCAD Plugin Installer ==<br />
* The main idea is to implement a plugin manager for FreeCAD that will be used to install/remove/update plugins and other unofficial workbenches or modules and macros.<br />
* Student: [[User:mandeeps708|Mandeep Singh]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:Mandeeps708/gsoc_proposal |Project Plan]]<br />
* [http://mandeep7.wordpress.com Development Logs]</div>Gauravjeethttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/2016&diff=9695Google Summer of Code/20162016-05-13T07:12:10Z<p>Gauravjeet: </p>
<hr />
<div>= GSoC 2016 With BRL-CAD =<br />
<br />
'''BRL-CAD was accepted as a [https://summerofcode.withgoogle.com mentoring organization] for the Google Summer of Code!'''<br />
<br />
We accepted '''9''' students that prepared quality proposals and demonstrated commitment, with details below for those students that were successful. As an umbrella org, several students were selected for associated orgs LibreCAD, OpenSCAD, and FreeCAD.<br />
<br />
= Accepted Projects =<br />
<br />
== Automatic Polygonal Mesh Healing ==<br />
* 80-char summary<br />
* Student: [[User:tandoorichick|Rakshika Bagavathy]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:tandoorichick/GSoC2016/Project |Project Plan]]<br />
* [[User:your_wiki_username/GSoC2016/Logs|Development Logs]]<br />
<br />
== BRL-CAD Web Infrastructure Update ==<br />
* Create brand new main website and wiki update<br />
* Student: [[User:Oleksandr_dubenko|Oleksandr Dubenko]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [https://blog.esde.name/project-plan/ Project Plan]<br />
* [https://blog.esde.name/ Development Logs]<br />
<br />
== User Interface for Customizing Models ==<br />
* Create user interface to Customize Model interactively instead of modifying them manually.<br />
* Student: [[User:Amarjeet_Singh_Kapoor|Amarjeet Singh Kapoor]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User: Amarjeet_Singh_Kapoor/GSoC2016/Project |Project Plan]]<br />
* [https://amarjeetkapoor1.wordpress.com/ Development Logs ]<br />
<br />
== GPGPU Support for Boolean Evaluation Used in Ray Tracing ==<br />
* Accelerate Boolean Evauluation using a GPU, if available<br />
* Student: [[User:catchchaos|Param Hanji]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:Catchchaos/GSoC2016/Proposal|Project Plan]]<br />
* [https://catchchaos.wordpress.com/ Development Logs]<br />
<br />
== LibreCAD 3 Scriptable User Interface Creation ==<br />
* Create GUI for operations and allow it to be modified without recompilation<br />
* Student: [[User:Feragon.xi|Florian Roméo]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:Feragon.xi/GSoC2016/Project |Project Plan]]<br />
* [[User:Feragon.xi/GSoC2016/Logs|Development Logs]]<br />
<br />
== LibreCAD V3 Bezier and FILE I/O==<br />
* Adding support of beziers and DXF output to LibreCAD_3<br />
* Student: [[http://gaganjyot.com Gaganjyot Singh]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[https://goo.gl/1O2zkV Project Plan]]<br />
* [[http://gaganjyot.com/blog/ Development Logs]]<br />
<br />
== Online Geometry Viewer ==<br />
* Making OGV production ready and available to use for a wider majority of people.<br />
<br />
* Student: [[User:Gauravjeet|Gauravjeet Singh]]<br />
* [https://summerofcode.withgoogle.com/projects/#4756339498680320 Abstract]<br />
* [http://gauravjeetsingh.github.io/proposal/ Project Plan]<br />
* [http://gauravjeetsingh.github.io/ Development Logs]<br />
<br />
== Plate Mode NURBS raytracing ==<br />
* Implementing plate mode raytracing for NURBS surfaces<br />
* Student: [[User:bojian_ustc|Bojian Wu]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:bojian_ustc/GSoC2016/Project |Project Plan]]<br />
* [http://bojianwu.github.io Development Logs]<br />
<br />
== The FreeCAD Plugin Installer ==<br />
* The main idea is to implement a plugin manager for FreeCAD that will be used to install/remove/update plugins and other unofficial workbenches or modules and macros.<br />
* Student: [[User:mandeeps708|Mandeep Singh]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:Mandeeps708/gsoc_proposal |Project Plan]]<br />
* [http://mandeep7.wordpress.com Development Logs]</div>Gauravjeethttps://brlcad.org/w/index.php?title=Google_Summer_of_Code/2016&diff=9654Google Summer of Code/20162016-05-05T15:08:14Z<p>Gauravjeet: /* Online Geometry Viewer */</p>
<hr />
<div>= GSoC 2016 With BRL-CAD =<br />
<br />
'''BRL-CAD was accepted as a [https://summerofcode.withgoogle.com mentoring organization] for the Google Summer of Code!'''<br />
<br />
We accepted '''9''' students that prepared quality proposals and demonstrated commitment, with details below for those students that were successful. As an umbrella org, several students were selected for associated orgs LibreCAD, OpenSCAD, and FreeCAD.<br />
<br />
= Accepted Projects =<br />
<br />
== Automatic Polygonal Mesh Healing ==<br />
* 80-char summary<br />
* Student: [[User:your_wiki_username|Your Name Here]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:your_wiki_username/GSoC2016/Project |Project Plan]]<br />
* [[User:your_wiki_username/GSoC2016/Logs|Development Logs]]<br />
<br />
== BRL-CAD Web Infrastructure Update ==<br />
* Create brand new main website and wiki update<br />
* Student: [[User:Oleksandr_dubenko|Oleksandr Dubenko]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [https://blog.esde.name/project-plan/ Project Plan]<br />
* [https://blog.esde.name/ Development Logs]<br />
<br />
== Form based script parameterization (needs better title) ==<br />
* This project intends to define user interface to modify the parameters interactively instead of modifying them manually.<br />
* Student: [[User:Amarjeet_Singh_Kapoor|Amarjeet Singh Kapoor]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User: Amarjeet_Singh_Kapoor/GSoC2016/Project |Project Plan]]<br />
* [[User:your_wiki_username/GSoC2016/Logs|Development Logs]]<br />
<br />
== GPGPU Support for Boolean Evaluation Used in Ray Tracing ==<br />
* Accelerate Boolean Evauluation using a GPU, if available<br />
* Student: [[User:catchchaos|Param Hanji]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:Catchchaos/GSoC2016/Proposal|Project Plan]]<br />
* [[User:your_wiki_username/GSoC2016/Logs|Development Logs]]<br />
<br />
== LibreCAD 3 UI (needs better title) ==<br />
* 80-char summary<br />
* Student: [[User:your_wiki_username|Your Name Here]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:your_wiki_username/GSoC2016/Project |Project Plan]]<br />
* [[User:your_wiki_username/GSoC2016/Logs|Development Logs]]<br />
<br />
== LibreCAD V3 Evolvement++ (needs better title) ==<br />
* 80-char summary<br />
* Student: [[User:your_wiki_username|Your Name Here]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:your_wiki_username/GSoC2016/Project |Project Plan]]<br />
* [[User:your_wiki_username/GSoC2016/Logs|Development Logs]]<br />
<br />
== Online Geometry Viewer ==<br />
* Making OGV production ready and available to use for a wider majority of people.<br />
<br />
* Student: [[User:Gauravjeet|Gauravjeet Singh]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:Gauravjeet/OGV_Proposal |Project Plan]]<br />
* [http://gauravjeetsingh.github.io/ Development Logs]<br />
<br />
== Plate Mode NURBS raytracing ==<br />
* Implementing plate mode raytracing for NURBS surfaces<br />
* Student: [[User:bojian_ustc|Bojian Wu]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:bojian_ustc/GSoC2016/Project |Project Plan]]<br />
* [http://bojianwu.github.io Development Logs]<br />
<br />
== The FreeCAD Plugin Installer ==<br />
* The main idea is to implement a plugin manager for FreeCAD that will be used to install/remove/update plugins and other unofficial workbenches or modules and macros.<br />
* Student: [[User:mandeeps708|Mandeep Singh]]<br />
* [https://summerofcode.withgoogle.com/dashboard/project/5901122497675264/overview/ Abstract]<br />
* [[User:Mandeeps708/gsoc_proposal |Project Plan]]<br />
* [http://mandeep7.wordpress.com Development Logs]</div>Gauravjeethttps://brlcad.org/w/index.php?title=User:Gauravjeet&diff=9653User:Gauravjeet2016-05-05T15:06:13Z<p>Gauravjeet: Created page with "= Personal Information = * Name: '''Gauravjeet Singh''' * IRC nickname: '''gjeet''' * GitHub profile: '''[https://github.com/Gauravjeetsingh GauravjeetSingh]''' * Blog address..."</p>
<hr />
<div>= Personal Information =<br />
* Name: '''Gauravjeet Singh'''<br />
* IRC nickname: '''gjeet'''<br />
* GitHub profile: '''[https://github.com/Gauravjeetsingh GauravjeetSingh]'''<br />
* Blog address: '''http://gauravjeetsingh.github.io'''</div>Gauravjeethttps://brlcad.org/w/index.php?title=User_talk:Mandeeps708&diff=9605User talk:Mandeeps7082016-05-01T17:28:56Z<p>Gauravjeet: /* Hello Mandeep */</p>
<hr />
<div>Welcome,<br />
<br />
I am Mandeep Singh from India. I am GSoC 2016 participant for FreeCAD community.<br />
<br />
== Hello Mandeep ==<br />
<br />
Hello mandeep, How are you !<br />
Glad to see you here</div>Gauravjeethttps://brlcad.org/w/index.php?title=User_talk:Mandeeps708&diff=9604User talk:Mandeeps7082016-05-01T17:27:59Z<p>Gauravjeet: /* Hello Mandeep */ new section</p>
<hr />
<div>Welcome,<br />
<br />
I am Mandeep Singh from India. I am GSoC 2016 participant for FreeCAD community.<br />
<br />
== Hello Mandeep ==<br />
<br />
Hello mandeep, How are you !<br />
Good to see you here</div>Gauravjeethttps://brlcad.org/w/index.php?title=User:Gauravjeet/OGV_Proposal&diff=9589User:Gauravjeet/OGV Proposal2016-03-25T18:51:23Z<p>Gauravjeet: </p>
<hr />
<div>=Online Geometry Viewer Project Proposal=<br />
==Personal Information==<br />
<br />
'''Name:''' Gauravjeet Singh<br />
<br />
'''Email Address:''' gaurav.ishwerdas@gmail.com <br />
<br />
'''IRC Username:''' gjeet<br />
<br />
===Brief Background Info===<br />
I study in 3rd year B.Tech (Computer Science and Engineering) at Guru Nanak Dev Engineering College, Ludhiana (India). I was welcomed in this community in late 2012 via Google Code In (GCI).<br />
I was a GCI 2012 student and then acted as a GCI mentor of BRL-CAD for<br />
next two consecutive years (2013 & 2014).<br />
<br />
I have been interested in 3D graphics from a long time. In early 2013, after finishing up with GCI as a student, I started looking for opportunities to work with BRL-CAD. And I ended up taking a very small part of BRL-CAD functionality on the web, using a simple shell script and CGI. <br />
Here's the Github repo of that app: https://github.com/GreatDevelopers/wBRLCAD/tree/master/general/tableModel<br />
<br />
Later that same year(2013), I came to know about a GSoC project called Online Geometry Viewer. I have been an active listener about OGV discussions since then.<br />
<br />
Also, I have been contributing to various Meteor projects in the past few months. These include <br />
* Lord Byron: A real-time text editor that checks for grammar using Natural Language Processing.<br />
* Blocks: Application for making presentations and static websites<br />
<br />
My experience in meteor and interest in 3D graphics makes OGV a perfect project for me. <br />
<br />
<br />
==Project Information==<br />
<br />
===Brief Summary===<br />
OGV has the ambition to become something of an Instagram for 3D models. It includes features like profiles, likes, comments, followers. But the code is a lot buggy and unstable.<br />
<br />
'''What has been done'''<br />
As previously stated Online Geometry Viewer started as a GSoC project in 2013 by a student named Harmanpreet Singh to show BRL-CAD modeling capabilities on the web. It was initially a vanilla PHP + three-js project. This project was continued by Inderpreet Singh in 2014 and was converted to Meteor from vanilla PHP in order to get a robust backend.<br />
Next year in 2015 two Students Deepak Sharma and Shubham Chauhan continued the meteor project.<br />
<br />
'''What I will do'''<br />
One of the major motives of my GSoC would be to improve the existing code. To complete the things that are almost complete. Also, the new features I am adding aren't completely new, they are an extension of some existing feature of OGV. By the end of GSoC, I want OGV to be '''production ready''' and available to use for a wider majority of people.<br />
<br />
I am mostly concentrating on the '''efficiency''' and '''control over the model viewer'''. For now, we can only view the complete model. We have no control over what parts of a model to show/hide. This includes giving different color/material separately to different parts of a model instead of the complete model. There are much more such things that I would accomplish during my GSoC tenure. Things I will do in GSoC are listed as following:<br />
<br />
Things that I'll improve:<br />
* Search (for models, users and even parts inside model)<br />
* Database schema (Adding schema to the collections)<br />
* Increasing speed and efficiency in handling Obj files (merging multiple Obj files and removing duplicates)<br />
* Overall User Experience and User Interface<br />
* Removing redundancy and unused code<br />
<br />
Things that I'll add:<br />
* Show/hide parts of model (also color them separately)<br />
* Adding push notifications for like, comment, share<br />
* Easy Deployment procedure<br />
* Adding view restrictions on uploaded models<br />
* Enabling users to create Groups/lists of followers<br />
<br />
==Detailed Project Description==<br />
<br />
===Code Cleanup===<br />
* '''Github branches and PR's''': There are a lot of branches and PR's pending, my task would be to merge all the code and get the desired stable code in the master branch. <br />
<br />
* '''Current Code''': Changes in the code includes adapting to more appropriate variable names, removing redundant code.<br />
For example, there exists redundant code in file ''OGV/client/views/model_viewer.js'' at line no 220.<br />
The package ''ishwerdas:ogv-threejs'' is not updated since it is created by Inderpreet Singh in 2014.<br />
There are many such instances in the code that needs to be fixed.<br />
<br />
===Robust and secure database by using Schema===<br />
We are using MongoDB in OGV. It is a schema-less database. But however, it is generally a good practice to define a schema that validates the content of the collection. If we don't use schema, there comes a high chance of adding wrong values in the database. That's the reason meteor officially supports and recommends using schema.<br />
http://guide.meteor.com/collections.html#schemas<br />
To add schema to meteor collections, we may use package<br />
aldeed:simple-schema<br />
For instance, we have a collection in OGV called "Ogvsettings". <br />
settings.schema = new simpleSchema({ <br />
gobjPath: {type: string} });<br />
If we apply the above schema to collection Ogvsettings, it will make sure we get a string value in the "gobjPath" field of the collection. Thus, '''making our application more robust and secure.'''<br />
<br />
===Efficiency in handling Obj files===<br />
OGV is a bit slow for now. It can't handle big models, one of the main reasons is the number of HTTP requests for each obj file. Thus, OGV can be boosted by doing following things:<br />
* '''Removing duplicates''': When a .g file is converted into obj, each converted obj is copied to another location. Thus, there exists a duplicate file for each obj file. Thus occupying unnecessary storage to the server. Obj files are created at ''OGV/.meteor/local/cfs/files/modelFiles'' during conversion, which aren't required while viewing the model. Thus, they occupy extra space. I will write the code that removes these files after a certain amount of time automatically so that there is no wastage of server space.<br />
* '''Merging all OBJ files into one''': On model rendering page, multiple requests are made(~300 for complex objects) thus slowing down OGV. Therefore merging obj files will reduce HTTP requests by a big number. <br />
[[File: details.png]]<br />
* '''Group/Ungroup merged Obj file''': User should get an option to group/ungroup the merged obj file. As I will load only one obj file for the sake of speed but I don't want the user to lose control over the model. Therefore, the user will ungroup to load each part of model separately. More on this is explained in below section Control over the model. <br />
<br />
===Control over the model===<br />
* '''Show/hide parts of model''': While working on a 3D model, the user always finds a need to look into a specific part of a model instead of the complete model. Because of this, I am adding an option to show/hide parts of a model. Once the model is ungrouped, we can show/hide any part of a model. '''Also we can change the names of the objects, by double clicking on the obj name in list.''' Instead of obj file names we can define our own names for each part of object. These names will then be seen when hovered with mouse over the part of model<br />
<br />
[[File: show_hide.png| 900px]] <br />
<br />
* '''Coloring parts of model''': Once the model is ungrouped, we get a set of different parts that can be colored in a separate color or a material texture. <br />
<br />
[[File: colored_parts.png| 900px]]<br />
<br />
===Search===<br />
* '''Searching parts of Model''': Complex models have a large number of parts, so it isn't feasible to go through the list manually to find a specific part in order to perform an operation on it. Thus there comes the need of searching the part of the model. <br />
<br />
<br />
* '''Searching users and models''': OGV already has this search. But it isn't much functional. We can't go to the desired model from the search results. Also, the existing search uses simple string comparison instead of any search algorithm. I would like to use phonetic search and auto-complete search algorithm for an enhanced search experience. Following meteor package can help us achieve autocorrect, phonetic search experience.<br />
art1sec8:fuse<br />
<br />
[[File: empty_search.png| 900px]]<br />
<br />
When searched, it shows both users and models, at the same time.<br />
[[File: search_ga.png|900px]]<br />
<br />
* '''Advanced Search''': With this we can search for models using certain filters. Filters include filter by the owner of the model, category of a model<br />
<br />
[[File: advanced_search.png| 900px]]<br />
<br />
===Notifications===<br />
* '''Better notification UI''': The current notification style cover the entire top bar, and hides the menu, thus the user can not go anywhere until he/she closes the notification. In OGV, there is a mixture of meteor sAlert notifications and simple javascript Alert. Simple javascript alerts can't be styled much, So I would transform all the alerts to meteor sAlert. Sometimes when we follow another user, we get two sAlerts. This inconsistent behaviour of notifications needs to be fixed.<br />
* '''Adding notification panel''': A separate panel that will record all the notifications and can show the history whenever a user needs.<br />
*'''Push notifications''': Every time a user likes/comments/shares your uploaded model, you will get a push notification in the notification panel and also in the mail. Notification in the mail is configurable. You can switch it off if you don't want it.<br />
[[File: notifications.png | 900px]]<br />
<br />
===Customized Access to models===<br />
* Private models: Only user itself can see the privately uploaded models. These doesn't appear in the news feed.<br />
* Groups/lists: Allowing the user to classify the followers into groups or lists. And then share the model only with the chosen groups/lists. <br />
* Only followers: Only users who follow can see the uploaded model<br />
* Public models: Anyone can see the uploaded model.<br />
<br />
===UI/UX improvements in model===<br />
* '''Progress bar for uploading''': When user uploads a model, the progress bar will come as shown in figure below. CollectionFS comes with a template for progress bar<br />
{{> FS.UploadProgressBar}}<br />
<br />
[[File: uploading.png| 900px]]<br />
* '''Progress bar for conversion''': In current OGV code, the conversion percentage is already being calculated in file ''OGV/server/cfs_uploader.js (variable name: ConvertPercentage).'' I am going to use that percentage variable with a javascript function, that animates the button.<br />
<br />
[[File: conversion.png| 900px]]<br />
<br />
* '''Thumbnail Generation''' : For now, we have to manually upload an image file to be used as a thumbnail of the model. Automatic thumbnail generation will snapshot the rendered view of a model, and use that image as a thumbnail.<br />
The suggested technology for this is phantomJs. But I was successful in creating a screenshot with simple javascript from the console. Also doing it this way seems a right approach to me.<br />
window.open( renderer.domElement.toDataURL( 'image/png' ), 'screenshot' );<br />
<br />
This simple javascript line when executed from the console, will open the screenshot in a new tab.<br />
<br />
* ''' Improvements in social elements''': Social elements like love and comment needs some UI refreshment. Also, another social element of sharing someone else's model on your profile is going to be a part of this task.<br />
<br />
* '''Improved embedded view''': Right now the embedded view is cluttered, I have already fixed this with PR: https://github.com/BRL-CAD/OGV-meteor/pull/34 But now it only shows the model, and social elements like count of total love and comment are hidden. The improved view will show the social elements on mouse hover in embedded view.<br />
<br />
===Admin Panel===<br />
* '''Getting rid of hard coded superuser''': Now when we install OGV, a super user ''admin@example.com'' is already in a database. The username and password of this user are written into the code itself. ''(in file OGV/server/accounts.js)'' Instead of this hard coded user, a more righteous approach would be to enable the admin to create a super user when a fresh install of OGV is done. The way we do during a Wordpress installation.<br />
<br />
* '''Improved Admin panel''': Currently in OGV, the admin panel contain settings like SMTP URL, mged path, g-obj path. There aren't any settings related to other users and OGV. A super user should have settings to <br />
**Enable/Disable private model uploads<br />
**Enable/Disable user registrations<br />
**View statistics of total model uploads by each user<br />
<br />
* Enabling guest users to upload the model without signing up.<br />
<br />
=== Deployment===<br />
* Deploying on a freeBSD system<br />
* Establishing a mechanism that automatically updates the code on server when a new commit is pushed in master branch (gruntjs)<br />
* During the course of GSoC, every friday would be a deployment Friday(not of the master branch, but of the gsoc branch, so that it can be regularly tested by other members of the community).<br />
<br />
<br />
==Milestones==<br />
* Community Bonding Period<br />
** Discuss on blaze to react conversions<br />
** Making Repository ready for deployment<br />
<br />
<br />
* '''WEEK 1 (23rd May)'''<br />
Code Cleanup (Removing redundant/unused code) (23rd - 29th May)<br />
<br />
* '''WEEK 2 (30th May)'''<br />
Deployment (Deploying master branch on freeBSD and also making scripts for automatic deployment)<br />
<br />
* '''WEEK 3 (6th June)'''<br />
Robust database using aldeed:schema<br />
<br />
* '''WEEK 4 (13th June)'''<br />
**Improving notifications<br />
**Push notifications<br />
**notifications panel<br />
**adding share functionality <br />
<br />
* '''WEEK 5 (20th June)'''<br />
**Improving user and model search using art1sec8:fuse<br />
**Improving UI for social elements<br />
<br />
* '''WEEK 6 (27th June)'''<br />
**Thumbnail Generation<br />
**Code cleanup for mid term evaluation<br />
<br />
MID-TERM EVALUATION<br />
<br />
* '''WEEK 7 (4th July)'''<br />
**Merging Obj files using threejs geometry and objExporter<br />
**Removing duplicate obj files.<br />
<br />
* '''WEEK 8 (11th July)''' <br />
**Search inside models<br />
**show/hide parts<br />
<br />
* '''WEEK 9 (18th July)'''<br />
**Giving different color/material(image) to different parts<br />
**Progress bars (upload and conversion)<br />
<br />
* '''WEEK 10 (25th July)'''<br />
**Creating groups/lists of followers<br />
**Restricting access to model viewing (public/private models)<br />
<br />
* '''WEEK 11 (1st August)'''<br />
**admin panel<br />
<br />
* '''WEEK 12 (8th Aug)'''<br />
**Minor UI/UX improvements<br />
<br />
* '''WEEK 13 (15th Aug)'''<br />
**Code Cleanup<br />
**Testing<br />
**Final Deployment<br />
<br />
FINAL EVALUATION<br />
<br />
==My Preparation==<br />
* I have been studying about the meteor, specifically for OGV.<br />
* I have also gained some experience mged commands and using BRL-CAD.<br />
* I have read and understand how g to obj converts.<br />
* I have already sent a PRs regarding embedded view of models and other things in OGV.<br />
* I have spent great deal of time in reading the roadmaps and inner workings of meteor, so that we code with future in our mind.<br />
<br />
<br />
==Why BRL-CAD?==<br />
* I have been a part of this community for about 4 years now.<br />
* I feel like home at this community<br />
* When it came to GSoC I really didn't have to choose, I knew I would go with BRL-CAD.<br />
<br />
==Why Me?==<br />
* I have a rich community experience with BRL-CAD.<br />
* I have sufficient meteor experience. I have been contributing to a number of meteor projects.<br />
* I am following OGV, from its first iteration in 2013 till now.<br />
* I have been a participant of GCI 2012 and mentor in GCI 2013, 2014. And I tried to be helpful where I can like in BRL-CAD website.<br />
* I have interested in bringing BRL-CAD to web since 2013. Link to repository: https://github.com/GreatDevelopers/wBRLCAD/tree/master/general/tableModel<br />
<br />
==References==<br />
* http://guide.meteor.com/collections.html#schemas<br />
* https://www.discovermeteor.com/blog/blaze-react-meteor/<br />
* Fuse js: http://kiro.me/projects/fuse.html<br />
* Grunt js: http://gruntjs.com/</div>Gauravjeethttps://brlcad.org/w/index.php?title=User:Gauravjeet/OGV_Proposal&diff=9588User:Gauravjeet/OGV Proposal2016-03-25T15:53:05Z<p>Gauravjeet: Created page with "=Online Geometry Viewer Project Proposal= ==Personal Information== '''Name:''' Gauravjeet Singh '''Email Address:''' gaurav.ishwerdas@gmail.com '''IRC Username:''' gjeet ..."</p>
<hr />
<div>=Online Geometry Viewer Project Proposal=<br />
==Personal Information==<br />
<br />
'''Name:''' Gauravjeet Singh<br />
<br />
'''Email Address:''' gaurav.ishwerdas@gmail.com <br />
<br />
'''IRC Username:''' gjeet<br />
<br />
===Background Information===<br />
I study in 3rd year B.Tech (Computer Science and Engineering) at Guru Nanak Dev Engineering College, Ludhiana (India). I was welcomed in this community in late 2012 via Google Code In (GCI).<br />
I was a GCI 2012 student and then acted as a GCI mentor of BRL-CAD for<br />
next two consecutive years (2013 & 2014).<br />
<br />
I have been interested in 3D graphics from a long time. And when I came to know that 3D graphics can be created with a free and open source software (BRL-CAD), I started taking part in its community activities.<br />
<br />
In early 2013, after finishing up with GCI as a student, I started looking for opportunities to work with BRL-CAD. And I ended up taking a very small part of BRL-CAD functionality on the web, using a simple shell script and CGI. <br />
Here's the Github repo of that app: https://github.com/GreatDevelopers/wBRLCAD/tree/master/general/tableModel<br />
<br />
Later that same year(2013), I came to know about a GSoC project called Online Geometry Viewer. It was exactly what I wanted to achieve with my simple app.<br />
<br />
I have been an active listener about OGV discussions since then.<br />
<br />
Also, I have been contributing to various Meteor projects in the past few months. These include <br />
* Lord Byron: A real-time text editor that checks for grammar using Natural Language Processing.<br />
* Blocks: Application for making presentations and static websites<br />
My experience in meteor and interest in 3D graphics makes OGV a perfect project for me. <br />
<br />
In 2014 & 2015, the same project continued as GSoC project. This Year, I have the skills and eligibility to participate in GSoC and I would like to choose OGV as my project.<br />
<br />
==Project Information==<br />
<br />
===Brief Summary===<br />
OGV has the ambition to become something of an Instagram for 3D models. It includes features like profiles, likes, comments, followers. But the code is a lot buggy and unstable.<br />
<br />
'''What has been done'''<br />
As previously stated Online Geometry Viewer started as a GSoC project in 2013 by a student named Harmanpreet Singh to show BRL-CAD modeling capabilities on the web. It was initially a vanilla PHP + three-js project. This project was continued by Inderpreet Singh in 2014 and was converted to Meteor from vanilla PHP in order to get a robust backend.<br />
Next year in 2015 two Students Deepak Sharma and Shubham Chauhan continued the meteor project.<br />
<br />
'''What I will do'''<br />
One of the major motives of my GSoC would be to improve the existing code. To complete the things that are almost complete. Also, the new features I am adding aren't completely new, they are an extension of some existing feature of OGV. By the end of GSoC, I want OGV to be '''production ready''' and available to use for a wider majority of people.<br />
<br />
I am mostly concentrating on the '''efficiency''' and '''control over the model viewer'''. For now, we can only view the complete model. We have no control over what parts of a model to show/hide. This includes giving different color/material separately to different parts of a model instead of the complete model. There are much more such things that I would accomplish during my GSoC tenure. Things I will do in GSoC are listed as following:<br />
<br />
Things that I'll improve:<br />
* Search (for models, users and even parts inside model)<br />
* Database schema (Adding schema to the collections)<br />
* Increasing speed and efficiency in handling Obj files (merging multiple Obj files and removing duplicates)<br />
* Overall User Experience and User Interface<br />
* Removing redundancy and unused code<br />
<br />
Things that I'll add:<br />
* Show/hide parts of model (also color them separately)<br />
* Adding push notifications for like, comment, share<br />
* Easy Deployment procedure<br />
* Adding view restrictions on uploaded models<br />
* Enabling users to create Groups/lists of followers<br />
<br />
==Detailed Project Description==<br />
<br />
===Code Cleanup===<br />
* '''Github branches and PR's''': There are a lot of branches and PR's pending, my task would be to merge all the code and get the desired stable code in the master branch. <br />
<br />
* '''Current Code''': Changes in the code includes adapting to more appropriate variable names, removing redundant code.<br />
For example, there exists redundant code in file ''OGV/client/views/model_viewer.js'' at line no 220.<br />
The package ''ishwerdas:ogv-threejs'' is not updated since it is created by Inderpreet Singh in 2014.<br />
There are many such instances in the code that needs to be fixed.<br />
<br />
===Robust and secure database by using Schema===<br />
We are using MongoDB in OGV. It is a schema-less database. But however, it is generally a good practice to define a schema that validates the content of the collection. If we don't use schema, there comes a high chance of adding wrong values in the database. That's the reason meteor officially supports and recommends using schema.<br />
http://guide.meteor.com/collections.html#schemas<br />
To add schema to meteor collections, we may use package<br />
aldeed:simple-schema<br />
For instance, we have a collection in OGV called "Ogvsettings". <br />
settings.schema = new simpleSchema({ <br />
gobjPath: {type: string} });<br />
If we apply the above schema to collection Ogvsettings, it will make sure we get a string value in the "gobjPath" field of the collection. Thus, '''making our application more robust and secure.'''<br />
<br />
===Efficiency in handling Obj files===<br />
OGV is a bit slow for now. It can't handle big models, one of the main reasons is the number of HTTP requests for each obj file. Thus, OGV can be boosted by doing following things:<br />
* '''Removing duplicates''': When a .g file is converted into obj, each converted obj is copied to another location. Thus, there exists a duplicate file for each obj file. Thus occupying unnecessary storage to the server. Obj files are created at ''OGV/.meteor/local/cfs/files/modelFiles'' during conversion, which aren't required while viewing the model. Thus, they occupy extra space. I will write the code that removes these files after a certain amount of time automatically so that there is no wastage of server space.<br />
* '''Merging all OBJ files into one''': On model rendering page, multiple requests are made(~300 for complex objects) thus slowing down OGV. Therefore merging obj files will reduce HTTP requests by a big number. <br />
[[File: details.png]]<br />
* '''Group/Ungroup merged Obj file''': User should get an option to group/ungroup the merged obj file. As I will load only one obj file for the sake of speed but I don't want the user to lose control over the model. Therefore, the user will ungroup to load each part of model separately. More on this is explained in below section Control over the model. <br />
<br />
===Control over the model===<br />
* '''Show/hide parts of model''': While working on a 3D model, the user always finds a need to look into a specific part of a model instead of the complete model. Because of this, I am adding an option to show/hide parts of a model. Once the model is ungrouped, we can show/hide any part of a model.<br />
<br />
[[File: show_hide.png| 900px]] <br />
<br />
* '''Coloring parts of model''': Once the model is ungrouped, we get a set of different parts that can be colored in a separate color or a material texture. <br />
<br />
[[File: colored_parts.png| 900px]]<br />
<br />
===Search===<br />
* '''Searching parts of Model''': Complex models have a large number of parts, so it isn't feasible to go through the list manually to find a specific part in order to perform an operation on it. Thus there comes the need of searching the part of the model. <br />
<br />
<br />
* '''Searching users and models''': OGV already has this search. But it isn't much functional. We can't go to the desired model from the search results. Also, the existing search uses simple string comparison instead of any search algorithm. I would like to use phonetic search and auto-complete search algorithm for an enhanced search experience. Following meteor package can help us achieve autocorrect, phonetic search experience.<br />
art1sec8:fuse<br />
<br />
[[File: empty_search.png| 900px]]<br />
<br />
When searched, it shows both users and models, at the same time.<br />
[[File: search_ga.png|900px]]<br />
<br />
* '''Advanced Search''': With this we can search for models using certain filters. Filters include filter by the owner of the model, category of a model<br />
<br />
[[File: advanced_search.png| 900px]]<br />
<br />
===Notifications===<br />
* '''Better notification UI''': The current notification style cover the entire top bar, and hides the menu, thus the user can not go anywhere until he/she closes the notification. In OGV, there is a mixture of meteor sAlert notifications and simple javascript Alert. Simple javascript alerts can't be styled much, So I would transform all the alerts to meteor sAlert. Sometimes when we follow another user, we get two sAlerts. This inconsistent behaviour of notifications needs to be fixed.<br />
* '''Adding notification panel''': A separate panel that will record all the notifications and can show the history whenever a user needs.<br />
*'''Push notifications''': Every time a user likes/comments/shares your uploaded model, you will get a push notification in the notification panel and also in the mail. Notification in the mail is configurable. You can switch it off if you don't want it.<br />
[[File: notifications.png | 900px]]<br />
<br />
===Customized Access to models===<br />
* Private models: Only user itself can see the privately uploaded models. These doesn't appear in the news feed.<br />
* Groups/lists: Allowing the user to classify the followers into groups or lists. And then share the model only with the chosen groups/lists. <br />
* Only followers: Only users who follow can see the uploaded model<br />
* Public models: Anyone can see the uploaded model.<br />
<br />
===UI/UX improvements in model===<br />
* Progress bar for uploading<br />
[[File: uploading.png| 900px]]<br />
* Progress bar for conversion<br />
[[File: conversion.png| 900px]]<br />
* '''Thumbnail Generation''' : For now, we have to manually upload an image file to be used as a thumbnail of the model. Automatic thumbnail generation will snapshot the rendered view of a model, and use that image as a thumbnail.<br />
The suggested technology for this is phantomJs. But I was successful in creating a screenshot with simple javascript from the console. Also doing it this way seems a right approach to me.<br />
window.open( renderer.domElement.toDataURL( 'image/png' ), 'screenshot' );<br />
<br />
This simple javascript line when executed from the console, will open the screenshot in a new tab.<br />
<br />
* ''' Improvements in social elements''': Social elements like love and comment needs some UI refreshment. Also, another social element of sharing someone else's model on your profile is going to be a part of this task.<br />
<br />
* '''Improved embedded view''': Right now the embedded view is cluttered, I have already fixed this with PR: https://github.com/BRL-CAD/OGV-meteor/pull/34 But now it only shows the model, and social elements like count of total love and comment are hidden. The improved view will show the social elements on mouse hover in embedded view.<br />
<br />
===Admin Panel===<br />
* '''Getting rid of hard coded superuser''': Now when we install OGV, a super user ''admin@example.com'' is already in a database. The username and password of this user are written into the code itself. ''(in file OGV/server/accounts.js)'' Instead of this hard coded user, a more righteous approach would be to enable the admin to create a super user when a fresh install of OGV is done. The way we do during a Wordpress installation.<br />
<br />
* '''Improved Admin panel''': Currently in OGV, the admin panel contain settings like SMTP URL, mged path, g-obj path. There aren't any settings related to other users and OGV. A super user should have settings to <br />
**Enable/Disable private model uploads<br />
**Enable/Disable user registrations<br />
**View statistics of total model uploads by each user<br />
<br />
* Enabling guest users to upload the model without signing up.<br />
<br />
=== Deployment===<br />
* Deploying on a freeBSD system<br />
* Establishing a mechanism that automatically updates the code on server when a new commit is pushed in master branch (gruntjs)<br />
* During the course of GSoC, every friday would be a deployment Friday(not of the master branch, but of the gsoc branch, so that it can be regularly tested by other members of the community).<br />
<br />
<br />
==Milestones==<br />
* Community Bonding Period<br />
** Discuss on blaze to react conversions<br />
** Making Repository ready for deployment<br />
<br />
<br />
* '''WEEK 1 (23rd May)'''<br />
Code Cleanup (Removing redundant/unused code) (23rd - 29th May)<br />
<br />
* '''WEEK 2 (30th May)'''<br />
Deployment (Deploying master branch on freeBSD and also making scripts for automatic deployment)<br />
<br />
* '''WEEK 3 (6th June)'''<br />
Robust database using aldeed:schema<br />
<br />
* '''WEEK 4 (13th June)'''<br />
**Improving notifications<br />
**Push notifications<br />
**notifications panel<br />
**adding share functionality <br />
<br />
* '''WEEK 5 (20th June)'''<br />
**Improving user and model search using art1sec8:fuse<br />
**Improving UI for social elements<br />
<br />
* '''WEEK 6 (27th June)'''<br />
**Thumbnail Generation<br />
**Code cleanup for mid term evaluation<br />
<br />
MID-TERM EVALUATION<br />
<br />
* '''WEEK 7 (4th July)'''<br />
**Merging Obj files using threejs geometry and objExporter<br />
**Removing duplicate obj files.<br />
<br />
* '''WEEK 8 (11th July)''' <br />
**Search inside models<br />
**show/hide parts<br />
<br />
* '''WEEK 9 (18th July)'''<br />
**Giving different color/material(image) to different parts<br />
**Progress bars (upload and conversion)<br />
<br />
* '''WEEK 10 (25th July)'''<br />
**Creating groups/lists of followers<br />
**Restricting access to model viewing (public/private models)<br />
<br />
* '''WEEK 11 (1st August)'''<br />
**admin panel<br />
<br />
* '''WEEK 12 (8th Aug)'''<br />
**Minor UI/UX improvements<br />
<br />
* '''WEEK 13 (15th Aug)'''<br />
**Code Cleanup<br />
**Testing<br />
**Final Deployment<br />
<br />
FINAL EVALUATION<br />
<br />
==My Preparation==<br />
* I have been studying about the meteor, specifically for OGV.<br />
* I have also gained some experience mged commands and using BRL-CAD.<br />
* I have read and understand how g to obj converts.<br />
* I have already sent a PRs regarding embedded view of models and other things in OGV.<br />
* I have spent great deal of time in reading the roadmaps and inner workings of meteor, so that we code with future in our mind.<br />
<br />
<br />
==Why BRL-CAD?==<br />
* I have been a part of this community for about 4 years now.<br />
* I feel like home at this community<br />
* When it came to GSoC I really didn't have to choose, I knew I would go with BRL-CAD.<br />
<br />
==Why Me?==<br />
* I have a rich community experience with BRL-CAD.<br />
* I have sufficient meteor experience. I have been contributing to a number of meteor projects.<br />
* I am following OGV, from its first iteration in 2013 till now.<br />
* I have been a participant of GCI 2012 and mentor in GCI 2013, 2014. And I tried to be helpful where I can like in BRL-CAD website.<br />
* I have interested in bringing BRL-CAD to web since 2013. Link to repository: https://github.com/GreatDevelopers/wBRLCAD/tree/master/general/tableModel<br />
<br />
==References==<br />
* http://guide.meteor.com/collections.html#schemas<br />
* https://www.discovermeteor.com/blog/blaze-react-meteor/<br />
* Fuse js: http://kiro.me/projects/fuse.html<br />
* Grunt js: http://gruntjs.com/</div>Gauravjeethttps://brlcad.org/w/index.php?title=File:Conversion.png&diff=9587File:Conversion.png2016-03-25T15:28:03Z<p>Gauravjeet: </p>
<hr />
<div></div>Gauravjeethttps://brlcad.org/w/index.php?title=File:Uploading.png&diff=9586File:Uploading.png2016-03-25T15:27:34Z<p>Gauravjeet: </p>
<hr />
<div></div>Gauravjeethttps://brlcad.org/w/index.php?title=File:Notifications.png&diff=9585File:Notifications.png2016-03-25T15:24:07Z<p>Gauravjeet: </p>
<hr />
<div></div>Gauravjeethttps://brlcad.org/w/index.php?title=File:Advanced_search.png&diff=9584File:Advanced search.png2016-03-25T15:21:42Z<p>Gauravjeet: </p>
<hr />
<div></div>Gauravjeethttps://brlcad.org/w/index.php?title=File:Search_ga.png&diff=9583File:Search ga.png2016-03-25T15:20:32Z<p>Gauravjeet: </p>
<hr />
<div></div>Gauravjeethttps://brlcad.org/w/index.php?title=File:Empty_search.png&diff=9582File:Empty search.png2016-03-25T15:18:55Z<p>Gauravjeet: </p>
<hr />
<div></div>Gauravjeethttps://brlcad.org/w/index.php?title=File:Colored_parts.png&diff=9581File:Colored parts.png2016-03-25T15:11:23Z<p>Gauravjeet: </p>
<hr />
<div></div>Gauravjeethttps://brlcad.org/w/index.php?title=File:Show_hide.png&diff=9580File:Show hide.png2016-03-25T15:10:28Z<p>Gauravjeet: </p>
<hr />
<div></div>Gauravjeethttps://brlcad.org/w/index.php?title=File:Details.png&diff=9579File:Details.png2016-03-25T14:56:06Z<p>Gauravjeet: </p>
<hr />
<div></div>Gauravjeethttps://brlcad.org/w/index.php?title=Logo&diff=7812Logo2014-12-01T12:17:57Z<p>Gauravjeet: /* Created a page that contains link to all new BRL-CAD logos. */</p>
<hr />
<div>In previous year Google Code In, we had some tasks to redesign our current logo.<br />
<br />
=== High Quality png of BRL-CAD logo ===<br />
This task was done by Sharan. He redesigned our current logo and provided with a high quality png as well as a svg version.<br />
<br />
[http://www.google-melange.com/gci/work/download/google/gci2013/6180749191413760?id=5741031244955648 Download files]<br />
<br />
Link to task: http://www.google-melange.com/gci/task/view/google/gci2013/6180749191413760<br />
<br />
=== CSS only version for web ===<br />
We also had some great CSS versions of the current logo to be used on web. Using CSS version logo reduces load on website. Thus the website with this version will open faster comparatively.<br />
<br />
We had number of tasks regarding that. The list is as following:<br />
<br />
[http://www.google-melange.com/gci/work/download/google/gci2013/6023159862001664?id=5631943370604544 Download Files of task 1]<br />
<br />
Task 1: http://www.google-melange.com/gci/task/view/google/gci2013/6023159862001664<br />
<br />
[http://www.google-melange.com/gci/work/download/google/gci2013/5081237563637760?id=6252742238535680 Download Files of task 2]<br />
<br />
Task 2: http://www.google-melange.com/gci/task/view/google/gci2013/5081237563637760<br />
<br />
=== BRL-CAD logo 3d version ===<br />
The BRL-CAD logo was modelled using BRL-CAD. You can use this version if your design demands using 3d version of logo. The list of such tasks is as following.<br />
<br />
[http://www.google-melange.com/gci/work/download/google/gci2013/5570107921137664?id=5724160613416960 Download files of task 1]<br />
<br />
Task 1: http://www.google-melange.com/gci/task/view/google/gci2013/5570107921137664<br />
<br />
[http://www.google-melange.com/gci/work/download/google/gci2013/6237896147206144?id=5653164804014080 Download files of task 2]<br />
<br />
Task 2: http://www.google-melange.com/gci/task/view/google/gci2013/6237896147206144<br />
<br />
[http://www.google-melange.com/gci/work/download/google/gci2013/5258035597410304?id=5738600293466112 Download .g file of task 3]<br />
<br />
[http://www.google-melange.com/gci/work/download/google/gci2013/5258035597410304?id=5653164804014080 Download .png file of task 3]<br />
<br />
Task 3: http://www.google-melange.com/gci/task/view/google/gci2013/5258035597410304<br />
<br />
[http://www.google-melange.com/gci/work/download/google/gci2013/5765013537030144?id=5733935958982656 Download .g file of task 4]<br />
<br />
[http://www.google-melange.com/gci/work/download/google/gci2013/5765013537030144?id=5750085036015616 Download .png file of task 4]<br />
<br />
Task 4: http://www.google-melange.com/gci/task/view/google/gci2013/5765013537030144</div>Gauravjeethttps://brlcad.org/w/index.php?title=Deuces&diff=7774Deuces2014-11-09T17:05:41Z<p>Gauravjeet: added two new GCI tasks in Outreach & research category</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-trunk" 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 />
<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 extruded sketches (EXTRUDE) ====<br />
|}<br />
&nbsp;<br />
<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 />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Implement a platform independent re-entrant sort function ===<br />
<br />
The classic C library qsort() does not support a context parameter. A work around is to store the context information in a static variable. However, this solution is not thread save and may result in unpredictable behavior.<br />
<br />
There are platform specific sort functions qsort_r() in incompatible versions for BSD and GNU and qsort_s() for MSVC. Your task is to implement a bu_sort() function for BRL-CAD which is platform independent.<br />
<br />
Code:<br />
* src/libbu/sort.c<br />
<br />
The new sort function could look like this:<br />
void bu_sort(genptr_t array, size_t nummemb, size_t sizememb, int (*compare)(const_genptr_t, const_genptr_t, genptr_t), genptr_t context);<br />
|}<br />
&nbsp;<br />
<br />
----<br />
<br />
|}<br />
&nbsp;<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Solve fonts related bug in new wiki theme ===<br />
<br />
BRL-CAD has been working on a new incarnation of the website and has developed a new wiki theme and wordpress theme. Wiki theme uses a font called 'open-sans' from google fonts directory. It's linked via CSS but it does not get loaded (we still see default serif all over the place). So your task will be to debug the CSS code and get Open Sans loaded. <br />
<br />
Links:<br />
*http://beta.brlcad.org/wiki/Main_Page<br />
<br />
&nbsp;<br />
<br />
----<br />
<br />
|}<br />
&nbsp;<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Better placement of icons in wiki theme ===<br />
<br />
BRL-CAD has been working on a new incarnation of the website and has developed a new wiki theme and wordpress theme. Wiki theme is responsive but has a small styling problem. On smaller screens icons near the search bar gets misplaced and unaligned. Your task would be to fix that. Task would include diving into sass file that corresponds to styling of this part of theme (given below) and adjusting spacing between icons to keep them aligned even at smaller screens.<br />
<br />
Links:<br />
*http://beta.brlcad.org/wiki/Main_Page<br />
<br />
&nbsp;<br />
<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 />
=== Write an article "BRL-CAD for dummies" ===<br />
<br />
Although BRL-CAD has extensive documentation, still it needs a short and simple document which is particularly built for dummies.<br />
<br />
This task involves writing a article named '''BRL-CAD for dummies'''. This article should start with the installation process, if there is any existing installation guide for dummies, provide a link to it. The main motive of this article to empower dummy to make his/her first model using BRL-CAD. One thing to be kept in mind while writing this article is that this article is mainly concentrated for dummies. So use simple language to an extent and if you need to mention some technical term, first explain that term.<br />
<br />
The output of this task can be a pdf, html, doc, odt or any other document file that contains this article. Go through the link provided. Use screenshots and images to make it look attractive so that the reader is not bored.<br />
<br />
Reference:<br />
* http://brlcad.org/wiki/Documentation<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 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 />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Fix Image Formatting in BRL-CAD's DocBook Documentation (any ONE large document or 4 smaller documents) ===<br />
<br />
The majority of BRL-CAD's documentation is defined as DocBook files, from which other formats (HTML, PDF, man page, etc.) can be generated. PDF files present a particular challenge, and have some very specific requirements to achieve "good" formatting.<br />
<br />
BRL-CAD's DocBook files need to uniformly use a style of image inclusion that is aware of what "role" the image is supposed to serve. A "basic" image inclusion example looks like this:<br />
<br />
<mediaobject><br />
<imageobject><br />
<imagedata align="center" fileref="../../lessons/en/images/img.png" format="PNG"/><br />
</imageobject><br />
<nowiki><caption></nowiki><br />
<para><br />
Caption goes here.<br />
</para><br />
</caption><br />
</mediaobject><br />
<br />
This task involves switching image inclusions that use the above style to something like the following:<br />
<br />
<mediaobject><br />
<imageobject role="html"><br />
<imagedata align="center" fileref="../../books/en/images/img.png" format="PNG"/><br />
</imageobject><br />
<imageobject role="fo"><br />
<imagedata align="center" fileref="../../books/en/images/img.png" format="PNG"/><br />
</imageobject><br />
<nowiki><caption></nowiki><br />
<para><br />
Caption goes here.<br />
</para><br />
</caption><br />
</mediaobject><br />
<br />
The "role" flag to imageobject provides the opportunity to specify different image formatting options when the output is HTML (role="html") or PDF (role="fo").<br />
<br />
The captions should be preserved as above on mediaobjects that have them, but mediaobjects without a caption should also be converted and there is no need to add a caption in such cases.<br />
<br />
Any patch that makes changes to the DocBook sources should result in a successful "make doc" build test. This won't generate PDF documents, but it will validate the XML files and produce HTML - remember that introducing breakage means the patch won't be accepted.<br />
<br />
Remember, the tasks are simply to do the above conversion for all images in the file or files, not to introduce PDF specific formatting. Formatting fixes will be needed, but they are very much "case by case" and will take both additional time and a working Apache FOP installation, as well as knowledge of how to enable PDF generation. If all image inclusions have been converted successfully and a student is interested in actually fixing the formatting, please discuss it with us on IRC or the mailing list.<br />
<br />
References:<br />
* doc/docbook/books/en/BRL-CAD_Tutorial_Series-VolumeIII.xml<br />
<br />
Code:<br />
* doc/docbook<br />
<br />
|}<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Make a step by step tutorial for creating BRL-CAD model ===<br />
<br />
BRL-CAD is said to have an expert friendly User Interface so new users mostly have a tough time getting around it's UI and making models. So anything link Django poll app tutorial https://docs.djangoproject.com/en/dev/intro/tutorial01/ would be very helpful. <br />
<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 />
=== 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 />
=== Design a T-Shirt for BRL-CAD ===<br />
<br />
This task involves designing a T-Shirt for BRL-CAD. Use your designing skills to design a T-Shirt for BRL-CAD. You can use the current BRL-CAD logo, or you may tweak it. Be creative while designing this T-Shirt. It would be good if the design has some special meaning.<br />
<br />
Logo References<br />
* http://brlcad.org/images/angelov_256.png<br />
* http://brlcad.org/d/node/92<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Design a coffee mug for BRL-CAD ===<br />
<br />
This task involves designing a coffee mug for BRL-CAD. Make it look good, so that one can use it while working on BRL-CAD. Look over some great coffee mug designs before starting to work on this. It would be great if the design on coffee mug has some special meaning.<br />
<br />
Logo References<br />
* http://brlcad.org/images/angelov_256.png<br />
* http://brlcad.org/d/node/92<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Design BRL-CAD sticker ===<br />
<br />
This task involves designing a BRL-CAD sticker. The design should be simple and sleek. The concept of sticker should be clear and also it should be creatively presented. Get inspired from some sticker designs but choose your own imagination while designing the sticker. There is no bound for shape of sticker, it can be rectangular, circular or even irregular. The only thing that matters is that it should look good.<br />
<br />
Logo References<br />
* http://brlcad.org/images/angelov_256.png<br />
* http://brlcad.org/d/node/92<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Design BRL-CAD phone/tablet back cover ===<br />
<br />
This task involves designing a BRL-CAD phone/tablet cover. <br />
While submitting your design, provide the sample phone cover, tablet cover with the design and rendered png or jpg image of the sticker design. Try to have a special meaning of design, and the concept should be creatively illustrated.<br />
<br />
Logo References<br />
* http://brlcad.org/images/angelov_256.png<br />
* http://brlcad.org/d/node/92<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Design a wallpaper set for BRL-CAD ===<br />
<br />
This task involves designing a set of wallpapers for BRL-CAD. The central idea of each wallpaper should represent any feature of BRL-CAD. Try to design a minimum of 5 wallpapers but if you have more than 5 designs than you are welcomed. <br />
<br />
Try to different resolutions of each wallpaper.<br />
<br />
Check the following wallpapers for inspiration.<br />
* http://www.smashingmagazine.com/tag/wallpapers/<br />
<br />
Logo References<br />
* http://brlcad.org/images/angelov_256.png<br />
* http://brlcad.org/d/node/92<br />
<br />
|}<br />
<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create Iron Man Arc Reactor Model in BRL-CAD ===<br />
<br />
This task involves creating Arc Reactor as seen in hollywood movie Iron-Man. You will have to create two versions of the Arc Reactor one glowing and another non glowing. <br />
<br />
Check this model for inspiration<br />
* http://grabcad.com/library/iron-man-arc-reactor-request<br />
<br />
<br />
|}<br />
<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Tweak BRL-CAD logo to wish New Year ===<br />
<br />
You might have heard and praised those google doodles we occasionally see on google.com on special days. This task is all about tweaking BRL-CAD logo to wish New Year. You may have a look at google doodles but don't entirely copy their style. I am sure your creative mind will get something much better.<br />
Make sure this tweak should be tweaked version of current logo and not entirely new logo.<br />
<br />
Tip: Search for some global events occurring in 2015 and design accordingly. Also keep the letters 2,0,1,5 in mind while designing. ;)<br />
<br />
Also output of this task shall be the png file of your work and the raw file but don't upload the raw file(.psd, .xcf or some other) for review of this task. We will ask for it later, when the design is finalized.<br />
<br />
Gallery of all google doodles<br />
* http://www.google.com/doodles<br />
<br />
<br />
|}<br />
<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Tweak BRL-CAD logo to wish Merry Christmas ===<br />
<br />
You might have heard and praised those google doodles we occasionally see on google.com on special days. This task is all about tweaking BRL-CAD logo to wish Christmas. You may have a look at google doodles but don't entirely copy their style. I am sure your creative mind will get something much better.<br />
Make sure the output of this task should be tweaked version of current logo and not entirely new logo.<br />
<br />
Also output of this task shall be the png file of your work and the raw file but don't upload the raw file(.psd, .xcf or some other) for review of this task. We will ask for it later, when the design is finalized.<br />
<br />
Gallery of all google doodles<br />
* http://www.google.com/doodles<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 />
<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 />
----<br />
<br />
== User Interface ==<br />
----<br />
''Tasks related to user experience research or user interface design and interaction''<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 />
=== Design a Cover Photo for Facebook page (and other social networks) ===<br />
<br />
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.<br />
<br />
It should be consistent with the color scheme of our new website design.<br />
<br />
New website design <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 />
<br />
=== Design a banner ad for BRL-CAD ===<br />
<br />
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). <br />
<br />
Such a banner ad can also be used in various sections of our own website. <br />
<br />
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. <br />
<br />
For Inspiration and tutorial refer<br />
*http://tympanus.net/Tutorials/AnimatedWebBanners/<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Creating Motion Typography video for BRL-CAD ===<br />
<br />
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. <br />
<br />
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. <br />
<br />
For inspiration about what a motion typography, see<br />
*http://vimeo.com/24715531<br />
<br />
|}<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Create a screen-cast for BRL-CAD ===<br />
<br />
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. <br />
<br />
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. <br />
<br />
|}<br />
<br />
<br />
&nbsp;<br />
{| style="background-color:#ffffff;" cellpadding="20" cellspacing="0" border="2" width="100%"<br />
|<br />
=== Loading Google charts from API ===<br />
<br />
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.<br />
<br />
Reference: <br />
*https://developers.google.com/chart/interactive/docs/index<br />
<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>Gauravjeet