Editing User:Gabbar1947/GSOC17/Report

From BRL-CAD

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

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 4: Line 4:
 
*Creating a new primitive for annotations
 
*Creating a new primitive for annotations
 
*Rendering the primitives to the wireframe view
 
*Rendering the primitives to the wireframe view
*Support for the screen projection
 
  
 
==='''Creating a new primitive for annotations'''===
 
==='''Creating a new primitive for annotations'''===
Line 13: Line 12:
 
   https://sourceforge.net/p/brlcad/patches/469/#34f1
 
   https://sourceforge.net/p/brlcad/patches/469/#34f1
  
==='''Rendering the primitive on screen'''===
+
*The final struct will be of the annotation_internal that contains:
*The next part was to add support for the visualization of the primitive
+
**The point in the 3D coordinate system that maps to the origin in the 2D annotation coordinate system.
*Input for the primitive also handled through the 'in' command in the patches mentioned below
+
**The curves of the primitive.
 
+
**Some other required parameters and flags.
  https://sourceforge.net/p/brlcad/patches/471/#97f3
+
*Next step would be to define annotations.c
  https://sourceforge.net/p/brlcad/patches/471/#4b72
+
*The annotations.c will comprise of various functions:(these functions basically append the annotations according to the details found in the internal object)
 +
**Annotation_validation function
 +
**Functions for appending the  line with text and corresponding parameters.
 +
**Returning the appended annotation details though an external return object
  
==='''Support for the 3D->2D projection'''===
+
'''Properties'''
  
{|align="right"
+
*Provision for altering the properties of the annotation created through the command line, if time permits. *Otherwise this is something that is to be done once we have a basic frame ready for the annotations. The properties can be changed using the annotation keyword in the command line.
|[[Image:Example_annot.png|thumb|256px|Example annot object created with the in command]]
+
*These properties include(subject to change after discussion) :
|}
+
**Font
 +
**Color
 +
**Line Width
 +
**Text alignment and placement
 +
**Some other parameters
  
*Annotations always remain in the plane of the screen
 
*Modifying the projection matrices for all the display managers was another task
 
*Scaling the annotations was another issue
 
*All of this was handled by the patches mentioned below
 
  
  https://sourceforge.net/p/brlcad/patches/471/#cd2e
+
==='''Representation in the 3D view'''===
  https://sourceforge.net/p/brlcad/patches/471/#acd7
+
 
 +
*The second part of the project is to render the annotation object formed.
 +
*As mentioned before, we aim for view-independent annotations.
 +
*For this to be accomplished we cannot define the annotations in the primitive coordinate system as on rotation or zoom the annotations remains of no use to the viewer.
 +
*coordinates from the primitive -> 3D world coordinates -> 2D plane (e.g. with a perspective) -> 2D screen coordinates[working on this]
 +
*So a new coordinate system needs to be defined for the annotations.
 +
*This coordinate system unlike the other is two dimensional.
 +
*By a new coordinate system we mean the existence of a transformation matrix that maps all points of the 3D system to the 2D one.
 +
*The process is quite similar to calibrating a camera.
 +
*For the rendering part, rest is the same as that for other primitives only thing being that no ray tracing takes place here (as of now).
 +
*If time permits the project, I will provide functionalities to portray the annotations on a rendered image.
  
Here is the link to my  [https://brlcad.org/wiki/User:Gabbar1947 Proposal]
 
The tasks mentioned in the proposal are completed, just the extension ideas need to be worked upon.
 
  
 
'''Project Extension'''
 
'''Project Extension'''
*These are some of the tasks that I aim to work on in the near future:
 
  
**Functionality to set up the annotation properties for the primitive( the annotate command)
+
After discussions with the mentors, some extension ideas came up:
**Features related to the coordinate system like the annotation scaling
+
 
**Algorithm to provide a bounding box for the text using the relative coordinates
+
*Functionality to set up the annotation properties for the primitive
**Editor for the annotations just like the sketch primitive has
+
*Extension for the geometric shape of the annotation
 +
*Common functionality for the annotation and the sketch primitive in order to reduce redundancy
 +
*Features related to the coordinate system like the annotation scaling
 +
*Algorithm to provide a bounding box for the text using the relative coordinates  
 +
 
 +
 
 +
 
 +
 
 +
==='''Timeline'''===
 +
 
 +
As per the Google Summer of Code  guidelines, work is supposed to begin on May 5, 2017 upto August 21,2017. This is a tentative timeline, as I am not sure regarding the time to be taken by some parts of the project. Results are to be announced on May 4, so schedule goes accordingly. I’ll start working from April itself, and try to improve my proposal as much as I can till the start of community bonding period, irrespective of the project selection.
 +
 
 +
'''Deliverables''' :
 +
 
 +
Community bonding period
 +
 
 +
[ May 5 - May 20 ]:Review the pipeline
 +
Take inputs from the community
 +
Gain insight into the on screen rendering of the primitive
 +
 
 +
Coding period ( I aim to start coding from May 21 onwards)
 +
 
 +
 
 +
*[May 21 - June 1]:Define the annotation container with all the basic forms( line, curve)
 +
 
 +
*[June 1 - June 20]:Start writing functions in annotation.c
 +
 
 +
*[June 20 - June 26]:Tests for the written functions
 +
:Clear any backlog if present
 +
 
 +
*1st Mid Term Evaluation[June 27 - June 30]
 +
 
 +
*[July 1 - July 20]:Implement support for the new coordinate system and port the functions left
 +
 
 +
*[July 20 - July 24]:Write the tests and solve any issue if arises
 +
 
 +
*2nd Mid Term Evaluation[July 25 - July 27]
 +
 
 +
 
 +
*[July 28 - Aug 5]:Support for rendering the primitives
 +
 
 +
*[Aug 5 - Aug 15]:Overlay rendered image with annotations
 +
 
 +
*[Aug 15 - Aug 20]:Write tests and clear any issue if arises
 +
 
 +
*[Aug 20 - Aug 25]:Documentation support for the written primitive
 +
 
 +
*Final Evaluation[Aug 25 - Aug 29]
 +
 
 +
:[ If the work does not complete in the period by any chance, then I’ll work even after the coding period ends. The timeline is subject to change after discussion with the mentors]
 +
 
 +
==='''Milestones'''===
 +
*Fully functional annotations for basic leader line callouts.
 +
*Fully functional annotations for GD&T labels.
 +
*Tests for those annotative elements
 +
*Documentation Support
 +
 
 +
 
 +
==='''Why BRL-CAD ? Why me?'''===
 +
 
 +
I love the way the community members encourage a person to work. I was looking for a project that could match my research interests and BRL-CAD provided me with the project. I was always helped by the community members while I was working on my first patch, even if I was going totally wrong. I thought of applying last year itself but resisted, because I felt the need to gain more experience in this field and this is the last opportunity for me to be a part of the organization and I simply don’t want to miss it.
 +
 
 +
Open source has been a part of my life, since I joined college. I have a decent number of contributions to Joomla! and The Processing Foundation. Later on I started working in the field of Computer Vision. I started working on modeling systems as a part of my research. I was looking for something that could match my research interest as well as preserve my interest for open source. After gaining enough knowledge in this area I thought of finally applying with BRL-CAD. I have submitted three patches till now and will continue to do so in the near future. Development process is something with which I’m familiar. I am active on irc and as well as the mailing list and am in contact with the mentors and will do the same in the coming time.
 +
 
 +
==='''Personal Details'''===
 +
 
 +
*'''Name''' : Shubham Rathore
 +
 
 +
*'''Country''' : India(UTC+5.30)
 +
 
 +
*'''Contact Details'''
 +
**Email : shubhamrathore1947@gmail.com
 +
**University Email : shubham.rathore@students.iiit.ac.in          
 +
**IRC Nick : gabbar1947
 +
 
 +
*'''Education'''
 +
**Centre for Visual Information Technology(CVIT)[1],
 +
**International Institute of Information Technology, Hyderabad(IIIT-H), India
  
'''Documentation'''
+
*'''Github''':GABBAR1947
*Documentation has been provided  [https://brlcad.org/wiki/Annot here].
 
*[https://rathoresaab.wordpress.com/gsoclogs Link] to my daily logs.
 

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

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

Cancel Editing help (opens in new window)