A short video as an overview:
You can find the source code on github:
A direct download of the binaries here:
And a discussion link here:
What does it do?
- You can import a variety of .obj and .fbx files and see if they were exported correctly basically.
- You can try out different materials and settings in a PBR environment
- You can see if the animations were correctly exported (.fbx only)
- HBAO and Parallax Occlusion Mapping along with preconvoluted environment maps should help to give the objects a realistic feel
- Use heightmaps as bump maps
- You can use the included animation import libraries for your games to set up 3d skinned animation in your game.
Why did I do it?
- learn about skinning (on the GPU) and animation setup
- learn about Image Based Lighting
- implement Parallax Occlusion Mapping
- build a solid GUI
- create / use tools to import new resources to a running program, handled in a different thread
In my previous (unfinished) game proper skinned animations were never really implemented and I have never dealt with skinning before. An artist i work with inquired about the possibilities of animations and I put up this viewer to verify his work exported correctly.
I’ve also learned a bunch of new stuff (see list above) and created a basic, solid Graphical User Interface I could use in future projects.
The GUI is a good fit for a playground/debug user interface, since I can directly link fields/properties/methods of any instances to the interface elements. This might not be optimal for a giant UI in a game, but is just what I need for fast prototyping. Along with being easy to build and use it is not resource intensive and does not produce any garbage, a flaw i have found with other solutions.
I think the source can be useful if you want to learn a bit about animation and/or rendering basics in monogame.
The renderer uses simple forward shading; it has a simple depth pre-pass that’s only used for ambient occlusion.
Even though of all the things created lately this is by far the largest and most polished I think I’ll leave it at that. The techniques themselves are well explained in other tutorials (and the links below).
I hope some of you find this tool useful :)
- Creating pipeline extensions and using the BetterSkinned Sample http://community.monogame.net/t/tutorial-how-to-get-xnas-skinnedsample-working-with-monogame/7609
- Sebastien Lagarde’s modified CubeMapGen and great articles on IBL and PBR
- Cubemap filtering from Ignacio Castano (done for “The Witness”)
- Derivate maps (normal maps created from heigh maps)
- Parallax Occlusion Mapping Tutorials