   Thoughts on 3ds Max IGame
  Has anyone used it to create their exporter?What are your opinions?Does it lack anything much as opposed to using the standard 3ds Max SDK?Im currently going through the docs now, but just wanted your overall opinion on it.All im looking to use it for is -Static Meshes - Position, Normal, Binormal, tangent and UV  Vertex data. Material and texture infomationDynamic Meshes - same as above but obviously also including skinning information.Quickly browsing over the sdk, i believe it does what i want, and it also provides functionality for Quaternion rotations and axis angle as well as matrix form rotations.I think i'll just be exporting each animation key as a matrix44 for the time being, by simply using GetLocalTM(time) and multiplying by the parent or GetWorldTM(time). But will later be exporting as position and quat rotations later on to save space.   
  I use it. Very handy. The only thing i haven't figured out yet is when accesing the spline data. I can't figure out how they intend to represent chains or connections. There are corners, and the corners have types (corner, bezier, etc.) but i see no indication that the last corner is connected to the first. So my exporter has to make assumptions. Such as every spline is connected back to itself, or not. :(But other then that, skinning, bones, helper objects, tangent info, uvs. It's all very easy to access and comes out cleanly.Note: I haven't yet attempted to export keyframe data.   ;Quote:Original post by wforlWhat are your opinions?It's crap. use the SDK directly - which is also crap, but will be a lot more useful in the long run.... Quote:Original post by wforlDoes it lack anything much as opposed to using the standard 3ds Max SDK?Pretty much everything that would make you consider writing your own plug-in to begin with. It's ok for very basic information, but to be honest you could get that data from collada or dot xsi. For things such as custom plug-ins and custom user data, you'll be falling back on the max sdk anyway. I honestly cant see the point of IGame. It is basically a slightly over-simplified and buggy front end to the bug ridden mess of an SDK that is 3ds max. Quote:Original post by wforlAll im looking to use it for is -Static Meshes - Position, Normal, Binormal, tangent and UV  Vertex data. Material and texture infomationDynamic Meshes - same as above but obviously also including skinning information.Just use collada, dotXSI (my favourite), or fbx. You will in future, be independent of a specific modeling package (in theory at least. In practice may require a bit of re-working of some code due to minor differences between the DCC packages and the data they export).Quote:Original post by wforlQuickly browsing over the sdk, i believe it does what i want, and it also provides functionality for Quaternion rotations and axis angle as well as matrix form rotations.That's really not a feature that should be used to determine an SDK. Every SDK and FTK (eg collada) will provide quat and axis angle capabilites. Of those, IGame is by far the worst, followed closely by the 3ds max SDK. Quote:Original post by wforlI think i'll just be exporting each animation key as a matrix44 for the time being, by simply using GetLocalTM(time) and multiplying by the parent or GetWorldTM(time). But will later be exporting as position and quat rotations later on to save space.always use the world space TM's, and decompose into local space quats yourself. be careful of negative scaling though! (and infact scaling in general!)   ;  Could you give me some more reasons, why you wouldnt use it, other than its 'Crap'?What kind of bugs were you experiencing?Although i am only using it to get basic information, as mentioned above, im opting to use it as i find it very annoying having to keep going through the conversion routes. I have written my own Collada and FBX convertors to my own mesh format for in game, but its seems silly going through the route of3ds Max -> FBX -> Myformator3ds Max -> Collada -> MyFormatWhen i can come straight out of max into my format. Without having to save out twice for each mesh. Theres the argument that by doing so im restricted to only using 3ds Max, but for the time being, that suites me just fine. I only really know how to use Max, and this is really only a personal project, being used by only me.Quote:always use the world space TM's, and decompose into local space quats yourselfWhy do you say that?;Quote:Original post by wforlCould you give me some more reasons, why you wouldnt use it, other than its 'Crap'?It crashes *a lot*. I ran some tests a little while ago (was evaluating whether to shift our pipeline over to it). I have a large test suite testing every combination of everything possible (in all dcc packages), and IGame fails for around 15% of those files. (mind you, fbx fails for about 2%...)Yeah sure, you can re-write IGame and fix the bugs, but do you really want to?You might as well have started with the SDK to begin with. It's better documented, there are a lot more examples on the internet, and people will be able to help you out on various forums.Quote:Original post by wforlWhat kind of bugs were you experiencing?Crashes. and lots of them. Original post by wforlAlthough i am only using it to get basic information, as mentioned above, im opting to use it as i find it very annoying having to keep going through the conversion routes. I have written my own Collada and FBX convertors to my own mesh format for in game, but its seems silly going through the route of3ds Max -> FBX -> Myformator3ds Max -> Collada -> MyFormatQuote:When i can come straight out of max into my format. Without having to save out twice for each mesh.Add a custom max script rollout tool, with export dialog + cunning system("myConv myFile.fbx"). It will do the same thing, it will involve substantially less programming, and will allow you to remain dcc package independent. the fbx plugin is entirely scriptable, so it's pretty trivial to incorporate into your own customised export button.Alternatively (or in addition too) run a scripted export and conversion process. files = getFiles "Y:\\max_files\\*.max"for f in files do (  output_file = ("Y:\\max_files\\exported\\" + (getFilenameFile f) + ".fbx");  loadMAXFile f useFileUnits:true quiet:true;   exportFile output_xmd #noPrompt selectedOnly:false;   DOSCommand ("myConv " + output_file + " " + output_file + ".myExt");)Quote:Quote:always use the world space TM's, and decompose into local space quats yourselfWhy do you say that?Because unless you fully comprehend how to handle all of the pivots, joint orients, rotation orients, pivot translation offsets etc, you'd be better off bypassing all of it and decomposing manually. Different SDK's and anim packages have very different joint models, and are non trivial to interpret. Max has a pretty basic model, so you may not hit that many issues. Switch to something like maya or motionbuilder, and you'll quickly understand why you want to manually decompose the matrices ;)