Week 9 Check In!
View Blog Post
Another week passed and here I am with another blog.
The last week, unfortunately, was not productive as I did not contribute much to the panda3d project due to my university exams, which I mentioned in the last week's blog. I had informed my mentors about this academic situation and they were really supportive to let me focus on my exams for one week. Thanks to them, my exams went well and now I am back to working on the project.
After my last blog, I had started working on the documentation and had written some part of python docs in Sphinx's reStructured text format (.rst). I had also got a review on my PR by the mentor. This week I will work on the review, complete the Python Docs and then C++ docs as well. After that, I shall update the sample code as well.
See you all next week which should be much more productive than this one. XD
Thank you and Stay Safe!
Week 8 blog!
View Blog Post
The is week 8 of the Google Summer of Code program. The last week wasn't a lot of work done. I did add some BAM test files, added visualization function to NavMesh class similar to NavMeshBuilder class. So, now draw_nav_mesh_geom() in NavMesh class would work the same way as draw_poly_mesh_geom() in NavMeshBuilder class and can be accessed through even NavMeshNode class.
BAM test files can be found in the Tests folder. A BAM object is created and read over in the test functions to test against the original values. So these were two main things I added in the previous week.
Along with them, I have started working on the documentation. It uses Sphinx's reStructured text (.rst) format. I have got familiar to it's coding / formatting styles.
Also, I have added a new class NavMeshParams in the navigation library. So, the user can add custom vertices and faces to generate the navigation mesh without using the navmeshgen library. Or maybe, the user can get the navigation mesh generated using some other library and then write code to parse it into NavMesh class using NavMeshParams class.
This week I have my academic load in form of end semester university exams. So I would not able to do much for the GSoC project. I have informed my mentors regarding the same. So probably I would not have much to write about next week.
Still, lets see if I can complete some part of the documentation during my exams.
Till then, stay safe :)
Week 7 check-in!
View Blog Post
So we are into Week #7 now. In the last week, we were done with integrating query functions and I had mentioned that next I would be working on BAM serialization.
So yes, BAM serialization took me some time to get the feel of, though finally I was able to implement in successfully with the help of mentors. BAM serialization gives the users and game developers ability to save the generated navmesh in their hard disk and load it from there whenever required. This can be really helpful in games as a lot of time and computational power required to generate navmesh will be saved and hence the games would load faster. So, as for this week, this was the major development done.
Where did I get stuck? Well, BAM serialization was a totally new concept for me and hence I was stuck in the process of understanding it. Once I understood the concept and how the functions implement it, then it was quite easy to code, though there were moments i got stuck while compiling after implementing BAM serialization. Mentors rescued me there. XD
For next week, I have few things on card: Writing Test Files for BAM, sample code and making more user friendly functions so that users do not have to dig deep into objects to use basic API functions. After that, a few more changes as per the PR review.
See you next week :)
Week 6 Blog
View Blog Post
So its the beginning of the sixth week. The first evaluation results are out and fortunately, I made it till here. :D
This week I implemented the query functions present in DetourNavMeshQuery class. There are primarily two query functions: findPath() and findStraightPath(). Both have their own uses. The implementation initially looked to be easy, but got real complex when I started coding. There were many other function calls I had to make in order to implement these two functions, and in process taking care of the variables involved.
Both the functions have their usecases. FindPath() returns the polygons present in the path corridor. Then, its over to us how we connect polygons to complete the path. FindStraightPath() directly returns array of vertices. Here I present an example for each path finding query:
The green line shows the path in both the above images. The first image makes the findPath() query while the second one makes the findStraightPath() query.
Though, on the basis of these two images, you might conclude that findStraightPath() is obviously better among the two, but trust me, you won't always want to use findStraightPath(). You will know when you use it. :P
Apart from this, I spent time in dividing the library into 2 separate libraries: navmeshgen and navigation. The navmeshgen library provides tool to generate the polygon mesh, detail polygon mesh and navmesh. The navigation library provides tool to further process the navmesh and make queries over it. Recast, NavMeshBuilder are included in navmeshgen while Detour, NavMesh, NavMeshNode, NavMeshQuery are included in navigation.
This week I plan to make BAM serialization possible and work on the reviews made by mentor @moguri over my PR at Github.
Will return next week with more exciting stuff. Till then, stay safe!
Week 5 Checkin!
View Blog Post
This week I worked on the PR.
The code was not exactly python ready. So I along with my mentors worked on making the code ready for use in python. Giving PUBLISHED access to exposed functions and members and especially, debugging while compiling the code was challenging. I was stuck many times while compiling the code to make it python ready.
Now we can access the recast tools from python environment. This feature especially amazes me. This is the first time I have worked on something where I am writing library in C++, but using it in Python. This felt so good after being successfully done. I wrote sample codes for debugging in both python and C++, but believe me, the experience of using python to call C++ libraries felt so good. It was so easy and smooth.
After doing this, I wrote test file in python for the functions coded till now. Also, I wrote a sample code in python to add to the panda3d repository and to explain how does it work.
Next task is to implement the query functions. Will complete this week probably. Till then, stay safe !