Developing a "customized" 3D asset format involves developing a "customized" engine?

Started by
1 comment, last by RnaodmBiT 10 years, 10 months ago

I am currently using the .X format, and if I want to be proprietary, so to speak, do I have to develop a complete new face of engine, As you know, you don't have things like D3DXLoadHierarchyMeshFromX then m_pAnimCtrl->AdvanceTime()

This requires a bit of expertise. Of course I do, but it does take some time to complete.

Thanks

Jack

Advertisement

If you want to develop your own asset format, then you will have to implement all the functions like "D3DXLoadHierarchyMeshFromX", which DirectX provides for meshes.

It would be better to first understand what exactly your engine can use (or does use) from the .X file. For example, I am in the process of developing an engine and I have defined a simple binary format, using which I load my meshes. As right now I am not doing any animations, so I have not updated my mesh converter to include animation data in the end format.

You will have to understand your engine's exact requirements and probably make an asset converter, which can convert your assets from formats like .fbx to your proprietary format. You may have to make a lot of changes in your asset loading module.

So, you may not require a lot of changes in your engine, but at least the loading mechanism has to be changed. Still, without knowing how you have implemented your engine, I can only speculate.

A few years ago I had a problem where none of the exports for Blender were exporting meshes I could load, they all seemed to have little bugs (syntax issues and the like). In the end I decided to write my own mesh format and exporter for Blender. It ended up taking a few months but I was able to export a model and an animation for it and render this in a game. One of the pros are that you will know exactly what data is in the file and where it's come. But there are several cons, you will have to write an exporter which probably involves wading through sketchy documentation. You will also need to implement some new code that will be able to load the file, process it into a vertex and index buffer (just for a mesh) and then if you also need animations you will need to be able to process those into some data structure then write the code to manipulate the mesh so that it animates during run-time, something which is commonly done on the GPU which involves transferring lots of transformation matrices to the graphics card and manipulating the mesh data on a per vertex basis.

One of the important things to note that in order to do this you need to have a VERY solid understanding of what kind of data is actually in a mesh (ie. positions, normals, bone weights, uv coordinates, and indices) and how that data is used to build your mesh on the graphics card.

Overall it is a long process to implement but very rewarding, however if you can get away with using an existing system with no problems I would highly recommend saving yourself the large headache laugh.png

-BiT

This topic is closed to new replies.

Advertisement