M3 Plugins for 3ds Max
Starcraft 2 Model (.M3) Plugins for 3ds Max
Starcraft 2 Model plugins. Tested on 3dsmax 2009, 2010, 2011 and 2012.
3dsmax 2013 is not supported!
The importer and exporter will now be bundled together along with Starcraft 2 object definitions for using custom objects (materials, maps, UI, etc) within 3ds Max. I've chosen to distribute them together so that the object file definitions are in sync with each script.
Starcraft 2 Model (.M3) import plugin for 3ds Max
Currently Imports:
- Geometry
- Bones
- Materials (Standard, Volume, Displace and Terrain)
- Animation
- Attachments
- Particle Emitters
- Cameras
- Lights
- Ribbons
- Tight and Fuzzy hit tests
Starcraft 2 Model (.M3) export plugin for 3ds Max
Currently Exports:
- Geometry
- Materials (Standard, Volume, Displace and Terrain)
- Skin\Bones
- Animations
- Attachments
- Particle Emitters
- Cameras
- Lights
- Ribbons
- Tight and fuzzy hit tests
Setting up an exportable model
Geometry & Materials
- Geometry to be exported must be of the 'Editable_Mesh' type.
- Materials can only be of 'Starcraft 2', 'Standard' or 'Multimaterial' types. Starcraft 2 type is highly recommended.
- Bitmaps must be either 'Starcraft 2 Bitmap' or 'Bitmap' type. Starcraft 2 Bitmap is also highly recommended.
- Decals can now be exported. They are applied through a different UV map channel to the diffuse map.
- In Displace Material, Global strength works as a multiplier of Strength Map. Can be animated. If set to 0, no effect will occur but the higher it goes the more displacement will be visible.
You can now use custom 'Starcraft 2' materials and 'Starcraft 2 Bitmap' bitmaps for extra tweakable settings if you put the sc2_objects.ms script in your plugins directory.
Skin, Bones and Attachments
- Vertices must be weighted via a skin modifer applied to a mesh. This is not required for meshes that have no weighted vertices.
- Attachments are now exported as custom helper objects. They can be found in the Create panel, under the Helpers tab in the 'Starcraft 2 Objects'*s group.
- Unskinned geometry and helper objects that aren't hidden or frozen in the scene will be exported as bones.
Rather important!
Every object needs to have a bone attached to it. To save time on that you have an option in M3 - Export menu called "Add bones". Please, always add bones, script will not do it for you any more. "Add bones" creates and attaches parrent bone at the pivot point of a selected object. If it is helper (Pemitter, Ribbon etc), the helper will be attached to it. If it is mesh, script will create Skin modifier and add newly created bone.
Bindpose Rigging
The bindposes for Starcraft 2 models exists in two forms, the bind pose and the base pose. The first form is the bind pose of the model which uses the absolute positions of the bones and the mesh vertices before any deformation as the 'binding' of bones to mesh pose. The base pose of the model is the 'standard' pose of the model that animations are based off and uses the bind pose as the initial reference. This is the pose the model will assume in the absence of animation information. The base pose and bind pose do not need to be different, they can be the same, this is just the system Starcraft 2 models use to rig bones to model meshes. You can set these poses up at different frames and assign them through the exporter options.
Animations
Animations are now supported by the exporter, however make sure you create beginning and end frame animations for the bones you're going to animate or else you'll be getting weird interpolations. When doing rotation animation, keyframes should be provided every 90 degrees or less of rotation. Animations may not export entirely like you expect because the code is still largely beta.
Cameras
To export Cameras properly you need to create targeted camera. Middle point for DOF functions is deifned by the target position.
Environment ranges define DOF falloff start and end.
Clip planes for the StarCraft to handle are defined by the Clipping Planes values.
Lights
Exported lights must be of "SCII Light' type
Make sure to properly set up the ranges and spot (only in case of a spot light) parameters of the light
Every added light has to be linked to the bone
Ribbons
Ribbons include very similar interface to that of particle system.
It has to have a bone and a material associated with it.
Tight and fuzzy hit tests
Just like any other helper and object, it needs to have a bone attached.
The difference is that it does not take transform information directly from the bone.
Instead, helper's transformation is added into the bone's transformation. The resulting transformation is what you see in game.
Version 2.2 mini-manual:
http://www.sc2mapster.com/forums/resources/third-party-tools/963-m3-exporter/?page=48#p959**
Version 2.1 mini-manual:
http://www.sc2mapster.com/forums/resources/third-party-tools/963-m3-exporter/?page=39#p774
If you have any bug to report please do it it M3 Exporter thread http://www.sc2mapster.com/forums/resources/third-party-tools/963-m3-exporter/
Install instructions
1. Must have 3ds max installed
2a. Extract the scripts (.ms) into your 3ds max '...\Scripts' directory, optionally you can place the scripts in your '...\Scripts\Startup\' directory to have it automatically load them when you launch 3ds Max.
2b. If you want to use Starcraft 2 objects in max (custom materials, maps, animation UI) then place 'sc2_objects.ms' into your 3ds max '...\Plugins' directory.
3. Click on the hammer icon on the default right hand side pane, and click on the MAXScript button. If you didn't have 3ds max automatically load it upon launch, click 'Run Script' from the rollout dialog and locate the script you want to load.
4. Select the utilty (i.e.'M3 - Import', 'M3 - Export') from the Utilities drop down menu.
Special Thanks
Blue Isle Studio (http://blueislestudios.com/): Have graciously supported the development of these tools. Keep your eyes on these guys in the future and check out their website!
Volcore (http://volcore.limbicsoft.com/): For help with vertice flags and initial architecture of the M3 format
Teal (starcraft.incgamers.com): For UV's and his PHP converter source, helped with geometry importing
Witchsong (http://code.google.com/p/libm3/): Providing a great open source library for documenting the M3 file format and designing the M3->Obj converter. Head to http://code.google.com/p/libm3/ for more M3 file spec details. Helped immensely figuring out the details of the M3 file format.
Sixen (http://www.sc2mapster.com/): An awesome website for hosting SC2 development tools and vast XML documentation.
der_ton (http://www.doom3world.org/): Has done some incredible work with the MD5 format. Alot of his work has been adapted for the M3 file format with great success. Big thanks goes out to him!
MrMoonKr: Providing a toUpper function to fix 3ds max incompatibility issues
Skizot: For testing and providing suggestions to improve the script, very big thanks
Phygit: Providing bug fixes and development information to do with the M3 format
ufoZ: One of the original crew to reverse engineer the M2 format and provide a good maxscript importer from which my importer/exporters are based. Huge thanks to his efforts.
Jakub Jeziorski
Florian Köberle (https://github.com/flo/m3addon/) : for creating python scripts, that can convert m3 files to xml and back based on a xml description of the m3 file format.
Hey NiNtoxicated01 awesome work on all this. I have been testing out your export script today but I cannot seem to create a valid attachment point. The attachment is being exported but it shows up as 'Invalid' in the galaxy editor. I named the bone it is attached to Ref_Seat 01 and added a key in the .m3h file but still no luck. Also is there any documentation available for the new md34 format?
atuo detect settings??
is there a way to make it (or possibly in the future) auto detect the settings of the model when you load it?
ex) when you pointed me towards the dark templar there are a few things that are not set by default when you import it (for example, i dont think blend mode was detected, nor was '2 sided' etc...)
Trying to import any of the decals from Assets\Doodads\Decal causes the error
---------------------------
MAXScript Rollout Handler Exception
---------------------------
-- Unknown property: "count" in undefined
---------------------------
OK
---------------------------
struct M3I_DIV -- Model divisions
(
faces, smeshes, bat, msec,
fn Read bitStream =
(
step = "Read DIV"
div = M3I_DIV()
div.faces = M3I_Ref.Read bitStream flags:#ushort
div.smeshes = M3I_Ref.Read bitStream
div.bat = M3I_Ref.Read bitStream
div.msec = M3I_Ref.Read bitStream
echo ("nFaces: " + div.faces.count as string) < - - - Here be error
echo ("nSubmeshes: " + div.smeshes.count as string)
return div
)
)
good work on the animation support. :D
Kind of, I kept putting in the wrong readme files and other small things :$. In the end I still missed something, the global variables don't get reset properly for the exporter after it's finished. Doesn't have a direct impact on the exporter but it'll store the potentially large variable unneccesarily after the exporter is finished. The next release I'll ensure all that's fixed up.
any idea why 1.1 was deleted 3 times? bugs i presume?
@Ellesdee79: It was mostly a stability and polish update. Alot of the error catching was improved. A backward compatibility error was fixed that was occuring because I mistakingly used a max function that wasn't backward compatible with earlier versions of max. You'll notice you no longer have to use strictly a multimaterial for the mesh material. You only need to use multimaterials if you want to use multiple materials for the model which is the way it should be! I put in some code to handle face material ID's properly, so it's no longer mandatory to set them yourself.
Perhaps the one feature I've yet to add is the ability to export multiple meshes within a scene, but I'm hesitant to include this feature as there are quite a few technical complications with doing this. I'll think about a way I can provide more comprehensive details of what is included in each update. The readme files contain brief changelog notes if you're interested.
Overall I feel the exporter has moved out of alpha stage and is more beta. It should work with minimal fuss and when it doesn't, provide an adequate explanation why. Hopefully there's minimal unexpected crashes.
Very nice work:) whats new/changed in .9 exporter?
Thanks for all the words of support guys, it's good to see people are getting use out of the script. I'm really proud of the effort I put in so it's great to see that being worth it.
And thanks to you Sixen for providing a good place to host the project :).
Hey KorvinGump, I missed that potential error. The problem is you haven't applied a material to your mesh. You need to use a 'Multimaterial' type material and use the sub-material slots as submeshes for your model. I recommend using 'Starcraft 2' shaders for your sub-materials which can be accessed if you place sc2_objects.ms into your 3dsmax\plugins\ directory. You must then select your faces and assign them material ID's yourself through the edit mesh modifier. At the moment this is really inconvenient. I'm looking into fixing this situation however max is being difficult about it.
Hi, i tried to use your plugin on 2010 3ds Max(v12.0). I created standart primitives->convert to edit mesh. When I try to export model, i have an error. He can't dеtermine format. Perhaps it was because of the version 3ds max. Look this error here
Awesome work, NiN, :).
/applaud
Wonderful, while id like a tool that was more standalone for use with other 3D apps, this is still greatly appreciated. I look forward to support of materials and shaders to even do simple things like add an emissive channel to models. I hope Blizzard can release their import/export and material/shader tools soon, thanks!!
awesome job man. great to see this thing. you are gonna help sooo many designers out there
I really hope you contiinue this! I really want this hahaha :P i've been having problems with it and not being able to export it... they just preview as spheres haha :P
This is great if you will continue updating this tool. Since I wont be moving to SC2 until I will hve some kind of Exporting and Importing tool. SC2 + 3dsmax 2010 .
i seem to be having an issue..
mtl.name = mmat.name
MAXScript Rollout Handler Exception
Unknown property: "name" in undefined
i have a multimaterial, and each PART of it is named...
using max 2009 if that helps.