PokerVR has vast range of avatars and development cycle of adding new avatars for testing and later for production was fast and adding new avatar requires updating new fbx model and recreating new prefab which was time consuming and error prone. Manual integration takes more or less one hour and after integration all avatars needs to be QA again. There has been many iterations on new avatar before they go into production.
The need was arise to create automation system for character integration, goal was to create an automation system which is
- Designer friendly
- Easy to add new characters
- Handles Creation of Prefab for different platforms like Rift & Gear
- Gives visual indications if fbx model is not exported correctly.
- Make iteration process faster
Demo of Character Creation Tool
Character Customization system is divided into four major modules
- Meta classes
- Editor window
- Loader & Initializer
- Customization Module
Meta/Model Classes:
These classes used to hold data related to different modules, Editor window is used to update these meta classes and Loader & Initializer module create new prefab utilizing these classes and last but not least Customization Module uses this meta information to make different customization in game.
![customization_model_class](https://eeprogrammer.wordpress.com/wp-content/uploads/2019/10/customization_model_class.png?w=756)
For saving meta classes XML serialization is used instead of json & scriptable objects, XML file is easy to read & modify if you need to update some data from file as XML use begin & end tags.
Editor Window
It is divided into different sessions and each session has different tabs.
Character’s List: It contains list of all avatars and avatar related properties which are unique to every avatar and you can remove and added new avatars. Major properties are mesh references of avatar’s body and facial hair from fbx model.
![customization_unique_parts_0](https://eeprogrammer.wordpress.com/wp-content/uploads/2019/10/customization_unique_parts_0.png?w=756)
Common Properties
it contain common and global properties which has following tabs
- Inverse Kinematics (IK) contains references of Avatar rig for IK system
- Hair contains mesh references of all Hair meshes
- Shirts contains mesh references of all shirts
- Anchors contains json string of anchors which needs to be created at run-time while creating prefab, such as left & right hand gun anchors.
![Anchor_3](https://eeprogrammer.wordpress.com/wp-content/uploads/2019/10/anchor_3.png?w=756)
- Pants contains references of pants meshes
- Materials contains path of materials for Rift & Gear
![customization_common_parts_1](https://eeprogrammer.wordpress.com/wp-content/uploads/2019/10/customization_common_parts_1.png?w=756)
Loader & Initializer
Loader is responsible for loading meta files and caching all references of mesh & rig from fbx model where as Initializer’s job is to attach character related scripts to newly created prefab, assign references and initialized them to required value and assign materials to meshes.
Customization Module
it is used to customize the avatar at run-time i.e in game, it looks like this.
![charactercustomization_class](https://eeprogrammer.wordpress.com/wp-content/uploads/2019/10/charactercustomization_class.png?w=756)
![customization_commands](https://eeprogrammer.wordpress.com/wp-content/uploads/2019/10/customization_commands.png?w=756)
After development of Customization Tool, we were able to add new avatar within 5 minutes via couple of click.