I've just released a new tool ( the
Wall Worm Model Tools ) to expedite the process of sending models from 3ds Max to the Valve Source Game Engine. The tool has the following features:
- Automatically generates a QC text file for your model
- Allows you to pick your own custom collision model if you don't want to use the auto-generated model (see planned features)
- Auto-generate LOD models of your model
- Gives you a visual representation inside Max of the limits (range) tied to each LOD model which is especially helpful if you are also building your level design inside of Max (with Convexity)
- Visually set the $illumposition position
- Assign a surface property to your model from inside the Max interface
- Set various model flags including $staticprop, $opaque and $mostlyopaque
- Automatically makes layers in the layer manager for the model, hull, LODs and helpers
- You can select LOD objects in layer manager and tweak their Multi-Res settings or edit the LODs to your liking after they are created
- Visually assign the $masscenter property
- Make Sequences
- Send SMDs straight to compiler
- Compile VTFs from materials
Planned Features include:
- Can automatically generate convex collision hulls for your model (not yet implemented)
General Overview
[ame]
http://www.youtube.com/watch?v=z74zF4W1fVg[/ame]Quick Demo exporting Prop
[ame]
http://www.youtube.com/watch?v=TEnYtBr-isg[/ame]
Docs and downloads at
http://wallworm.com/projects/utilities/docs/
I look forward to any feedback from any Source modelers that use the tool.
Replies
I'm suprised that valve hasn't already released something like this.
http://wallworm.com/projects/utilities/wallworm_model_tools.html
The latest update includes a fix where the LOD distance helpers select buttons where not working when you first create an LOD group. Now the LOD distance helper select buttons work when initialized.
A standalone one would be nice too. Were you just pull in a universal file format like .dae or .obj and have it pump out a .qc, an .mdl and All would be well. Good tool nonetheless.
Here is a list of the latest fixes in version 0.83:
Valve does cool shit.. but god damn I hated working with those .qc files.
* I dislike the autio creation of those layers and their names, and also all the objects.
What I'd like is after I've set up my default settings (ticking staticprop), I'd like it to simply;
Select model
(optionally) Select collision
(optionally) select lods
export
I don't want it to generate anything extra in between, especially lods unless I click a button or tick a box to auto generate lods.
* I'd prefer an option to export to the current folder that the max file is in.
* I'd like to skip that smd export options window, or have those options built onto your wallworm model tools. More on that in this thread; http://www.polycount.com/forum/showthread.php?p=1251726#post1251726
* If you could build those options into your tools, then there should be a option to export a idle animation smd file along with the other stuff (preferably with "_idle" attached at the end of the name - don't need to auto generate a new model for that - or, have it in the settings to attach any suffix you want).
* An option to add whatever extra lines to the QC. I want to add $scale 1.0 to mine and maybe some notes/disclaimers but I'm sure other people will have other things to add.
* This one is very specific, and a bit complicated. But my folder structure for the things I need to compile is completely different from the folder structure of my working files. For example, lets say my work is in the W:/Work/props/taxi folder...
The folder I need to compile it to is somewhere like P:/project/game/props/maps/blabla/vehicles
So, I'd like to be able to put a custom path in front of the $modelname and the $cdmaterials in the qc settings.
In this example, I'd put "props/maps/blabla/vehicles" in this extra option and the QC file will give me:
$modelname "props/maps/blabla/vehicles/taxi.mdl"
I know I'm probably asking too much and maybe my ideas will only benefit my workflow, but I figured I'll let you know about them anyway.
On a sidenote, I'm sure Valve has some more streamlined tools than we think. Or at least I'd like to hope so.
That idea is already part of the process. If you type "props/maps/blabla/vehicles" into the model path, you will get the $modelname you mentioned already
Today I did update the script to add $mass and $automass... and I intend to add a scale option as you mentioned.
The option of choosing the root export folder is something I have on my TODO list. I intend to add a CONFIG utility... so in essence you will be able to choose your Source SDK mod folder (or any other arbitrary folder) for exporting into your mod's model directory. That config will be remembered between Max sessions. I also intend to add a BATCH file into the export also that will allow you to go ahead and compile...
The LODs are not autogenerated unless you've asked it to. The LOD tool will, in an upcoming update, allow you to arbitrarily choose your own LODs in the same manner you currently chose the collision hull.
As for skipping the exporter pop-up... I know of no way to do it. Even though it adds a few seconds and requires clicking, I don't mind all too much. Neil, the programmer who made the exporter, gets the promotion for his site in the pop-up... and I am all about helping support his efforts. So I am personally fine with that.
Finally, to the layers. I suppose I can add a setting in the config utility (when I've added it) that lets you choose whether it makes layers or not. I personally work in some scenes that can get very complex and the placement of these into layers is simply a management issue. I can imagine finding ways of improving the naming conventions (and giving naming config options) but can't imagine not using them personally. But I am not adverse to the idea of giving the option to turn off layers.
And like the naming of layers, I may be able to improve the naming schemes of the objects. Ideas on the most sensible approach are appreciated... though it is a lower priority to me than finishing the rest of the functionality.
Anyway, I hope I've addressed most of your points. I really appreciate the feedback and look forward to getting more input from you and others as you use it.
Thank You!
http://dl.dropbox.com/u/1319713/wip/ss_20101208032146.jpg
But now I realized its because I pasted in a absolute path instead of a relative path... just tried it again now and it works. Only problem is, it creates all those folders (props/maps/blabla/vehicles/) when I actually don't want all those folders, I only want it to be in the QC.
I guess you are right with that pop up thing, I had no intention of denying the acknowledgement of Neil's work and only wanted things to be more streamlined.
Also, you can actually include his name and his site to your tools if you want. That's if you find a way to skip those windows Win/win!
Just put it under your logo. Speaking of your logo... it's a bit too big I think... I know you can minimize it but each time you open it, its maximised again. I'm not trying deny you acknowledgement either... I just don't think that logo needs to be there at the top. It should go in the about section. I see Neil is already there.
I guess the thing it created wasn't a lod then... when I picked my model it created a clone with a multires modifier on it, I just assumed this was a lod but it seems to just be ... a clone, like it says Well, still, I see no use for having a clone and that illuminationorigin thing, at least not with my workflow.
Speaking of picking models, I don't like the current way of doing it because you have to click the right thing which isnt that easy when there are multiple lods overlapping eachother. Ideally there should be a button there to "use currently selected mesh". That way people can select the objects using outliner (or whatever scene management tool they use). Or you could implement a pop up list to pick from like the Attach pop up list.
I use layers as well depending on the number of models I'm working with. But most of my work only have like 5 separate things to export and that doesn't really need layers. It doesn't really make things more tidy because my naming convention already does that for me. Most of my layer usage happens when I'm working on models rather than during the export phase. Could be because I mostly work on simple props.
However when I'm working on many things that need to be exported, I think my workflow is still faster than using this tool since this tool can only handle 1 object at a time (I posted my smd-export workflow at the bottom of that other thread I linked earlier). So I guess my next feature request is multi-smd export with multi-lod, multi-qc and multi-collision support!
Don't need multi-paths at least. But you can put it in there if you want
By the way, built in compiling sounds very very cool.
thanks for the quick reply
The tool also no longer assumes $concave... you have to set it manually.
*The ability to choose your own LODs is limited and incomplete in this version. I wanted to finish that function before this release but got enough emails about the FPS error above that I released this as it is now. For the moment, you can choose your own LOD... but the tools to choose the helpers don't activate yet.
* Preference for Export root folder (now can export straight to SDK model_src folder
* Preference to turn off the model copy and use your model in tool directly (default is to copy)
* Preference to turn off the tool's creation of its own layers for items
* Turned on batch mode exporting... no longer have to click multiple OKs to export--note that because of this change, you cannot make settings to exporter directly--and this only works if MAXScript has write permission to your plugcfg folder in Max
* started batch file creation. In export process there is now a batch file. It's not got the right path to your orangebox bin folder... but otherwise it can be used to compile.
It's too late to give any documentation... which I need to do soon. I'll make a new video explaining the features I've added in last few days when I get a chance.
PS. Much thanks to Neil from http://www.wunderboy.org for giving me help on this tool and directing me to his batch export method.
I also wanted to let people know that Michael Little from www.maple3d.com is working on some new updates to Convexity... Among a release he expects out around the new year will be the Convex Hull creator that this tool will use. Michael has informed me that he is intending to make a free, stripped-down version of Convexity that will be available for anyone who wants to use that functionality--which this tool will hook into. Of course, I highly recommend anyone to get Convexity Pro as well... I certainly love it and hope to help generate interest in his awesome program!
Anyway, I'll release a new video on the new features soon.
Thanks to everyone for all the support lately. The emails and forum posts are greatly appreciated.
Finished adding support to pick all of your own LODs.
- Finished adding support to pick all of your own LODs.
- New User Preference to set the SDK bin folder... if set there is a working Batch file for compiling your model with the QC file.
- Added settings to control the SMD exporter (Reference/Sequence, Start, End, etc). Note that for this to work you must make your Plugcfg folder writable!
- Fixed the Pick Collision Model function to not Copy the selected mesh if you have set the preferences to not COPY.
- Fixed bug where extra Center Of Mass helpers were created when changing a collision mesh.
- New User Preference to set Material Export Root folder. This option is not used yet (since the tool does not yet export materials) but is in preparation for when that is added.
- Various minor UI tweaks.
And now I am probably done adding to it for a short while as I work on my own level for CS:Source for a while.The one problem I am having is figuring out how to add animated Collision Hulls. At the moment, collision hulls do not work with the sequences... so if you need the model to have animated collisions, you will need to edit your QC. Also, if anyone can help explain the process of animating collision hulls, it would be helpful.
I have also started working on actual documentation. The docs are now located at http://wallworm.com/projects/utilities/docs/
Some of the other main changes is that you can set the tool to autocompile on export... you should read the docs to set that up.
Here is a list of changes I've added:
Version 0.92 released on 12-20-2010
Updated Use Local Origin as World Origin. Please see the entry.
Added Utilities Rollout
Added New Button to select the model objects in Utilities Rollout
Added New Button to select the model Collision Hulls in Utilities Rollout
Added New Button to Prepare a Mesh to be a Collision Mesh. This runs the same function as the Collisionmodel Prep Tool
Added new button to remove selected items from the model.
Added new button to remove selected items from the collision hull.
De-activated the "Make and Use Copy" function in the settings. As the tool is getting closer to completion, this option has lost its need.
Moved the Configure Tool button to the top of the About rollout.
Updated the tool's documentation link to go straight to the documentation table of contents.
Updated the tool's $collisionmodel line in the QC output. If the model has $staticprop set, the hull uses $collisionmodel. If $staticprop is not set, $collisionjoints is used instead. Animated collision hulls is still not available in WWMT.
Version 0.91 released on 12-19-2010
Added Auto Compile
Added support for loading multiple meshes to the main model, LODs and Collision Mesh.
Added Sequences Rollout
Added Model Name Field
Added Append Mesh and Add Selection buttons for the Pick Models Rollout.
Added Append CM and Add CM Sel buttons for Collision Models in the Pick Models Rollout.
Added Append LOD # and +Sel to LOD # buttons for LODS in the LOD List Rollout.
[ame]http://www.youtube.com/watch?v=z74zF4W1fVg[/ame]
The tool is now at version 0.95 with the following changes:
Version 0.95 released on 12-24-2010
- Added skinned mesh support. Now you can export meshes that are animated with bones and a skin modifier.
Version 0.94 released on 12-22-2010This is an important update that includes updates to the LOD metrics. The new features are not yet documented.- Updated and corrected LOD metric calculations! New LOD switches are more accurate. See following config additions.
- Added new LOD Metric Resolution menu to config floater. This new menu determines the resolution to use for calculating LOD switch distances. This is a preference setting. The default is now set to 1680x1050 because that is the most common sreen resolution according to Steam Hardware survey.
- New LOD Field of View (FOV) setting to use for calculating the LOD switch distance. This value, in conjunction with the LOD Metric Resolution control the calculation for the LOD values. The default is set to 75 which VDC reports as the FOV for HL2.
- Added some try...catch blocks to code to stop MAXScript errors when generating LODs based off of models that were animated with various position and rotation controllers.
Version 0.93 released on 12-21-2010•Added Texture Export functionality in the Utilities Rollout. Note the use is not well documented yet, including the setup of the exporter.
•Fixed bug in Tool Config for setting the material export path. Note that the feature was not being used previously, but setting the Material Directory in settings would override the model export path settings. This is now fixed.
•Added $shadowlod checkbox to export options rollout. When added and there are LODs, the tool uses the lowest level LOD as the shadow lod.
Please note that I didn't have time to add a lot to the texture compiling docs but there are some at http://wallworm.com/projects/utilities/docs/rollouts/utilities.html . Make sure to set up the tool's Bin Dir and Material Export Path in the Configure Tool floater... and Steam needs to be running. I'll update the docs this week.
Looks like exactly what I need for a project. And this is totally off subject but may be helpful to some here. Is there a scaling system to use in max to align correctly with source? Or it depends on the source game in question (in my case l4d2).
I like the idea behind a tool that helps automate the crazy process, I haven't taken it for a test drive yet, someday soon. Mostly because I'm a little sick of working with and around Hammer and Source. I seriously hope Valve has some super sexy tools that only they get to use, I couldn't imagine a company with those kinds of resources forcing their people to build and compile things like it was 1996 all over again. That would seriously bottle neck their pipeline and its probably one of the easier hurdles to tear down.
It's scary how much hasn't changed in the mod tools since HL1...
Mark... I agree. My assumption is that they do have something much more advanced than this tool; the question is, if they do, why haven't they released it to the public? Why offer the system openly to encourage people to develop with your tools... then make them jump through hoops to do it?
Anyway... I am nearing the completion of this project. I have some loose ends and cleanup left... but it is nearly complete.
I've just added two new help pages:
- Preparing Your Model
- Exporting Textures
When I've finished with this I plan on building a cubemap exporter to quickly make the 2d sky textures.Thanks but which max unit scale? I use cm (you know like most of the rest of the world does).
The unit setup is file specific so you don't have to worry about switching to Generic Units being a global setting across all your files. Only the files you set to Generic will stay that way.
I was refering to the default 3dsmax "Generic Units". It's the same in Unreal, 1 3dsmax Generic Unit = 1 UDK unit.
If you use a 4:1 textel ratio then thats 4 pixels for every unit.
If you're really interested in always working in cm, you should be able to switch it to generic units, create a measuring stick or a cube and switch back to cm to get a sense of how it all lines up. I think cm works out fine on the generic unit grid, but "US Standard" is off or is it the other way around... meh... run some test, diddle some numbers, make it work.
I always set the Max units to generic when working for Source. Then, for reference, I always make a 24x24x72 box that is about the size of an in-game player's bounding box... that helps me keep my designs at the right scale.
If the sky falls and I'm forced to move to another app... then it might happen. But for my own sake... I hope that never happens. I already spent a month and a half getting used to MAXScript so I could make it... I cannot justify spending more time to extend it to apps I don't have and learning their scripting languages.
Sorry
You are welcome as well!
For the most part I've tried to make the tool expedite everything. Almost everyone has been pretty excited... but there have been some people who don't understand the flow of it or feel it's too complicated. Perhaps the video is too long winded.
In any event, I am trying to add docs for each feature. I'll make short videos for each step/feature as I can get to them.
Here is the latest doc (no video yet) on the minimum steps to compile a model.
http://wallworm.com/projects/utilities/docs/using/export_static_prop.html
Also, there is a new minor update that removes an unused button and adds a little error checking to start/end frames of sequences.
PS. If anyone is having problems, please email me those problems. I've been trying to clean up some of the code and add some error checking... and those things that are most bothersome to the most people I'll try to address first. My attention is a little divided at the moment, but I'll get around to updates sooner or later.
exporting the model works perfectly - but when trying to export the texture - the error appears:
Problem figuring out outputdir for C:/Programs Files <x86>\Steam\steamapps\eli_roberto\team fortress 2\tf\materials/custom_hats/square_hat/square_hat
- it creates a tga and a batch file in the right folder but nthn else and i have steam open and everything...
any suggests?
got it working by compiling the tga outside of the tools in vftlib (not really solved) but it works for the moment...
- also tried it out in the new tf2 items test map and all seems okay (its just a cube w/ a diffuse texture for testing purposes)
my first fake item actually in game yahhooo! - thanks for making much moar streamlined and easier shawn!
This happens when the output folder doesn't exist. In this case, the path C:/Programs Files <x86>\Steam\steamapps\eli_roberto\team fortress 2\tf\materials/custom_hats/square_hat/square_hat does not exist at compile time... there are a few solutions:
- Make sure that path exists before running the exporter.
- Run 3ds as Administrator (might solve it)
- Run the batch file as administrator.
#1 is the best solution.Just to clarify for everyone, you'll need to create two (2) sets of folders for your models in the file system. The first is in the SDK ... set the target materials and models folders. The second is the matching folder paths in the game's final materials and models folders.
I suggest that you make a folder (or set of folders) that your model projects share so that you don't have to create the paths all too often. I personally would make the material paths in the tool something like custom_hats/square_hats (or in this case custom_hats/eli_roberto ) and always use that path in your own custom hat projects... that way you would have a common repositiory for your work, avoid namespace problems, and dont' have to continuously make folders when you make a new model.
I hope this makes sense. I'll expand the docs sometime soon.
Also, I added docs to go along with it at http://wallworm.com/projects/utilities/docs/using/generate_lods.html
[ame]http://www.youtube.com/watch?v=d9sStyB7SVY[/ame]
The one that Michael Little is building for Convexity will be more viable, however, since it is going to have some features specifically for use in WWMT that give you control over what's going on. I don't know when he'll have it ready, though. I know he's been pretty busy on the next version... which will include the Collision Hull tool to which I'm refering. His new version is supposed to come in a couple of flavors, including one that is free.
From all the emails I've gotten about WWMT in the last few months, I know how useful it is for many of you. I'm surprised that the same crowd isn't using Convexity more! Maybe the price? I know that I was hesitant to buy it when I first did... but I'm certainly glad I did. Hopefully when he's released the free version it will grow in user base... Just go to the video section on his site and watch the Side Wall Editor video and the Convexity Basics (they are a bit out-of-date from his current version but demonstrate some of the features)!
While I'm on here... is there any feature to WWMT that anyone feels is missing? The most common thing so far have been emails about handling gibs somehow. Also prop_data ... but I can't really think of ways to integrate them simply. One option I've thought of is just a big text field where you can type in any value that WWMT doesn't handle...
And just to ramble a little bit: I received an email from the great Jed Master a few weeks ago regarding his SMD exporter (I was bothering him with another feature request). I was asking for something that would make the usage of Max's Render to Texture Auto Unwrap more automated in the WWMT workflow. He said it "might work for a mapper wanting to make a quick and dirty prop but to be honest, no modeller worth his salt will use it."
That stuck with me and forced me to spend some time learning more proper UVW habits. So I wanted to share a couple useful videos that helped me tremendously with my recent quest to fill a level with my own models that are not just "quick and dirty" texturing.
- Ted Boardman introduces Unwrap UVW
- Sascha Henrichs' Unwrapping a Stone
I know the links are random... but of the videos I've watched lately, they were very good for someone (like me) who never really spent as much time as he should learning the texturing aspect. (or, like me, is self-taught...)And, though I'm certain everyone here already has and uses them, I've come to find Renderhjs's Textools invaluable in the modeling projects I'm working on.
Anyway, these things aren't all related to WWMT directly, but they are precursors to good models that you would use WWMT to export. I thought they'd be good resources for some of you.
Version 0.984 released on 02-01-2011
- Added new LOD Camera functions in the Utilities rollout. Documentation not yet loaded. What you can do is view the model with this camera, and it will change the LOD mesh based on the distance and your current LOD switch distances as you move the camera around. This helps you get an idea if the mesh resolution is too dense/sparse and how the textures work as you move in and out.
- Fixed UI bug where the last LOD in the LOD list would not fill details for LOD upon creation or reloading.
- Added Show/Hide Collision Mesh buttons in the Utilities Rollout.
- Made a change in the LOD generator procedure. Previously, LOD models were "frozen" upon creation. That no longer happens. They are still hidden at generation time, but can now be selected when unhid. This was important to make it easier to run the "Generate" for the MultiRes modifier of each in animated models. It was also necessary to make the new LOD Camera more useful so that textures can show up.
I didn't have time to test it in anything other than Max 2011. I'm assuming this works fine back to 2008 but won't know for sure until I test it later in the week.Here is the new LOD camera.
[ame]http://www.youtube.com/watch?v=XLSDpKdWZoE[/ame]
Version 0.986 released on 02-07-2011
Added Attachment Rollout.
Added UI entry for WWMT to create button in toolbar or menu. Installer is now in the Settings floater.
Fixed a MAXScript error when reloading a model that has LODs.
Fixed MAXScript error that occured in Generating LODs in older versions of Max.
Fixed texture exporter ui bug where the names of bitmaps were sometimes not shown.
Removed the title rollout and moved WWMT logo to About Section.
Added new Help links in some rollouts.
Replaced credits in tool to links for credits because UI is starting to fill up.
Removed some more of the items printed to the MAXScript listener when files structs are loaded.
Added more informative responses when various errors occur (like when exporting textures fail).
The $attachments feature is a productive new addition. I'm sure that the second item for adding WWMT to the UI is useful... as it's something I've gotten a lot of emails about.
I added brief docs on the attachment tools... will load more when I get time.
Fixed bug where the collision hull was not animating with the bones designated in the mesh's skin modifier in models that only had one collision hull. Note that this was introduced in the 0.987 fix that addressed the 'EXCEPTION_ACCESS_VIOLATION' (assert: 1) compile problem (see below). Now both issues are resolved.
Version 0.987 released on 02-08-2011
Fixed bug when trying to export a model that had multiple collision hull objects and also using the $masscenter gizmo. This bug was causing the following compile error: 'EXCEPTION_ACCESS_VIOLATION' (assert: 1).
Fixed bug when picking a pre-existing model that was previously given an $attachment that was not given a parent bone.
Fixed bug when picking a pre-existing model that was previously given a collision hull which was then deleted from the scene.
Added $contents selection.
Added $inertia for collision hulls.
Added $damping for collision hulls.
Added $drag for collision hulls.
Replaced credits to Michael Little and Jed since the UI still has space for it.
I'll be updating the docs pages with more up-to-date ui icons and tutorials on usage over the next few days.
Added support for Cannonfodder's SMD exporter. To use, make sure you download Version 2.04 or later. Note that version 2.04 is not yet available on Cannonfodder's site... but when he has released the new version you will be able to use it with WWMT.
Added new Settings controller to choose which SMD exporter you want to use. You can now choose between the Wunderboy Exporter or Cannonfodder's exporter. The default is the Wunderboy exporter.
Updated Texture exporter to create the paths to the material export if MAXScript can write to the directories.
Updated texture export error checking to give more informative explanations for errors.
Added new model export checks for folder paths. WWMT will then try to create the path. If the export path for a model does not exist, the exporter will fail and prompt you to make that path.
Added new model export checks for materials on models and collision hulls. If there are not materials, the export will fail and prompt you to add materials.
Other changes include updated docs including a new one on Compile Errors.
Version 0.991 released on 02-15-2011
- Added Auto Hull to Collision Hull & Physics Rollout. When checked, the tool does not make a separate collision hull SMD. The QC then uses the root model SMD for the collision hull.
- Added Process CM to Collision Hull & Physics Rollout. When checked, each mesh and Element of each mesh is given a unique smoothing group. Needed if you want $concave and haven't prepared the mesh. Each mesh in collision hull is also given a material with a diffuse Bitmap and made non-renderable.
- Fixed UI bug where some collision rollout items were not activating until after the collision hull was picked.
Version 0.99 released on 02-14-2011NOTE: The 0.99 Update makes significant changes to the UI of Wall Worm Model Tools. The documentation may not reflect all these changes!