3D Software Packages
3D editors are collections of tools that you use to build your 3D graphics. There are both commercial and free tools available. These are the most popular editors:
Most 3D editors usually save files in a common collection of formats for easy use within other editors as well as a standard way for game engines to import your files for use.
Cocos2d-x Provided Tools
Cocos2d-x provides tools to help with converting your 3D models to formats that Cocos2d-x uses to provide access to all aspects of your 3D files.
fbx-conv command-line tool
fbx-conv allows the conversion of an FBX file into the Cocos2d-x proprietary formats. FBX is the most popular 3D file format and is being supported by all the major editors. fbx-conv exports to .c3b by default. It is simple to use with just a few parameters:
fbx-conv [-a|-b|-t] FBXFile
The possible switches are:
- -?: show help
- -a: export both text and binary format
- -b: export binary format
- -t: export text format
fbx-conv -a boss.FBX
There are a few things to note about fbx-conv:
- The model needs to have a material that contains at least one texture
- it only supports skeletal animation.
- it only supports one skeleton object no multiple skeleton support yet.
- You can create a 3d scene by exporting multiple static model
- The maximum amount of vertices or indices a mesh is 32767
3D File Formats
Cocos2d-x currently supports two 3d file formats:
- Wavefront Object files: .obj files
- Cocos2d-x 3d ad-hoc format:c3t, c3b files.
The Wavefront file format is supported because it has been widely adopted by 3D editors and it is extremely easy to parse. It is, however, limited and doesn't support advanced features like animations.
On the other hand, c3t and c3b are Cocos2d-x proprietary file formats that
were created to allow animations, materials and other advanced 3d features.
The suffix t means text, while the suffix b means binary. Developers
must use c3b for production because it is more efficient. In case you want to
debug the file and track its changes in Git or any other version control system,
you should c3t instead. Also,
Animation3D objects can be created with c3b
or c3t files as it is not possible to animate obj files.