Week 14 blog!
View Blog Post
This is the last blog for GSoC 2020. It was an amazing journey and an experience to cherish for lifetime.
I would like to thank Google for giving us, students this platform and Python Software Foundation for leading so many sub-organisations and the students towards the world of open source.
The mentors I got were amazing, probably I could not have asked for better mentors.
My work can be found here: https://github.com/panda3d/panda3d/pull/950
Everyone, stay safe and happy :)
Week 13 Check-in!
View Blog Post
The coding period of Google Summer of Code 2020 is finally over. In the last week of this program, I made my Pull Request ready to be merged. With the help of mentors, I resolved the merge conflict.
Additionally, I implemented a new feature to debug the navigation mesh. I added the cull_calback(), is_renderable() and some other functions to make debugging process a lot more easier.
Earlier, the user had to get the geom node as output from NavMesh::draw_nav_mesh_geom() and then attach it to a nodepath in the render graph. Now, the user just has to attach a nodepath to NavMeshNode, lets call it navmeshnodepath, and then call navmeshnodepath.show() to show the navigation mesh and navmeshnodepath.hide() to hide the navigation mesh.
I have also added a short implementation in the sample code in panda directory : samples/navigation/main.py
So this was it for this week. A wonderful summer has come to an end, but taught me a lot. This summer I was introduced to the world of open source and I will surely keep contributing to open source projects, including Panda3D. I was really fortunate to have 2 great mentors. Both @rdb and @moguri were always available to help me out in whatever problem I stuck in.
Thank you everyone and more especially Python Software Foundation and Google for such a great learning experience.
Week 12 blog!
View Blog Post
This is the final week of the GSoC 2020 Coding Period. It has been a great journey so far and more importantly, I got to learn a lot.
As mentioned in the previous blog, the last week was spent in resolving the PR reviews. I was able to resolve most of it.
I added docstrings for all the functions in the cxx files, added more properties to be set by the user for building the navigation mesh.
I also added a new function add_polygon() for the user to add extra polygons to the input geometry, which would then be processed as vertices and triangles to generate the navmesh. Two overloaded functions have been implemented for the same, one with three LPoint3 input arguments, i.e. a triangle polygon as input, while other with a PTA_LVecBase3 input argument, i.e. a polygon with more than two vertices as input.
I removed the unnecessary comments and debug statements from the code, cleaned it up. I used the Panda3d's config to notify, like navigation_cat.error(), navigation_cat.info() etc. Also since panda3d's world units need not be always Z-up, so the mentors suggested to implement a transformation matrix which would convert the points from Panda3D's default coordinate system to Y-up coordinate system (Recast navigation's coordinate system) and then back to Panda3D's default.
This week, being the final week, I need to prepare for the code submission and resolve the remaining PR reviews.
It was a great summer!
Thank you! Stay safe always!
Week 11 Check in!
View Blog Post
Now we are into the second last week of the Official Coding period for GSoC'20 ! The previous week was basically me involved in completing the sample code for navigation.
We selected a new environment for the sample with a better license. The previous code of the sample program was almost completely removed and a fresh code was written explaining a lot more features of the navigation and navmeshgen libraries.
Raycasting has been implemented in order to find the destination based on the position of a mouse click. So now if a mouse is clicked, then the two-dimensional position of the cursor is then used to find the corresponding three-dimensional position in the panda3d world coordinates, which is then set as new destination. Now the user can change the destination and find a new path even while an actor is already traveling on the previous path. The current position of the actor in the middle of the path will be set as starting point.
The GIF above shows the dynamic path-finding ability of the sample program. Yellow lines are the output of find_straight_path() while the green ones are output of find_path(). The panda has been programmed to move on the yellow line.
This was all for the previous week. This week I am focusing on the PR reviews so that we can have the PR merged as soon as possible.
Thank you. Stay Safe!
Week 10 Blog
View Blog Post
I know I am late for the weekly blog. My apologies for that.
The previous week was my first week post my exams. I had mentioned in the last blog that I will be working on the documentation for panda3d.
So, just as I mentioned, I was able to complete the documentation part in one week. The documentation includes documentation for both python and c++, the languages supported by panda3d for game development. The appropriate code snippets have been included along with the screenshots of the corresponding output.
The challenges were to understand the reStructured text format by Sphinx ans write the code for documentation with proper identation and tags so as to build separate docs for python and c++.
You may find the Pull Request here: #71
This week I am working on the sample code. Some part of work has been done and hopefully it will be completed by the weekend. I will share more about the same in my next blog.