• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

NeoDex 2.7 Wc3 Modeling Kit for 3dsmax & GMAX

Level 17
Joined
Jan 18, 2010
Messages
1,122
Hello again ! I was looking into something and I wondered, for Tvertex anim you suggest using an uvw modifier and animating the gismo.
But would it export an animated unwrap ? As in lets say a 10x10 plane with distortion in the middle to for example animate cloth flapping in the wind or underwater refraction ?
It would be cool for some things (like the mentioned cloth or water refractions) like animating only a part of the wrap to for example make some part on a creep's texture to move maybe some eyes/orifices opening bubbling/rippling skin etc.
 
Hello again ! I was looking into something and I wondered, for Tvertex anim you suggest using an uvw modifier and animating the gismo.
But would it export an animated unwrap ? As in lets say a 10x10 plane with distortion in the middle to for example animate cloth flapping in the wind or underwater refraction ?
It would be cool for some things (like the mentioned cloth or water refractions) like animating only a part of the wrap to for example make some part on a creep's texture to move maybe some eyes/orifices opening bubbling/rippling skin etc.

Well first the answer is yes it can but there are two important things.

1st That feuture is getting deprecated. I'll change it for animations in the offset, rotation and tiling values of a Bitmap, which is more precise and less confusing. Plus I'm changing that because I want NeoDex to asssimilate more to Sc2's Art tools in order to later make a fast converter. (inmediate wc3 to sc2 conversion ftw)

2nd in order to animate an specific part, you must make it into a single geoset.

Btw, do you have time for testing? i'm a bit struggling right now to get the importer functioning correctly, but damn rotation animations are killing me.
 
So the function won't be supported in later updates ? Or it will be changed but it could achieve similar results ?

And yeah, sure.

using animated gizmos in UWV Map will be unsupported. It will be changed for animating Bitmap parameters which is precise to how the model will look in-game.
 

There is no default controller setting for massfx and the default controller setting in max is set to TCB Float.
But the object still has a psoition list with a position X/Y/Z controller.

There was a guy here who actualy exported reactor generated physics collision objects like destroying break walls. Maybe it was Tavalaj or BallisticTerrain, but I'm not sure. I've only used reactor for cloth simulation.

I'll give it a check, how about it?
 
Level 1
Joined
Sep 7, 2013
Messages
4
Hello! I met a problem that the exporter did not export the *.blp files, and the only two warnings I got were imbalanced weight and missing start/end keys. It didn't say anything about material exports.

I did use Warcraft 3 material in the Material Editor, and it worked in wc3 renderer. I also tried Art Tools instead of NeoDex on Max 5, and the Art Tools exporter exported *.blp correctly.

I had tested max 2011 and max 2014, using NeoDex 2.5, but it still didn't give me the *.blp file. Could anyone help me with it? I really don't wanna go back to Max 5...
 
Level 17
Joined
Jan 18, 2010
Messages
1,122
@Frotty, is it a rigid body object ? Convert it with Vertex anim converter then delete ALL bones but one and assign all vertices to that one and see how it goes.
I believe you can greatly optimize rigid body reactions like that and it should still look similar enough. (well obviously it will destroy certain things like rotation.. but hey it will be much smaller filesize)

I have exported ton of crap with Neodex, Havok 1 & 3 Rigid, Soft body, havok water (not the actual water just the reacting objects, water is a space warp that I can't really export), max cloth, noise all using VA converter.
Tobyfat50 introduced me to havok, I believe he exported the anims using art tools, uncertain how because I never really managed to export them without baking the vertex animation.
The only really wonky thing is max cloth which bugs up often.
 
Last edited:
Hello! I met a problem that the exporter did not export the *.blp files, and the only two warnings I got were imbalanced weight and missing start/end keys. It didn't say anything about material exports.

I did use Warcraft 3 material in the Material Editor, and it worked in wc3 renderer. I also tried Art Tools instead of NeoDex on Max 5, and the Art Tools exporter exported *.blp correctly.

I had tested max 2011 and max 2014, using NeoDex 2.5, but it still didn't give me the *.blp file. Could anyone help me with it? I really don't wanna go back to Max 5...

you must use BLP Lab (link in the main thread) I prefer that you convert your blps yourself than auto generating them, since this tools are better for that.
 
Level 1
Joined
Sep 7, 2013
Messages
4
you must use BLP Lab (link in the main thread) I prefer that you convert your blps yourself than auto generating them, since this tools are better for that.
Thank you very much for replying! I thought NeoDex is like Art tools that auto generate the blp.... I had searched "material" in this thread for a whole hour! Why don't I just search "blp" instead!? Man, I feel so dumb now...

I also found a little bug in Max 2014. All of the plugins crashed when I restarted Max, but reinstall could solve it perfectly. Here's the log in listener if you were interested.

-- Error occurred in anonymous codeblock; filename: C:\Users\draocgideon\AppData\Local\Autodesk\3dsMax\2014 - 64bit\ENU\usermacros\NeoDex Toolkit-NeoDex_Exporter.mcr; position: 13759; line: 648
-- Frame:
-- progressShowItem: progressShowItem()
-- Wc3Attachment: StructDef:Wc3Attachment
-- IsParticleEmitter: undefined
-- getFaces: undefined
-- writeMDLFlag: undefined
-- resetLevel: undefined
-- tag_KMTA: undefined
-- tag_GEOA: undefined
-- tag_KATV: undefined
-- tag_EVTS: undefined
-- writeMDXColor: undefined
-- InitiateErrorCategory: undefined
-- PositionKeysTVertex: undefined
-- VisibilityKeys: undefined
-- GetTextureAnimation: undefined
-- CalculateBoundsRadius: undefined
-- applySyntheticSkin: undefined
-- writeMDXMaterials: undefined
-- progressInitiate: progressInitiate()
-- Wc3Texture: StructDef:Wc3Texture
-- Wc3GeosetAnim: StructDef:Wc3GeosetAnim
-- QuatMult: QuatMult()
-- Dictionary: StructDef:Dictionary
-- maxVal: undefined
-- getTVFaces: undefined
-- TripletToString: undefined
-- Point3ToString: undefined
-- writeMDLSection: undefined
-- tag_VERS: undefined
-- tag_PCNT: undefined
-- tag_KLAC: undefined
-- tag_KP2S: undefined
-- tag_KP2R: undefined
-- tag_RIBB: undefined
-- writeMDXPoint3: undefined
-- FinishChunk: undefined
-- TCBKeys: undefined
-- checkStartEndKeys: undefined
-- GetTransformations: undefined
-- ColorParameterProcess: undefined
-- getGravityByBinding: undefined
-- cleanMatrices: undefined
-- LoadTexture: undefined
-- writeMDLSequences: undefined
-- writeMDXTextureAnims: undefined
-- writeMDXHelpers: undefined
-- Wc3Sequence: StructDef:Wc3Sequence
-- Wc3Geoset: StructDef:Wc3Geoset
-- Wc3Bone: StructDef:Wc3Bone
-- I2B: I2B()
-- ArrayMap: ArrayMap()
-- IsParticleEmitter2: undefined
-- boundsCollide: undefined
-- IOFixColor: undefined
-- tag_KTAT: undefined
-- tag_KGTR: undefined
-- tag_KPEE: undefined
-- tag_KCTR: undefined
-- writeMDXLong: undefined
-- jumpMDXReading: undefined
-- ParameterValue: undefined
-- AnimationData: undefined
-- BezierInTan: undefined
-- ScaleKeys: undefined
-- VisibilityType: undefined
-- IKRefineKeys: undefined
-- IsColorAnimated: undefined
-- mergeExtents: undefined
-- LoadTvertexAnims: undefined
-- LoadTextures: undefined
-- LoadLayer: undefined
-- LoadLayers: undefined
-- writeMDXAnimateableParameter: undefined
-- writeMDXLayers: undefined
-- writeMDXRibbonEmitters: undefined
-- creditsRoll: undefined
-- Wc3ParticleEmitter2: StructDef:Wc3ParticleEmitter2
-- getBillboard: undefined
-- setUsesBake: undefined
-- minPoint: undefined
-- BillboardToString: undefined
-- tag_GLBS: undefined
-- tag_MTGC: undefined
-- tag_KLBC: undefined
-- tag_KRAL: undefined
-- writeMDXTVertex: undefined
-- readMDXFace: undefined
-- readMDXTime: undefined
-- PositionKeysBiped: undefined
-- RotationType: undefined
-- FakeMesh: undefined
-- IsGeosetAnimated: undefined
-- CalculateExtents: undefined
-- DoGeosetTweaks: undefined
-- GetImageArray: undefined
-- writeMDLGlobalSequences: undefined
-- writeMDLTextures: undefined
-- OutputMDX: undefined
-- progressUpdateItem: progressUpdateItem()
-- round: round()
-- ArrayCompare: ArrayCompare()
-- OptimizeArray: OptimizeArray()
-- ArrayFilter: ArrayFilter()
-- ArrayConcat: ArrayConcat()
-- HierarchyFilter: HierarchyFilter()
-- gmax: undefined
-- IsRibbonEmitter: undefined
-- setCameraAnchored: undefined
-- TvertexToString: undefined
-- CloseIOLevel: undefined
-- tag_GEOS: undefined
-- tag_BONE: undefined
-- tag_KPEL: undefined
-- tag_KP2E: undefined
-- ControlToInt: undefined
-- printError: undefined
-- LoadGlobalSequence: undefined
-- LoadGeoset: undefined
-- LoadParticleEmitter: undefined
-- mergeGeosets: undefined
-- writeMDLParticleEmitters: undefined
-- writeMDXFile: undefined
-- mainroll: undefined
-- progressUpLevel: progressUpLevel()
-- Wc3CollisionShape: StructDef:Wc3CollisionShape
-- PowQuat: PowQuat()
-- RotatePoint: RotatePoint()
-- DoubleV: StructDef:DoubleV
-- getBakeInterp: undefined
-- GetParents: undefined
-- ColorToString: undefined
-- writeMDLComment: undefined
-- writeMDLKey: undefined
-- tag_KMTF: undefined
-- tag_UVBS: undefined
-- tag_ATCH: undefined
-- tag_KRVS: undefined
-- errorReporterHasErrors: undefined
-- KeyData: undefined
-- GetRotBiped: undefined
-- EventProcess: undefined
-- DoSyntheticSkin: undefined
-- LoadMaterial: undefined
-- writeMDLParticleEmitters2: undefined
-- writeMDLFile: undefined
-- writeMDXBones: undefined
-- neoDexVersion: ".5"
-- Wc3Camera: StructDef:Wc3Camera
-- ArrayFindItemEx: ArrayFindItemEx()
-- HierarchyAddNode: HierarchyAddNode()
-- IsMesh: IsMesh()
-- IsAttachment: undefined
-- IsLight: undefined
-- getUnselectable: undefined
-- minVal: undefined
-- maxPoint: undefined
-- addCopyKey: undefined
-- gatherSmoothGroupData: undefined
-- Point2ToString: undefined
-- tag_MDLX: undefined
-- tag_PTYP: undefined
-- tag_KLAE: undefined
-- tag_PRE2: undefined
-- tag_KP2V: undefined
-- writeMDXShort: undefined
-- IKChainsBones: undefined
-- getKeysFromObject: undefined
-- getIKId: undefined
-- readSequenceData: undefined
-- writeMDLAnimation: undefined
-- writeMDLEvents: undefined
-- writeMDXSequences: undefined
-- writeMDXGlobalSequences: undefined
-- writeMDXGeosets: undefined
-- main: undefined
-- progressFinalize: progressFinalize()
-- MxLife2W3Life: MxLife2W3Life()
-- QuatSub: QuatSub()
-- AngleBetweenQuat: AngleBetweenQuat()
-- DictionaryAddEntryData: DictionaryAddEntryData()
-- setWc3Skin: undefined
-- getKeysWithinInterval: undefined
-- getTVFacesOld: undefined
-- breakUnwrapFast: undefined
-- isSmoothAnim: undefined
-- swrite: undefined
-- IntegerPoint3ToString: undefined
-- ControlToString: undefined
-- StringWithColomms: undefined
-- tag_TXAN: undefined
-- tag_KGAC: undefined
-- tag_PREM: undefined
-- tag_CAMS: undefined
-- readMDXColor: undefined
-- peekMDXHeader: undefined
-- ProcessBezier: undefined
-- PositionType: undefined
-- RotationKeys: undefined
-- RotationIKKeys: undefined
-- FloatKeys: undefined
-- FloatParameterProcess: undefined
-- InitiateAnimationData: undefined
-- LoadSequences: undefined
-- LoadRibbonEmitter: undefined
-- writeMDLCollisionShapes: undefined
-- animChunk: undefined
-- Wc3Model: StructDef:Wc3Model
-- F2WI: F2WI()
-- relativeFactor: relativeFactor()
-- IsCamera: IsCamera()
-- IsEventObject: undefined
-- ArrayToString: undefined
-- ParticleFiltermodeToString: undefined
-- tag_SEQS: undefined
-- tag_GNDX: undefined
-- tag_KLBI: undefined
-- tag_KRHB: undefined
-- writeMDXPoint3Long: undefined
-- SmoothKeyData: undefined
-- getSubControl: undefined
-- getGoalDistance: undefined
-- writeMDLAttachments: undefined
-- writeMDLCameras: undefined
-- writeMDXVersion: undefined
-- MDLObject: StructDef:MDLObject
-- F2WS: F2WS()
-- getAnimationIntervals: undefined
-- checkExtents: undefined
-- MaxMaterialAlphaToWc3Alpha: undefined
-- tag_KTAS: undefined
-- tag_KGSC: undefined
-- tag_KPLN: undefined
-- tag_KP2G: undefined
-- tag_CLID: undefined
-- writeMDXFloat: undefined
-- writeMDXPosition: undefined
-- P2E: undefined
-- ColorKeys: undefined
-- FakeObject: undefined
-- LoadCollisionShape: undefined
-- writeMDLFloatParameter: undefined
-- writeMDLHeader: undefined
-- writeMDLTextureAnims: undefined
-- writeMDLMDLObj: undefined
-- writeMDLBones: undefined
-- writeMDLLights: undefined
-- writeMDLRibbonEmitters: undefined
-- Wc3Helper: StructDef:Wc3Helper
-- Wc3Event: StructDef:Wc3Event
-- F2R: F2R()
-- IsCollisionShapeGmax: IsCollisionShapeGmax()
-- splitBySmoothGroup: undefined
-- newIOLevel: undefined
-- tag_LAYS: undefined
-- tag_UVAS: undefined
-- tag_HELP: undefined
-- tag_KRTX: undefined
-- writeMDXFlags: undefined
-- writeMDXExtents: undefined
-- readMDXTvertex: undefined
-- reportError: undefined
-- isObjectConstrained: undefined
-- FakeMaterial: undefined
-- IsIgnorable: undefined
-- ObjectChecker: undefined
-- LoadLight: undefined
-- LoadParticleEmitter2: undefined
-- LoadCamera: undefined
-- GetImageFile: undefined
-- writeMDLTransformations: undefined
-- writeMDLPivotPoints: undefined
-- writeMDXAnimation: undefined
-- writeMDXAnimations: undefined
-- writeMDXTextures: undefined
-- writeMDXNode: undefined
-- writeMDXAttachments: undefined
-- writeMDXPivotPoints: undefined
-- writeMDXParticleEmitters: undefined
-- progressDownLevel: progressDownLevel()
-- Wc3TvertexAnim: StructDef:Wc3TvertexAnim
-- SumQuat: SumQuat()
-- ArrayMakeUnique: ArrayMakeUnique()
-- ArrayAppendUnique: ArrayAppendUnique()
-- HierarchyFindElement: HierarchyFindElement()
-- objectBoundsCollide: undefined
-- getKeysOnSequences: undefined
-- getKeysOnSequences2: undefined
-- getFaceElements: undefined
-- writeMDLTVertex: undefined
-- writeMDLSingleValue: undefined
-- tag_NRMS: undefined
-- tag_KLAS: undefined
-- tag_KPEV: undefined
-- tag_KP2W: undefined
-- writeMDXHead: undefined
-- writeMDXQuaternion: undefined
-- InitiateChunk: undefined
-- readMDXString: undefined
-- readMDXPosition: undefined
-- IKChainsKeys: undefined
-- GetAnimationData: undefined
-- LoadBone: undefined
-- AssignObjectId: undefined
-- LoadObjects: undefined
-- writeMDLGeosets: undefined
-- writeMDLGeosetAnims: undefined
-- writeMDXGeosetAnims: undefined
-- Wc3Material: StructDef:Wc3Material
-- Wc3RibbonEmitter: StructDef:Wc3RibbonEmitter
-- B2I: B2I()
-- DictionaryGetEntryData: DictionaryGetEntryData()
-- IsWc3Material: IsWc3Material()
-- setUnselectable: undefined
-- SetOutStream: undefined
-- ParticleTypeToString: undefined
-- writeMDLExtents: undefined
-- tag_MTLS: undefined
-- tag_KGAO: undefined
-- tag_PIVT: undefined
-- tag_KEVT: undefined
-- writeMDXString: undefined
-- posStamp: undefined
-- readMDXFloat: undefined
-- InitiateErrorReporter: undefined
-- getAngleofGoalChange: undefined
-- ScaleType: undefined
-- FloatType: undefined
-- ColorType: undefined
-- GetAnimationDataBiped: undefined
-- _ProcessSingleValue: undefined
-- VisibilityParameterProcess: undefined
-- LoadAttachment: undefined
-- LoadEvent: undefined
-- LoadWc3Object: undefined
-- areGeosetsSimilar: undefined
-- sortMatrices: undefined
-- LoadGeosetAnims: undefined
-- writeMDLColorParameter: undefined
-- Wc3Light: StructDef:Wc3Light
-- F2I: F2I()
-- DotQuat: DotQuat()
-- CheckLock: CheckLock()
-- setBillboard: undefined
-- breakUnwrapMap: undefined
-- ColorToString2: undefined
-- writeMDLPoint: undefined
-- writeMDLSectionEnd: undefined
-- tag_MODL: undefined
-- tag_PVTX: undefined
-- tag_KLAI: undefined
-- tag_KRHA: undefined
-- writeMDXFace: undefined
-- readMDXShort: undefined
-- BezierOutTan: undefined
-- getObjectConstraintKeys: undefined
-- RotationKeysBiped: undefined
-- GatherIKChains: undefined
-- HasTvertexAnimation: undefined
-- CleanUpSession: undefined
-- OutputMDL: undefined
-- writeMDXParticleEmitters2: undefined
-- Wc3Extent: StructDef:Wc3Extent
-- Wc3Layer: StructDef:Wc3Layer
-- Wc3ParticleEmitter: StructDef:Wc3ParticleEmitter
-- ArrayFindItem: ArrayFindItem()
-- ArrayGroup: ArrayGroup()
-- hierarchy: StructDef:hierarchy
-- DictionaryAddEntry: DictionaryAddEntry()
-- DictionaryOutputData: DictionaryOutputData()
-- IsCollisionShapeMax: IsCollisionShapeMax()
-- getWc3Skin: undefined
-- getUsesBake: undefined
-- IsPointInBounds: undefined
-- writterTransformKeys: undefined
-- PairToString: undefined
-- writeMDLVertex: undefined
-- QuatToString: undefined
-- TrianglesToString: undefined
-- tag_KTAR: undefined
-- tag_KGRT: undefined
-- tag_KPEG: undefined
-- tag_KP2L: undefined
-- tag_KTTR: undefined
-- readMDXLong: undefined
-- TransformationData: undefined
-- GetRelativePosition: undefined
-- isIKAffected: undefined
-- LoadMDLObject: undefined
-- exportSmoothgroups: undefined
-- CalculateExtentsFromExtentsList: undefined
-- LoadTvertexAnim: undefined
-- ArrayMakeUniqueEx: ArrayMakeUniqueEx()
-- ArrayCheckProperty: ArrayCheckProperty()
-- ArrayRepeat: ArrayRepeat()
-- IsSkinned: IsSkinned()
-- getCameraAnchored: undefined
-- collideMatrix: undefined
-- _getParentsEx: undefined
-- breakUnwrap: undefined
-- PositionToString: undefined
-- writeMDLValue: undefined
-- tag_TEXS: undefined
-- tag_MATS: undefined
-- tag_KLAV: undefined
-- tag_KRCO: undefined
-- readMDXByte: undefined
-- promptErrorReporter: undefined
-- intan: undefined
-- outtan: undefined
-- E2P: undefined
-- GetTangentSmooth: undefined
-- GetRot: undefined
-- PositionKeys: undefined
-- GetGlobalSequences: undefined
-- GetSequenceData: undefined
-- ObjectChecker2: undefined
-- LoadHelper: undefined
-- UsesAnimatedTextures: undefined
-- LoadMaterials: undefined
-- ParseScene: undefined
-- writeMDLHelpers: undefined
-- OutputMDLGmax: undefined
-- ArrayFold: ArrayFold()
-- IsMultiLayered: IsMultiLayered()
-- setBakeInterp: undefined
-- ColorVertices: undefined
-- ScaleToString: undefined
-- FilterModeToString: undefined
-- floatToString: undefined
-- tag_VRTX: undefined
-- tag_LITE: undefined
-- tag_KPES: undefined
-- tag_KP2N: undefined
-- writeMDXByte: undefined
-- IKChains: undefined
-- TvertexGizmo: undefined
-- ComputeTangents: undefined
-- GetRotIK: undefined
-- LoadExtents: undefined
-- mergeSimilarGeosets: undefined
-- GatherBoundingVertices: undefined
-- writeMDLMaterials: undefined
-- writeMDXHeader: undefined
-- writeMDXLights: undefined
-- writeMDXEvents: undefined
-- writeMDXCameras: undefined
-- writeMDXCollisionShapes: undefined
>> MAXScript MacroScript Error Exception:
-- Type error: if-test requires BooleanClass, got: undefined
 
Level 4
Joined
Jul 29, 2006
Messages
85
Hello i got problem with neodex
When i load animations to the model and tred to convert them do the warcraft file (mdl) by "Key Reducer" after i added the bones and make other options and clicked "Do the Job" it start to convert and after fev seconds i got this error

The thing is the error crashes not only Neo Dex but whole 3dsMax program and after this i con only pres Ctrl Alt Delete to close this
 

Attachments

  • Neo Dex animation Emulation Error.JPG
    Neo Dex animation Emulation Error.JPG
    318.8 KB · Views: 176
Level 23
Joined
Jan 1, 2009
Messages
1,617
@Frotty, is it a rigid body object ? Convert it with Vertex anim converter then delete ALL bones but one and assign all vertices to that one and see how it goes.
I believe you can greatly optimize rigid body reactions like that and it should still look similar enough. (well obviously it will destroy certain things like rotation.. but hey it will be much smaller filesize)

Losing Rotation pretty much removes the use of having a rigid body simulation
 
Hello i got problem with neodex
When i load animations to the model and tred to convert them do the warcraft file (mdl) by "Key Reducer" after i added the bones and make other options and clicked "Do the Job" it start to convert and after fev seconds i got this error

The thing is the error crashes not only Neo Dex but whole 3dsMax program and after this i con only pres Ctrl Alt Delete to close this

Don't use the key reducer for reducing Biped Animations. Those work very different to conventional keys. Just export directly.
 
Level 4
Joined
Jul 29, 2006
Messages
85
2010 and also i noticed that if model is maded from more then one material the NeoDex dont see it and after conversion to .mdl i always got only 1 material and 1 geoset when model need 2 materials and geosets to be textured normaly. So in 3dsmax i got model that got 2 materials that needed 2 textures and after conversion i got only 1 material so i cant texture it
 
2010 and also i noticed that if model is maded from more then one material the NeoDex dont see it and after conversion to .mdl i always got only 1 material and 1 geoset when model need 2 materials and geosets to be textured normaly. So in 3dsmax i got model that got 2 materials that needed 2 textures and after conversion i got only 1 material so i cant texture it

Send me your scene and exported model by PM. I'll check it out directly.
 
Level 21
Joined
Mar 18, 2007
Messages
2,247
Hey BlinkBoy, I'm having a pretty big problem. I'm using NeoDex 5.2 and none of the vertex weights in my rig are ever exporting correctly. I've tried re-rigging my model multiple times and nothing's changing.

I keep getting this and I don't know what's causing it.
// The next objects have unbalanced weights,
// they may be wrongly animated.
 
How do I ensure that they're balanced? I've looked through the weight tables and it looks like they are. Sorry I'm still learning this stuff.

I actually just figured out that zero weights on the bones have been causing them problem. I removed them and it fixed the issue as far as I can tell.

that's a lil issue, since the exporter thinks you assigned those bones to that vertex even though they have 0 weight.
 
Did u get the files that i sended u ? Did u checked them?

Yeah I did before going to sleep. Well there are many things.

First you must restore the bind pose for the model you are importing. Wc3 does not support multiple materials on one mesh, you must sepparate the imported mesh materials into two meshes and use Warcraft 3 materials instead of max standard. Afterwards you must redeclare the animation sequences according to NeoDex/Wc3 Art Tools format.

About the key reducer well, I didn't have any errors, probably the keys were too big if you imported a big model like that and you ran out of memory in the Key Reducer. It's better that you do it per animation after you have redeclared the animations.

In my own opinion, it's too much work to fit that model to Wc3 Format, specialy since it's way too high poly.
 
Level 4
Joined
Jul 29, 2006
Messages
85
So how can i restore bind pose?
How to separate mesh materials?

Can u explain me how did u do that? Im a beginer in 3d max

"About the key reducer well, I didn't have any errors, probably the keys were too big if you imported a big model like that and you ran out of memory in the Key Reducer" - so u didnt try key reducer on the second model ? Or u tested both and have no errors?
 
I think your importer had an option for restoring that. Sepparating the meshes is actualy something extremely complex in this case since it requires identifying which sub-meshes use which material ID, detaching them and then remaking the Skin modifier.

definetly the conversion is not any basic work for anyone, is a bit complex. The best is that you learn a bit of modelling before trying to convert imports.
 
Maybe its a much work but its rilly importent and i belive that in future manny people will be greatfull that u do it not only me and its still better than cuting animations that are needed

Man just define animation sequences and do reductions by sequence.

You can also do the reductions byu hand by going into Track View Open Sheet, selecting the transformation and left clicking reduce keys.
 
Level 1
Joined
Sep 7, 2013
Messages
4
Hello again! I met a weird problem that the weights are totally balanced, and exporter didn't complain anything about the weights, but some parts of mesh are still deforming horribly.

Additionally, when the model was not balanced, the meshes that were not balanced worked perfectly well, but the meshes that were balanced twisted horribly like previous posts.

Using Magos model editor re-saves it couldn't solve this problem. I really have no clue where the problem is and how to solve it.

Also I found something might be wrong in the tutorial. When I use freeze transform, Max automatically turned animation controller types to position/rotation lists, and this will crash the exporter.

The only "temporary" solution I found is using Max 2014 to do the animation, and exporting the model using FBX format, converting all of the bones into dummies, then importing it into 2011, using 2011 exporting the wc3 model. IKs cannot be carried through fbx 2011, and it's a nightmare to work without IKs...
 
Hello again! I met a weird problem that the weights are totally balanced, and exporter didn't complain anything about the weights, but some parts of mesh are still deforming horribly.

Additionally, when the model was not balanced, the meshes that were not balanced worked perfectly well, but the meshes that were balanced twisted horribly like previous posts.

Using Magos model editor re-saves it couldn't solve this problem. I really have no clue where the problem is and how to solve it.

Also I found something might be wrong in the tutorial. When I use freeze transform, Max automatically turned animation controller types to position/rotation lists, and this will crash the exporter.

The only "temporary" solution I found is using Max 2014 to do the animation, and exporting the model using FBX format, converting all of the bones into dummies, then importing it into 2011, using 2011 exporting the wc3 model. IKs cannot be carried through fbx 2011, and it's a nightmare to work without IKs...

Hmm, send me your 3dsmax 2011 scene (i won't be able to read the 2014's), That way I can look at your mistakes.

In the case od controllers you can always turn them back fast using the NeoDex Animation Tools.

Hello ! more bugging.
Could I use vertex paint with wc3 formats ? I was wondering whether it would be possible to paint vertex color on a mesh to fake occlusion for example.

Vertex color is not supported.
 
Level 1
Joined
Sep 7, 2013
Messages
4
Hmm, send me your 3dsmax 2011 scene (i won't be able to read the 2014's), That way I can look at your mistakes.

In the case od controllers you can always turn them back fast using the NeoDex Animation Tools.

Thanks for replying! I actually figured it out by myself... I found that if the model itself was scaled too large, it would deform incorrectly. I scaled it from 1200 back to 30 and it worked well without any problem. (I scaled it that much because the model I got was way too small to rig.)

In Maya, I can just zero out the scale values by freezing transform, but in Max it doesn't do that for me.

I tried Animation Tools, but all of the animations are gone when I set them back to Linear/TCB/Bezier. Did I miss any important steps?
 
Thanks for replying! I actually figured it out by myself... I found that if the model itself was scaled too large, it would deform incorrectly. I scaled it from 1200 back to 30 and it worked well without any problem. (I scaled it that much because the model I got was way too small to rig.)

In Maya, I can just zero out the scale values by freezing transform, but in Max it doesn't do that for me.

I tried Animation Tools, but all of the animations are gone when I set them back to Linear/TCB/Bezier. Did I miss any important steps?

hmm not really, it transform keys, but only if they match any of those or some other controllers. List controllers aren't converted correctly. There's an unimplemented feuture called baking which exports animations just like sc2 art tools, sadly is disabled in the current build.
 
Level 3
Joined
Oct 6, 2013
Messages
15
Hey BlinkBoy. This is a mighty fine tool I must say, the 2.52 Version works like a charm with max'11.

However, I've encountered a few problems when exporting a model I've been working on. These are probably related to scene setup, but I'm not sure. If so, is there any instruction to be found on how to set up your scene for optimal export to Wc3?

The problems are:
-For some reason, the model does not display it's textures on two animations, instead Magos displays the standard black "texture is missing" outline. All other animations work fine regarding textures.
-On two other animations (Birth and Death), the geometry seems to be bugging out. Instead of floating in from the ground (Birth) or decending back into it, the model kind of slides in from the side, all the while horribly deforming. Might this have to do with improperly set vertex weights? If so, are there any tutorials on how to set up vertex weights properly for Wc3? All other animations have no deformations (the model has 12 animations total).

Thanks again for making this great tool,
cheers!
 
Last edited:
Hey BlinkBoy. This is a mighty fine tool I must say, the 2.52 Version works like a charm with max'11.

However, I've encountered a few problems when exporting a model I've been working on. These are probably related to scene setup, but I'm not sure. If so, is there any instruction to be found on how to set up your scene for optimal export to Wc3?

The problems are:
-For some reason, the model does not display it's textures on two animations, instead Magos displays the standard black "texture is missing" outline. All other animations work fine regarding textures.
-On two other animations (Birth and Death), the geometry seems to be bugging out. Instead of floating in from the ground (Birth) or decending back into it, the model kind of slides in from the side, all the while horribly deforming. Might this have to do with improperly set vertex weights? If so, are there any tutorials on how to set up vertex weights properly for Wc3? All other animations have no deformations (the model has 12 animations total).

Thanks again for making this great tool,
cheers!

if you send me both the scene and the model by pm, i can give it a fast look and check what could be wrong, how bout it?
 
Eror exporting a model

fn getTVFaces m map =
(
local faces = #()
local num = getNumFaces m
if num != 0 then faces[num] = undefined
for i = 1 to num do faces = meshop.getMapFace m map i
faces
)

fn getTVFacesOld m =
(
local faces = #()
local num = getNumFaces m
if num != 0 then faces[num] = undefined
for i = 1 to num do faces = getTVFace m i
faces
)

fn getFaces m =
(
local faces = #()
local num = getNumFaces m
if num != 0 then faces[num] = undefined
for i = 1 to num do faces = getFace m i
faces
)

fn splitBySmoothGroup obj faces =
(
local result = #()
local tmp = #()
for f in faces do
(
local sg = getFaceSmoothGroup obj f
local index = #()
for i = 1 to tmp.count where (bit.and tmp sg) != 0 do append index i
if index.count != 0 then
(
local first = index[1]
for i = index.count to 2 by -1 do
(
local j = index
join result[first] result[j]
tmp[first] = bit.or tmp[first] tmp[j]
deleteItem tmp j
deleteItem result j
)
tmp[first] = bit.or tmp[first] sg
append result[first] f
)
else
(
append tmp sg
append result #(f)
)
)
result
)

fn gatherSmoothGroupData obj =
(
local numVerts = getNumVerts obj
local baseFaces = getFaces obj
local vertexMapper = #()
local normals = #()
vertexMapper[numVerts] = undefined
normals[numVerts] = undefined
local faces = getFaces obj
local currentVert = 0
local faceNormals = #()
faceNormals[faces.count] = undefined
local func = meshop.getFaceRNormals
for f = 1 to faces.count do
faceNormals[f] = func obj f
func = splitBySmoothGroup
local func2 = meshop.getFacesUsingVert
for i = 1 to numVerts do
(
local g = func obj (func2 obj #{i})
for a in g do
(
local k = 1
for j = 1 to 3 where baseFaces[a[1]][j] == i do k = j
currentVert += 1
vertexMapper[currentVert] = i
normals[currentVert] = faceNormals[a[1]][k]
for f in a do
(
k = 1
for j = 1 to 3 where baseFaces[f][j] == i do k = j
faces[f][k] = currentVert
)
)
)
for i = vertexMapper.count to 1 by -1 where vertexMapper == undefined do
(
deleteItem vertexMapper i
deleteItem normals i
)
#(faces,normals,vertexMapper)
)

-- This function is simplified for only 1 map and no facegroups
fn breakUnwrapFast obj =
(
local vertices = #()
local texNum = getNumTVerts obj
vertices[texNum] = undefined
local faces = getFaces obj
local tvfaces = getTVFacesOld obj
local tmp = #()
local count = faces.count
for i = 1 to count do
(
-- there will be some over writting, but it's okay
local tvf = tvfaces
local f = faces
vertices[tvf[1]] = f[1]
vertices[tvf[2]] = f[2]
vertices[tvf[3]] = f[3]
)
for f in tvfaces do
for i = 1 to 3 do
(
local index = findItem tmp f
if index != 0 then f = index else
(
append tmp f
f = tmp.count
)
)
#(vertices,tvfaces,tmp) --returns a mapper, fixed faces and count of vertices
)


--This function breaks faces on a mesh for a single map
fn breakUnwrapMap obj faces map =
(
local vertices = #()
local texNum = meshop.getNumMapVerts obj map
vertices[texNum] = undefined
local tvfaces = getTVFaces obj map
local tmp = #()
local count = faces.count
local extraVertices = #()
local indexer = #()
for i = 1 to count do
(
-- there will be some over writting, but it's okay
local tvf = tvfaces
local f = faces
for j = 1 to 3 do
(
-- We must check if the faces were partitioned before
if vertices[tvf[j]] == undefined then
vertices[tvf[j]] = f[j]
else
if vertices[tvf[j]] != f[j] then
( -- we found a partition
local index = findItem indexer tvf[j]
if index != 0 then
tvf[j] = texNum + index
else
(
append indexer tvf[j]
tvf[j] = indexer.count + texNum
append extraVertices f[j]
)
)
)
)
join vertices extraVertices
for f in tvfaces do
for i = 1 to 3 do
(
local index = findItem tmp f
if index != 0 then f = index else
(
append tmp f
f = tmp.count
)
)
tvertices = #()
tvertices[tmp.count] = undefined
local func = meshop.getMapVert
for i = 1 to tmp.count do
(
local index = tmp
if index > texNum then index = indexer[index-texNum]
tvertices = func obj map index
)
#(vertices,tvfaces,tmp,tvertices) --returns a mapper, fixed faces and count of vertices
)

--This function will break the mesh for each map continously
fn breakUnwrap obj faces:undefined numVerts:undefined =
(
fn compareMaps a b = if (a[2] < b[2]) then -1 else 1
if faces == undefined then
faces = getFaces obj
if numVerts == undefined then numVerts = getNumVerts obj
local oldMapper = #()
oldMapper[numVerts] = undefined
for i = 1 to numVerts do oldMapper = i
local Maps = #()
local tmp = #()
-- We must gather the valid maps and number of vertices
for i =1 to (meshop.getNumMaps obj) do
if (meshop.getMapSupport obj i) then
append tmp #(i,(meshop.getNumMapVerts obj i))
-- Now we sort them according to highest number of tvertices
qsort tmp compareMaps
-- we do that to avoid problems and reduce partition calculations.
Maps[tmp.count] = undefined
for i = 1 to tmp.count do Maps = tmp[1]
local oldTVertices = #()
for map in Maps do
(
local tmp = breakUnwrapMap obj faces map
faces = tmp[2]
local transformer = tmp[1]
local vertexIndices = tmp[3]
local count = vertexIndices.count
local newMapper = #()
local currentMaps = oldTVertices.count
local newTVertices = #()
local maptvertices = #()
local tverts = tmp[4]
if (currentMaps != 0) then
newTVertices = ArrayRepeat currentMaps #()
for i = 1 to oldTvertices.count do
newTVertices[count] = undefined
newMapper[count] = undefined
for i = 1 to count do
(
local v = transformer[vertexIndices]
newMapper = oldMapper[v]
for j = 1 to currentMaps do
newTVertices[j] = oldTVertices[j][v]
)
oldMapper = newMapper
append newTVertices tverts
oldTVertices = newTVertices
)
for i = 1 to Maps.count do
Maps = #(oldTVertices,Maps)
qsort Maps compareMaps
for i = 1 to Maps.count do
oldTVertices = Maps[1]
-- we will return final faces, final vertex groups and the mapper for vertices, normals and matrixindices
#(faces,oldTVertices,oldMapper)
)

fn ColorVertices obj newColor =
(
defaultVCFaces obj
local vertNum = getNumCPVVerts obj
for i = 1 to vertNum do setVertColor obj i newColor
)

--This function will split faces by elements
fn getFaceElements faces =
(
fn faceToBitArray f = #{f[1],f[2],f[3]}
local mapper = #{}
mapper.count = faces.count
mapper = -mapper
mapper[mapper.count] = false
local bitFaces = #()
bitFaces[faces.count] = undefined
for i = 1 to faces.count do
bitFaces = faceToBitArray faces
local result = #(bitFaces[mapper.count])
local result2 = #(#{mapper.count})
while (not mapper.isEmpty) do
(
local grouped = false
for i = 1 to result.count do
(
local found = false
local elem = result
for b in mapper do
(
local tmp = elem*bitFaces
if (not tmp.isEmpty) then
(
elem = elem + bitFaces
mapper = false
result2 = true
found = true
)
)
result = elem
grouped = grouped or found
)
if ((not grouped) and (not mapper.isEmpty)) then
(
local newFace
local i = mapper.count
while (i != 0) do
if mapper then
(
newFace = bitFaces
mapper = false
append result newFace
append result2 #{i}
i = 0
) else i = i - 1
)
)
result2
)

 
Just to confirm it, this works for 3ds Max 2014.
nmic.jpg


Where do i start if i just want to create quick doodads with custom textures & no animations?

You should try following some simple 3dsmax low-poly modeling tutorials and some material tutorials. Afterwards, just follow the NeoDex Guidelines to format your models in 3dsmax for wc3.

2.4 works on my 3dsmax 2010, but 2.5 crashes when starting 3dsmax

Weird, when does it crash?

Eror exporting a mode

I need the log in the listener, not the script :/
 
Level 15
Joined
Dec 21, 2013
Messages
911
Hey, just want to say
NeoDex 2.5 work perfect with 3ds Max 2013
Well, some time it error, but you just need to install NeoDex again
I hope NeoDex can add the texture from Warcraft directly
 
Level 1
Joined
Dec 26, 2013
Messages
1
i download NeoDeX2.5,but it can't run in 3dsmax2012 and gmax1.2,the same error~~how ? thanks~~
 

Attachments

  • Shot.jpg
    Shot.jpg
    46.5 KB · Views: 208
Level 15
Joined
Dec 21, 2013
Messages
911
Just want to add more...
It's bugging...
So this is the story:
1. Downloaded NeoDex 2.5
2. Open 3ds Max 2013 and install it via MaxScript
3. Work perfect
4. Closed 3ds
5. Open it again
6. Try to export with NeoDex, but it's tell me "MaxScript error, -- Type error: if-test requires BooleanClass, got: undefined" it shows me the error on line 648 on NeoDex Exporter.
7. And so I tried to install it again, it say "Installed NeoDex 2.1 correctly!"
8. Tried to export and it's work

So is that NeoDex bug? Or it's my 3dsMax?
It's happen every time I close it and open it again
 
Top