Summer of Code/2014/AnubhavJ/Turtle Art 3D

< Summer of Code‎ | 2014
Revision as of 14:02, 19 March 2014 by AnubhavJ (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


What is your name?

Anubhav Jaiswal

What is your email address?

anubhav2503@gmail.com

What is your Sugar Labs wiki username?

Sugar Labs wiki username: AnubhavJ

What is your IRC nickname on irc.freenode.net?

IRC nickname: martian_

What is your first language?

English

Where are you located, and what hours (UTC) do you tend to work?

Location: Hyderabad, India Time Zone: UTC + 5:30 (Indian Standard Time) Working hours: 13:30 to 21:30 UTC (flexible)

Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?

I am new to Open Source and have only recently begun contributing to open source projects. During this period, my contributions have been to Sugar Labs. I want to start giving back to the Free and Open Source community that has given me so much both in terms of software, experience and guidance.

Why Sugar Labs?

The Sugar Learning Platform is the core component of a worldwide effort to provide every child with equal opportunity for a quality education. When I'm contributing to this open-source project, not only I will be doing it through lines of code, but indirectly, this will help in a child's education in some or the other way. Sugar's activities are used in school every day by nearly 3 million children in more than forty countries. If I could use my skills in such a way that even a single child is benefited from it, nothing would make me more happier.


ABOUT YOUR PROJECT

Name:

Turtle Art 3D


Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?

The Turtle Art 3D is an extension to already existing core activity of sugar – Turtle Art. Sugar, as of now lacks any 3D programming environments. Turtle Art is limited to drawing only 2D figures. The idea is to provide Turtle Art with a 3D programming interface which would include modules such that the user can draw 3-Dimensional figures using logo blocks. There is a rich program in 3D Logo developed by Horacio Reggini [1]. The specific project would be to write an extension to Turtle Blocks to encompass Reggini's ideas.

This plugin would add basic 3D transforms to Turtle Blocks (e.g., setxyz, pitch, roll, yaw), camera and lighting models, surface texture mapping, and a rich set of example projects. A extended goal, if time permits would be a plugin for generating objects for MineCraft.

This plugin would be useful to students of the age-group 10 – 15. It would enable them to create 3D figures using simple logo blocks. This would help them in a number of ways:

- serve as a precursor to learning programming languages in future - to build an understanding of 3D geometry, 3D transformations - improve their imagination and 3D visualization skills - lay a strong foundation for the mathematical concepts of co-ordinate geometry and vectors - improve their creativity and enhance fun

Programming Language: Python Libraries: pyGtk , library for 3D rendering (OpenGL)


Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described.

- A prototype of Turtle Art 3D: Developed a prototype for the Turtle Art 3D to get a better understanding of the work that needs to be done. It can be reviewed here: - Familiarity with Turtle Art codebase: Possess some level of familiarity with the existing Turtle Art codebase - Familiarity with submission and review procedure - Prior experience with python and Graphics programming - No prior commitments in summer, it would be my top priority - Summer Vacations during the months of May, June and July , therefore can spend at least 40 hours per week (6 days a week) - Other than that, I enjoy working with Python and C++ and have worked on several projects

Relevant Prior Experience - Developed a complete 3D environment game using OpenGL - Developed a 2D game in python using curses library - Implemented OpenGL graphics pipeline in C++


What is the timeline for development of your project?

Pre Program Preparation - Week 1 Discuss the features required for the extension and the modules to be written
Pre Program Preparation - Week 2 Work and plan out the design of the extension
Week 1 Create the basic framework for the activity
Week 2 Enable the 3D motion of the turtle equipped with basic functionalities - setxyz, pitch, roll, yaw
Week 3 Add camera and lighting models
Week 4 Add texture mapping to objects created
Week 5 Add ‘export to 3D model’ capabilities such that the model is compatible with use in Blender
Week 6 Provide sample projects/examples by adopting ideas from Reggini’s implementation


If your project is successfully completed, what will its impact be on the Sugar Labs community?

My version:

Once this project is successfully completed, Sugar will then have a completely new and one of a kind 3D programming environment for students. A student in any part of the world will then be able to not only create 3D visualizations but at the same time improve his mathematical concepts of coordinate geometry and vectors. It is designed to be easy enough for children, yet powerful enough for people of all ages. It would serve as a playground where any child can learn to create 3D drawings and figures using his imagination and also serve as a challenge to the more adventurous to create complex 3D art involving a lot of co-ordinate geometry concepts.

Mentor


Member from Sugar Labs community


What will you do if you get stuck on your project and your mentor isn't around?

Will try to get help from other developers on the community, depending upon the type of problem, ask about it on relevant channels. In my college, I am surrounded by students who themselves have great knowledge and proficiency in python and debugging and are always ready to help. So there are a lot of ways I can tackle a problem I'm stuck on when my mentor isn't available. In the least case, I can always go through the code and work upon it myself.


How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?

- Create a Wiki page for overall project state containing:

 ToDo, wishlist, setup, how-to send patches/pull reqs, etc.

- Maintain a blog for detailed weekly progress and how the development is coming along. - Questions asked via IRC and/or mailing list. - Major milestones announced to Community via mailing list.


Screenshot of sugar development environment Home view


Link to pull request


Here is the link to a patch: (author: anubhavj, committer: Manuel Quiňones)

https://git.sugarlabs.org/browse/mainline/commit/58d23139df8a5e241be4d6b56b0c9176c2bc99fc


Describe a great learning experience you had as a child.


A great learning experience would be when I was first introduced to Computer Programming with Logo as my first language when I was a kid. It was fascinating to see the figures get created with such simple yet logical code. This drew my interest in programming and made me dive deeper into learning more about it.