Nishant Dania
Coder / Designer / Arduino Enthusiast
GSOC 2014 - End of Week 1
  • 30 May 2014
  • The Panda Dance.
    Models were added and positioned using the Pyqt GUI.
    Since my last post, I have added a lot of functionality to my 3d-auv-simulator. The first thing I did was to organise my code a bit, make it more object oriented. This took some time since till now I was working directly through my main function. I broke the code into several modules namely guiManager, pandaManager, eventManager and inputManager. Here is a brief overview of what all these do:
    guiManager: Controls the layout of the PyQt interface. Also handles the thread running the PyQt GUI.
    pandaManager: Controls the Panda3D thread and the scenegraph used by panda3d to hande all the pbjects in the scene.
    eventManager: Controls the flow of data from GUI thread to the Panda3D thread. This is the middleware which helps in the communication between the two modules.
    inputManager: Controls the keyboard input.

    The next thing I added was a bunch of options to my GUI. This begins the development of what I call the 'environment builder'. The work of this is to provide a GUI to change the scene in Panda3d. I added options like adding new models and changing the position, orientation and size of the models. Placing the models is now a piece of cake using this GUI.

    Models can now be placed precisely where required in the scene using the GUI.

    With all these functions in place, I added a few keyboard inputs, one of which is the 'Out Of Body Experience' aka 'oobe'. Using this function, Panda3d allows us to view the scene from any angle using our mouse. This helps to see the environment from different perspectives without handling any additional camera. Below is the screenshot of the 'oobe' mode in use.

    Top view of the scene viewed using oobe.

    This marks the end of the first week of the GSOC program. Till now I am happy to see the application turning out well. I plan to add a lot of features in the next week.

    As I mentioned in my previous post, I have added all the code till now to the project's google code repo. The code resides in the simulator folder here.

    What's next:
    Add a World Map which shows the objects of interest in the scene.
    Add a mouse handler to easily select and modify the objects using the mouse.
    Add collision to the models.
    Add a save state option.

    comments powered by Disqus