Wall Worm 2.4 Release Notes

Started by wallworm, December 29, 2014, 08:53:45 PM

Previous topic - Next topic

wallworm

Wall Worm 2.4 is being finished up. It's not yet loaded to the main download, but if you want to take advantage of it, you can download it now here:

Wall Worm 2.4 Dev Download

Before you install, please read this entire page!

This update is very drastic. In some ways, it's as drastic as the 2.0 release of Wall Worm earlier this year. There are a giant number of updates, enhancements, fixes and changes. There has been a lot of testing going into this update, but because of the number of changes it is quite possible that there may be bugs in the preview. If you encounter an error or bug, please make sure to post the steps that you took to get the error along with any error messages (like those in the MAXScript listener which you can view with F11).

Below is a partial list of changes in WW 2.4.

Version 2.4 Preview

   * Wall Worm Pro (WW Pro) supported integrated.

   * SMD Exporter: Optimizations for SMD output to truncate small decimal values.

   * SMD Exporter: Updated standalone SMD Exporter to control what nodes export as geometry and what nodes export only as bones.

   * SMD Exporter: When WW Pro is installed, exporting skinned models or explicit normals is now extremely fast.

   * WWMT: Updated WWMT to allow exporting of models that have multiple Morphed objects in a WWMT setup. This means that you can have a morphed object (such as a head) included in a larger hierarchy (such as entire player character).
   
   * WWMT: added new properties to include multiple WWMT models as $include or as $model with the export of the parent WWMT.
   
   * WWMT: Fixed bug in the WWMT UI that was always compiling the QC even if the user only clicked the Write SMDs button.

   * WWMT: Updated WWMT to no longer automate $jigglebone data from the IK when $jointconstrain is turned on. Now the user must set the Jigglebone properties explicitly, which are in the new Bone Custom Attribute (see below).
   
   * WWMT: Added $eyeposition helper.
   
   * WWMT: Added Eyes to WWMT modify tab.
   
   * Displacements: Updated Sculpt Mesh commit function to work far faster than previously worked. In tests, a sculpt mesh composed of 1800+ Power 2 displacements committed in 30 seconds. Before this update, the commit took 10 minutes.

   * VMF Exporter: Updated the exporter to not start writing to the VMF until the output contents are fully ready. This alleviates a file lock if the exporter encounters some unexpected exception.
   
   * VMF Exporter: Optimized many functions to work faster and more efficiently.
   
   * VMF Exporter: When WW Pro is installed, exports up to 40% faster.

   * FGD: When WW Pro is installed, the FGD parser and entity cache function now takes only a few seconds to run.

   * Material Library Generator: When WW Pro is installed, entire libraries can be imported in a couple minutes instead of hours.
   
   * Materials: Fixed bug in the MACROScripts for adding WW Material Custom Attributes to scene objects or to materials in the material editor that occurred when running the macroscripts before some other functions in Wall Worm were already called (often making the scripts fail on the first run).
   
   * Assets: Optimization to the asset collection functions. Making a RES File from a large scene is now much faster.

   * SMD Importer: Fixed problems with Skin Weights.
   
   * SMD Importer: Now only makes one mesh per SMD regardless of the material count.
   
   * SMD Importer: Fixed bug when importing an SMD that has staggered node IDs ranges.
   
   * VTA Importer: Added VTA importer to the SMD/QC importer. Now you can import a standalone VTA file. Also, VTA files found in the QC will be imported in the QC importer.
   
   * QC Importer: Added the following properties to import from a QC that previsouly did not import: $definebone , $alwayscollapse, $jigglebone (and all properties of jigglebones), $joingconstrain limits, $weightlist, $attachement, $hbox, $hboxset, $skipjoint, $rootbone, $root, $eyeposition, eye, Flexfiles, $illumposition, $masscenter. Also, if $origin is found, the vertices will be offset accordingly. ($origin support in the importer is not yet widely tested.)
   
   * QC Importer: Fixed frame offset in $sequence import.
   
   * QC Importer: Fixed the importer not assigning $sequence lines to the WWMT helper after imported.
   
   * Entities: Optimized some entity functions to work a little faster.
   
   * Entities: When using WW Pro, entity functions are consolidated to use less memory.
   
   * Bone Tools: Updated Bone properties to be stores in custom attributes instead of in propData. Added several new properties that can be stored.
   
   * Bone Tools: Updated Hitbox functions to both export and import correctly.
   
   * Bone Tools: Moved all Jigglebone data into the new bone properties custom attribute.
   
   * VMT Importer: Optimized VMT importer to use less resources and work faster. When WW Pro is installed, it is even faster.
   
   * Settings: Fixed bug in Max 2012 where the SMD exporter was always defaulting to a legacy SMD exporter.



As you will notice, there are several items that relate to Wall Worm Pro. At this time we have opened up pre-release sales of Wall Worm Pro in WW Pro page. By purchasing WW before it is released, you'll get a complimentary copy of CorVex. By purchasing WW Pro you help support the development of the Wall Worm toolset.

BadCRC

I have used the new version to import Male_06_reference.smd but I get an error.  I have tried other SMD's with the same error.  If you try to import another it won't let you just hear an error sound effect.  You have to restart Max.  Let me know if you need any other info or tests.

The image shows the error.  The Code shows the MaxScript Listener error. 



Welcome to MAXScript.

"D:\Steam\steamapps\bad\sourcesdk_content\hl2\modelsrc\humans_sdk\Male_sdk\Male_06_reference.smd Imported"
This is not a valid Node: #($PolyMesh:Male_06_reference001 @ [0.000000,0.000000,0.000000])
-- Error occurred in addObjToObjects(); filename: D:\Autodesk\dev_wallworm_model_tools\WallWorm.com\WallWormModelTools\ww_structs.ms; position: 39109; line: 1452
--  Frame:
--   recurse: false
--   startingCount: 0
--   obj: #($Male_06, $ValveBiped.Bip01, $ValveBiped.Bip01_Pelvis, $ValveBiped.Bip01_L_Thigh, $ValveBiped.Bip01_L_Calf, $ValveBiped.Bip01_L_Foot, $ValveBiped.Bip01_L_Toe0, $ValveBiped.Bip01_R_Thigh, $ValveBiped.Bip01_R_Calf, $ValveBiped.Bip01_R_Foot, $ValveBiped.Bip01_R_Toe0, $ValveBiped.Bip01_Spine, $ValveBiped.Bip01_Spine1, $ValveBiped.Bip01_Spine2, $ValveBiped.Bip01_Spine4, $ValveBiped.Bip01_Neck1, $ValveBiped.Bip01_Head1, $ValveBiped.Bip01_L_Clavicle, $ValveBiped.Bip01_L_UpperArm, $ValveBiped.Bip01_L_Forearm, ...)
--   added: true
--   called in msh loop; filename: D:\Autodesk\dev_wallworm_model_tools\WallWorm.com\rollouts\SMDImport.ms; position: 13932; line: 296
--  Frame:
--   msh: #($Male_06, $ValveBiped.Bip01, $ValveBiped.Bip01_Pelvis, $ValveBiped.Bip01_L_Thigh, $ValveBiped.Bip01_L_Calf, $ValveBiped.Bip01_L_Foot, $ValveBiped.Bip01_L_Toe0, $ValveBiped.Bip01_R_Thigh, $ValveBiped.Bip01_R_Calf, $ValveBiped.Bip01_R_Foot, $ValveBiped.Bip01_R_Toe0, $ValveBiped.Bip01_Spine, $ValveBiped.Bip01_Spine1, $ValveBiped.Bip01_Spine2, $ValveBiped.Bip01_Spine4, $ValveBiped.Bip01_Neck1, $ValveBiped.Bip01_Head1, $ValveBiped.Bip01_L_Clavicle, $ValveBiped.Bip01_L_UpperArm, $ValveBiped.Bip01_L_Forearm, ...)
-- Error occurred in btnImportSMD.pressed(); filename: D:\Autodesk\dev_wallworm_model_tools\WallWorm.com\rollouts\SMDImport.ms; position: 13953; line: 298
--  Frame:
--   mshes: #(#(<Deleted scene node>), #(<Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, <Deleted scene node>, ...))
--   tempWWMT: (ww_LOD_wrapper modelName:"modelname" isset:false alwayscollapse:false collapsebones:false target:undefined targets:#() hulls:#() bonesarray:#() hullbonesarray:#() autoHull:false modelSetName:undefined physSetName:undefined lods:#() locked:false layer:"WW Model Tools Layer" phys:undefined lodgroup:undefined modelPath:undefined materialPath:undefined surfaceprop:undefined staticprop:false ambientboost:undefined constantdirectionallight:undefined opaque:undefined mostlyopaque:undefined illumorigin:undefined mass:undefined automass:undefined concave:undefined contents:undefined inertia:undefined damping:undefined rotDamping:undefined jointConstraints:undefined phdrag:undefined animatedfriction:undefined masscenter:undefined massorigin:undefined mscale:1 noselfcollisions:false useLocalOrigin:true refSystem:undefined altOrigin:false shadowlod:undefined expHL1Format:false idleSequence:true sequences:#() sequencelist:#() weightlistnames:#() weightlists:#() particlesystems:#() ORIGIN:undefined bitmaps:#() materials:#() cam:undefined camMode:false attachmentlist:#() attachments:#() base:"" health:undefined allowstatic:undefined physicsmode:undefined blockLOS:undefined AIWalkable:undefined dmg_bullets:undefined dmg_club:undefined dmg_explosive:undefined ignite:undefined explosive_resist:undefined flammable:undefined explosive_damage:undefined breakable_model:undefined breakable_count:undefined breakable_skin:undefined multiplayer_break:undefined explosive_radius:undefined fadetime:15 motiondisabled:undefined gibs:#() bodygroups:#() morphasvta:true shaderType:"VertexLitGeneric" mapChannel:1 range:#(0) compression:"DXT5" referenceNode:undefined offsetFaces:false lockInitialOrigin:false normalMethod:3 internalOrigin:true rotateRefsystem:false alreadyExported:#() dmx:false proxies:#() isXref:false)
--   vtanode: undefined
--   fsource: "D:\Steam\steamapps\bad\sourcesdk_content\hl2\modelsrc\humans_sdk\Male_sdk\Male_06_reference.smd"
--   fileType: ".smd"
--   timeoffset: 0
--   doImport: true
>> MAXScript Rollout Handler Exception:
-- Unknown property: "targets" in undefined <<

wallworm

Thank you for this info.

Could you post the settings that are in the SMD Importer UI also?

Furthermore, if Max appears to need restarted because it's got a weird lag or not allowing the modify tab, you can usually fix this by entering this into the MXS listener, entering one line at a time and hitting enter:

wallworm_klunk_ToggleMaxRedraw 1
resumeEditing()


BadCRC

Just did some more testing.  Looks like error is with the SMD import.  When you import using a QC file with bare minimum settings it works.  Looks like the weights are mapped properly.  Here is the QC file I used./*
==============================================================================

male06

==============================================================================
*/


$modelname sdk\Humans\male_06_sdk.mdl
$cdmaterials sdk\models\Humans\Male

$model male_06 "male_06_reference.smd"

wallworm

Well that's good to know. It probably relates to one of the settings that can delete unweighted bones, forces unique names, etc. I'll figure it out.

BadCRC

#5
Here are the settings that is in the SMD Importer UI.  I tried the Listener commands but they did not work.  The solution is to close the Importer window then reopen it and it will work again.

BadCRC

The new SMD & QC Importer(version 1.7) merges individual meshes into one one mesh.  Is this intentional? 


Version 1.6 left meshes separate.  This is the preferred method.

wallworm

The method used in the previous SMD importer has several flaws. Among them was bad weighting for the skin. Consolidating the mesh solved the skin weights as well as made VTA importing possible. The previous method broke up the mesh based on the Material, which probably doesn't make a lot of sense relating to the actual node data anyway. It just created some convenience in some models where the arms might be one material, the head another, etc, creating separate meshes with those.

In the newer import, you can plop an Edit Poly and select by Material to get the elements that existed previously.

It may be possible to add node separation in the future, but it won't be the same method as 1.6 and older because the material splitting breaks the vertex/face ordering needed to keep the skin weights and vta>morph data intact without creating unwieldy and slow data arrays during the import.

BadCRC


BadCRC

New issue with the importer.  It looks like when you import an animated model it messes up the weights or something.  Here is an example of the Male_06_reference.smd again on frame 1 of "CrouchIdle_D_toShoot" anim.  You can see how the knee is deformed.  Also in the second image the sleeves are rolled up.  My own model has this issue also.  What do you think is happening?



wallworm

Can you explain the exact set of steps you took to generate this. My guess is that the model was already in the scene then the QC importer was run again? If that is the case, then it might not work as expected. You should only import the QC + additional libraries at one time. Importing a QC after the QC was already imported hasn't been tested--only importing individual animation SMDs after the fact.

If that isn't the scenario, please post the steps.

BadCRC

It was all in one step.  I posted the the settings in my last post(3rd pic).  Used the "...\humans_sdk\Male_Animations_sdk" as the Sequence Folder, checked Animated Model and imported a bare minimum QC file:

$modelname sdk\Humans\male_06_sdk.mdl
$cdmaterials sdk\models\Humans\Male
$model male_06 "male_06_reference.smd"


Everything else was left default.  That's it.

wallworm

OK, I'll look into this problem for the next beta. It might be out this weekend.

wallworm

So I've done several tests and I now see what is happening. The problem is that some of the SMDs included in that list are missing some bones in their hierarchy. In this case, those sequences that are messed up often don't include the Wrist or Foot bones. This causes havoc on the import.

It's really looking like bad data. I'm not sure I will be able to fix it or not. If not, those sequences that come in bad because of this error will need manual attention.

I have got the next beta almost ready that does fix several problems with the SMD importer, including weight problems when a face isn't weighted to any extra bones in the SMD, as well as missing Hulls in jointed collision models imported from the QC. I've also got several new auto features in the QC import, including naming Morph targets from the flex frame data, adding time tags, and looking for included files that are listed relatively in the QC (meaning that the animation sequences in that QC probably won't need you to enter the Extra Sequence Folder).  I'm currently testing adding animation layers to the import as well... as I've intended to add animation layers to the WWMT exporter too.

wallworm

#14
A new Beta is now out with some of the features mentioned in the post above.

WW 2.41 Beta

Please report any bugs. We found a couple bugs and immediately overwrite the update. So if you downloaded after this post was made and before reading this notice, you should download it again.

SMF spam blocked by CleanTalk