I’m putting together a small 3D engine as a learning exercise. I’m planning to use XNA game studio to get me started.
The DirectX SDKs seem to be using a new .sdkmesh format instead of the the older .x but I can’t find much information on the format and sdkmesh.h contains the following:
//--------------------------------------------------------------------------------------
// File: SDKMesh.h
//
// Disclaimer:
// The SDK Mesh format (.sdkmesh) is not a recommended file format for shipping titles.
// It was designed to meet the specific needs of the SDK samples. Any real-world
// applications should avoid this file format in favor of a destination format that
// meets the specific needs of the application.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//--------------------------------------------------------------------------------------
So, the question is: What format should I use? Are my only options to either use a format which isn’t production ready or write my own format from scratch?
How do other small developers get around this? I’m probably missing something but I’m still at the fact finding stage.
The disclaimer you have quoted pretty much says it all, it basically says this is not a commercial grade component.
However for your needs, I cannot see why it would be a problem to use it; it has some quite comprehensive features and is provided to ease the mock up of quick demos etc. You do not need production ready formats for learning.
I think it is fair to say you will not find a lot of information on .sdkmesh outside of the SDK itself; .x was way more popular (it was also supported directly or via plugins in numerous 3D editors).
Small developers will likely still look to create their own libraries, or extend/learn from others.
Of course developing your own model importer is a good learning experience in itself, it just depends on if you think you will be getting the experience out of it that you want to (if you are more interested in Shaders than scene optimisation/composition, then likely not).
Creating your own .obj importer is a good place to start for learning, it will be just for static models though; plenty of references on the web.
I found this guys efforts at working with COLLADA (popular in these circles) a good piece of work: http://thecansin.com/category/collada/
In general, if you want to handle this, then for later stages of optimisation this reference is a must read:
http://home.comcast.net/~tom_forsyth/papers/fast_vert_cache_opt.html
Hope that helps.