CPE471 Final Project

Super Smash Trash Bros

by Brendan Dunning

My goal for the project was the create an interactive replica of the Super Smash Bros stage "Fountain of Dreams."

The majority of the work on my final project was spent integrating the Assimp (open asset import) library. I initially decided upon using this library in order to import animations into the scene created from an external source. However, getting the library linked and integrated in addition to figuring life out in the midst of a pandemic took much longer than expected and hindered my progress in implementing animations. Despite this, I was able to get value out of assimp in several ways. First, my program is now able to import and use models of all different formats rather than just the .obj files tinyobjloader supports. I ended up using mostly .fbx files as they support skeleton bones, materials, and textures.

Building objects with Assimp required a considerable amount of work rewriting the base code to work with a different library. All of the data buffers sent to the gpu had to be altered to interpret the way assimp returns meshes.

Using the data structures provided by Assimp, I was able to automatically load in materials and textures directly from models instead of hard coding them into my program. I structured the program so textures are automatically allocated and bound before being drawn into the scene. This made working with multi-mesh files much easier.

The model I used for totodile is a multi-mesh model with several textures and materials I automatically generated from the file.

As for the interactive component, I implemented a basic playable character. This character (Captain Falcon - the guy standing in the middle of the stage) has minimal hitbox collision detection with the stage. I added acceleration to his movement and jump to make it feel more natural. He can be controlled with the arrow keys and can jump with a press of the space button. While my intial plan was to apply the animations I created to match his current velocity, I am going to need more time to tie the two together.

The camera can be moved with the mouse. WASD dolly and strafe the camera, shift/ctrl move the camera directly up and down

I'm still happy with the way the scene came out. The stage and animated background look nice and will be much more fun to play with once the playable character is more fleshed out. I also have a much better understanding of the lower level opengl functionality now. By rewriting the starter code, I have a much better idea of what it is doing and how it is interfacing with the GPU.

video demonstration of the player movment

references:

http://assimp.sourceforge.net/lib_html/index.html

https://learnopengl.com/Model-Loading/Assimp