- Joined
- Jun 27, 2010
- Messages
- 2,763
Some people don't know how to fix some errors displayed by the Sanity Checker
A model that passes the sanity check will always function in-game, but you also have to make sure that it has the correct shape, wrapping, textures, default scaling, rotation, shading and animation.
Here I will give guides how to fix all of them. I hope it helps you debug your model.
For this tutorial I will be using War3ModelEditor
also I will be mentioning MDLvis
The optimizer I recommend is MOP
Remark
Why?: this remark appears for:
Problems caused: unnecessary filisize
Solutions:
1. manually go through all and remove them
module>texture manager>right-click>remove
module>material manager>right-click>remove
module>global sequences>right-click>remove
module>texture animations>right-click>remove
2. OR make use of them
3. use optimizer
Remark
Why?: This remark appears when in a transformation instruction (alpha/color/translation/rotation/scaling) one of the instructions instructs for a frame that is not used by any sequence
Problems caused: unnecessary filisize
Solutions:
1. Manually got through all one by one, and remove them.
2. Use optimizer
Remark
Why?: Unnecessary repetition of same or near-same instructions, that are next to each other
problems: unnecessary filesize increase
Solution:
1. compare and remove manually one by one
2. use optimizer
Warning
Why?: repeating tracks
problems: potential conflict in animation instructions
Solution:
1. compare and remove manually one by one
2. use optimizer
Warning
Why?: origin is the most used attachment point by units.
Problems: if you try to attach something to the unit, nothing will happen
Solution:
name an attachment point Origin Ref
Warning
Why?: This sequence does not havev a standard name that is used by Warcraft 3 objects
Problems: The only way to play it is with triggers.
Solutions:
Rename it to something that will fit the naming scheme of what is intented for and what warcraft 3 uses as names. more info here
Warning
Why?: Without sequences you can't expect your model to work properly in-game. Additionally, it can even cause bugs for models around it!
Problems: You may expect to see problems like these:
solutions:
1. At least create Stand and Death Sequence
Warning
Why?: as a result of no sequences
Problems: potential visual glitches in-game
Solutions: Create sequences with frame range that fits the instructions that already exist
Warning
Why?: Without textures your model will be pitch black (if the geoset is using a material) or invisible (if the geoset is not using a material)
Problems: Without textures your model will be pitch black (if the geoset is using a material) or invisible (if the geoset is not using a material)
solutions:
1. Let your model use textures and materials using those textures, and geosets using those materials.
Warning
Why?: the Pivot point is the position of the node and if it's not present it will probably be 0,0,0. Therefore any vertices that are attached to that bone will cause broken animation of the model.
solutions: edit>calculate extents. When yo udo that, all pivot points that do not exist will be set to 0,0,0.
Warning
Why?: a material without layer
Problems: I don't know how a geoset reacts to a material that is uses that has no layers. Probably pitch black?
solutions:
1. create at lest one layer in that material
Warning
Why?:
1. editing the model with notepad may cause this problem, if you delete the wrong lines. Probably vertex groups were interrupted.
2. if with MDLvis you copy vertices that do not form a face / free vertices.
Problems: In any 3D model, the one that is visible is the faces. Without faces, there won't be a visible modelv. MDLvis may prompt error messages.
solutions: use optimizer to remove free vertices
Warning
Why?: every geoset has sequence extents equal to the number of sequences. Thsi is because a geoset's sequence exent decides the extent of the geoset for that particlar sequence. Without it existing, the geoset will probably take the geoset's extents.
Read down below why exents are important!
Problems: Read down below why exents are important!
Solutions:
1. Easier - click edit>calculate extents
2. not reliable> manually write the positive and negative extents of the the sequence/s and/or geoset/s (minimum must be less than positive extents)
1.
2.
Warning
Why?: The minimum extents must be less than the maximum extents
Problems: Read down below why exents are important!
Solutions:
1. edit > calculate extents
2. Manually swap the positives and the negatives, or make the minimum extents be lesser than the maximum extents
1.
2.
Warning
Why?: 2 or more geoset animations use the same geoset.
Problems: This may cause problems with conflicting visibility instructions if the model is in your map, or crash it.
Solutions:
1. manually compare one by one the geosets and geoset animations and change their used geoset/s
2. delete the repeating geoset animations
3. use optimizer
Warning
Why?: this error is for light node/s.
problems: unknown
solution:
change the value to fit the requirement in the said light node
Warning
Why?: One or more of the sequences does not have any length, OR a global sequence has no length. Both cases become useless.
Problems: unknown unexpected behavaiour/errors
solutions:
1. Change the length of the sequence by increasing the value of "To"
2.Remove if useless
Warning
Why?: TRANSFORMATIONS FOR VISIBILITY CAN BE ONLY TRUE OR FALSE (1 OR 0). Interpolation is about gradually changing the values inbetween two instructions. There is nothing inbetween true or false to be changed.
Problems: unknown
Solution: set it to none
Warning
Why?: To one of the bones is not attached any geoset . Bones have to have geoset/s attached to them. I say geosets because vertices belogn to geosets and contain the indexes of the bones to which its vertices attach.
Problems:
1. unnecessary filesize increase
2. If the bone, that has no attached geosets to it, has animation instructions, it may cause visual glitches in-game
3. MDLvis will spam errors and will refuse to manipulate vertices
Solutions:
1.Attach a geoset to the bone
2. If you don't want/need any geoset attached to the bone convert it to helper and copy-paste any transformation instructions, if present
3. Delete the bone if completely useless
1.
2.
Warning
Why?: event object without tracks
problems: map crash
solutions:
delete if useless
Warning
Why?: probably variation is not supposed to be animated?
problems:unknown
solutions: set to static
Severe
Severe
Severe
Why?: Stand and Death animations the minimum are standard animations required by any model to function properly.
Problems: may not work in-game. If missing death animation may have delay when disappearing or not disappear at all. If it lacks Stand sequence, and you try to place it on the map, it will crash the world editor.
solutions:
1. add stand and death animation to your model. Module>Sequences>Create New
1.
IMPORTANT:
Some people make props without death sequence. The least you could do it create Death sequence, and in the geoset animation for each geoset, set the alpha to 0 for that sequence. This way the model willl be invisible in death sequence, but the fact is that you will have it.
Severe
Why?:
This happens when the geoset animation's alpha is static and near0 which means it makes the geoset invisible.
When you save the model with magos editor, sometimes it makes static alphas to be 0 or near 0.
Not true for other programs though.
Solution : use alpha transformation instructions instead.
Severe
Why?: The transformation instructions must be in sequential order.
Problems: This is critical error that will cause your transformation instructions to not work after the frame that is said as higher. All instructions after that will be ignored. This will affect all types of transformations - visibility, rotation, scaling, translation, etc., resulting in a broken model
solutions:
1. manually go and re-arrange them one by one
Severe
Why?: Every sequnce's transformation/s must start from the first track. Lacking one of these definitely causes faulty animation. If you want it to start from a later track, then you can:
(alpha example)
opening track: 0
where does non-animated state end?: 0
animation start: 1
(if using linear interpolation)
problems: the animation may be buggy, not smooth or not working
Solution:
1. Manually add the missing track instructions in the said transformation
1.
Severe
Why?: A vertex is attached to a bone, not the whole geoset attached to a bone. Vertices use a vertex group and it uses matrix groups. matrix groups contain bone IDs.
If a vertex is referencing non-existing matrix group, or the matrix group contain ID/s of non-bone nodes, or not referencing any matrix group, then it's a free vertex.
Problems: Free vertices/geosets will cause the model to not be visible in-game and/or crash your map. Also MDLvis will not open it.
Solutions:
1.Attach the free geoset/s to a bone. In war3 Model editor happens by exporting it and importing it
2. Can use optimizer to remove free vertices
3. Can attach them manually by editing raw in Notepad.
Severe
Why?: this geoset is not using any material
problems: pitch black geoset
solutions: apply material to the geoset
Severe
Why?: that's how the value works probably
Solutions:
Yeah.
Severe
Why?: All sequences must in ascending order of their interval (from-to). This error means that they are either not in the right order, or that some sequences' frames are overlapping.
Problems: Your model will not be visible and working in-game as it appears invalid.
Solutions:
- Save the model as MDL, open it with Notepad and manually Cut-Paste the sequences before/after another sequence depending on what the sanity test error tells you. Change the positions of the sequences, not the frames. When all is done, save it back as MDX.
Error
Why?:
-1 means no texture
any other value means pointing to a texture that does not exist at that position
Problems:
this model will crash your map
Solutions:
Either delete the particle emitter if useless, OR set him to use a texture
Severe
Why?: the sequences' frames are overlapping
Problems: animation glitches, conflicts, possible map crash.
Solutions:
Manually edit the frames of the sequences so they don't overlap
Error
Why?: This node is referencing as parent a non-existing node.
problems: unknown.
Solutions:
1. MDLvis' can auto-fix tha by opening the model with it and saving again
2. Edit with notepad the MDL file
3. Use optimizer that supports fixing invalid node relationships
Error
Why?: self-referencing node - node that references itself as parent.
problems: unknown.
Solutions:
An optimizer can fix that for you, or you can edit with notepad the MDL file
Error
not a valid path within the MPQ I guess.
Even though it's labeled as error, it does not crash the map.
Path property is found it attachment point and particle emitter1
Problems: Unknown.
Solutions: You can just delete it.
Error
Why?: The geoset animation doesnt use a valid geoset. -1 is usually assigned to "None". But can also be a deleted geoset's ID.
Problems: This model will crash your map.
Solutions:
1. remov ethe geoset animation
2. apply geoset to it
3. use optimizer if they are too many
in transformation instructions the format:
track: value
Tracks that have more than 1 value are enclosed in curly braces. (like vector or quaternion)
Warcraft 3 models use a lot of normalized values for their keyframe fields. That is - normalized value = value / maxValue.
For example if we represent green color with value 128, it will be 128 /255 = 0.50196078431
Translation - frame: {x,y,z}
Scaling - frame: {x,y,z} (normalized values for percentage with no upper limit)
Alpha - frame: normalized percentage
Visibility - frame: 0 or 1 (0=false, 1=true)
Rotation - (quaternion) frame: {x,y,z,w} - use this tool to convert between quaternion-euler
Color: - frame: {B,G,R} (yes,it's reversed - instead of RGB) (normalized value)
any other (integer or floating point number) is just - frame: value
Skin weight (reforged) - percentage is represented as 0-255 (llike a byte)
In games, the extents of a 3D model refer to the minimum and maximum coordinates along each axis (X, Y, and Z) that enclose the model's geometry. Due to different transformations inside each sequence, the extents of the model will be different for each sequence, when the model is animated.
If I missed anything, got something wrong, or you can contribute with additional information - write here.
A model that passes the sanity check will always function in-game, but you also have to make sure that it has the correct shape, wrapping, textures, default scaling, rotation, shading and animation.
Here I will give guides how to fix all of them. I hope it helps you debug your model.
For this tutorial I will be using War3ModelEditor
also I will be mentioning MDLvis
The optimizer I recommend is MOP
Remark
Why?: this remark appears for:
- textures that are not used by any material
- materials not used by any geoset
- global sequences not used by any transformations.
- texture animations not used by any layer or not animated
Problems caused: unnecessary filisize
Solutions:
1. manually go through all and remove them
module>texture manager>right-click>remove
module>material manager>right-click>remove
module>global sequences>right-click>remove
module>texture animations>right-click>remove
2. OR make use of them
3. use optimizer
Remark
Why?: This remark appears when in a transformation instruction (alpha/color/translation/rotation/scaling) one of the instructions instructs for a frame that is not used by any sequence
Problems caused: unnecessary filisize
Solutions:
1. Manually got through all one by one, and remove them.
2. Use optimizer
Remark
Why?: Unnecessary repetition of same or near-same instructions, that are next to each other
problems: unnecessary filesize increase
Solution:
1. compare and remove manually one by one
2. use optimizer
Warning
Why?: repeating tracks
problems: potential conflict in animation instructions
Solution:
1. compare and remove manually one by one
2. use optimizer
Warning
Why?: origin is the most used attachment point by units.
Problems: if you try to attach something to the unit, nothing will happen
Solution:
name an attachment point Origin Ref
Warning
Why?: This sequence does not havev a standard name that is used by Warcraft 3 objects
Problems: The only way to play it is with triggers.
Solutions:
Rename it to something that will fit the naming scheme of what is intented for and what warcraft 3 uses as names. more info here
Warning
Why?: Without sequences you can't expect your model to work properly in-game. Additionally, it can even cause bugs for models around it!
Problems: You may expect to see problems like these:
solutions:
1. At least create Stand and Death Sequence
Warning
Why?: as a result of no sequences
Problems: potential visual glitches in-game
Solutions: Create sequences with frame range that fits the instructions that already exist
Warning
Why?: Without textures your model will be pitch black (if the geoset is using a material) or invisible (if the geoset is not using a material)
Problems: Without textures your model will be pitch black (if the geoset is using a material) or invisible (if the geoset is not using a material)
solutions:
1. Let your model use textures and materials using those textures, and geosets using those materials.
Warning
Why?: the Pivot point is the position of the node and if it's not present it will probably be 0,0,0. Therefore any vertices that are attached to that bone will cause broken animation of the model.
solutions: edit>calculate extents. When yo udo that, all pivot points that do not exist will be set to 0,0,0.
Warning
Why?: a material without layer
Problems: I don't know how a geoset reacts to a material that is uses that has no layers. Probably pitch black?
solutions:
1. create at lest one layer in that material
Warning
Why?:
1. editing the model with notepad may cause this problem, if you delete the wrong lines. Probably vertex groups were interrupted.
2. if with MDLvis you copy vertices that do not form a face / free vertices.
Problems: In any 3D model, the one that is visible is the faces. Without faces, there won't be a visible modelv. MDLvis may prompt error messages.
solutions: use optimizer to remove free vertices
Warning
Why?: every geoset has sequence extents equal to the number of sequences. Thsi is because a geoset's sequence exent decides the extent of the geoset for that particlar sequence. Without it existing, the geoset will probably take the geoset's extents.
Read down below why exents are important!
Problems: Read down below why exents are important!
Solutions:
1. Easier - click edit>calculate extents
2. not reliable> manually write the positive and negative extents of the the sequence/s and/or geoset/s (minimum must be less than positive extents)
1.
2.
Warning
Why?: The minimum extents must be less than the maximum extents
Problems: Read down below why exents are important!
Solutions:
1. edit > calculate extents
2. Manually swap the positives and the negatives, or make the minimum extents be lesser than the maximum extents
1.
2.
Warning
Why?: 2 or more geoset animations use the same geoset.
Problems: This may cause problems with conflicting visibility instructions if the model is in your map, or crash it.
Solutions:
1. manually compare one by one the geosets and geoset animations and change their used geoset/s
2. delete the repeating geoset animations
3. use optimizer
Warning
Why?: this error is for light node/s.
problems: unknown
solution:
change the value to fit the requirement in the said light node
Warning
Why?: One or more of the sequences does not have any length, OR a global sequence has no length. Both cases become useless.
Problems: unknown unexpected behavaiour/errors
solutions:
1. Change the length of the sequence by increasing the value of "To"
2.Remove if useless
Warning
Why?: TRANSFORMATIONS FOR VISIBILITY CAN BE ONLY TRUE OR FALSE (1 OR 0). Interpolation is about gradually changing the values inbetween two instructions. There is nothing inbetween true or false to be changed.
Problems: unknown
Solution: set it to none
Warning
Why?: To one of the bones is not attached any geoset . Bones have to have geoset/s attached to them. I say geosets because vertices belogn to geosets and contain the indexes of the bones to which its vertices attach.
Problems:
1. unnecessary filesize increase
2. If the bone, that has no attached geosets to it, has animation instructions, it may cause visual glitches in-game
3. MDLvis will spam errors and will refuse to manipulate vertices
Solutions:
1.Attach a geoset to the bone
2. If you don't want/need any geoset attached to the bone convert it to helper and copy-paste any transformation instructions, if present
3. Delete the bone if completely useless
1.
2.
Warning
Why?: event object without tracks
problems: map crash
solutions:
delete if useless
Warning
Why?: probably variation is not supposed to be animated?
problems:unknown
solutions: set to static
Severe
Severe
Severe
Why?: Stand and Death animations the minimum are standard animations required by any model to function properly.
Problems: may not work in-game. If missing death animation may have delay when disappearing or not disappear at all. If it lacks Stand sequence, and you try to place it on the map, it will crash the world editor.
solutions:
1. add stand and death animation to your model. Module>Sequences>Create New
1.
IMPORTANT:
Some people make props without death sequence. The least you could do it create Death sequence, and in the geoset animation for each geoset, set the alpha to 0 for that sequence. This way the model willl be invisible in death sequence, but the fact is that you will have it.
Severe
Why?:
This happens when the geoset animation's alpha is static and near0 which means it makes the geoset invisible.
When you save the model with magos editor, sometimes it makes static alphas to be 0 or near 0.
Not true for other programs though.
Solution : use alpha transformation instructions instead.
Severe
Why?: The transformation instructions must be in sequential order.
Problems: This is critical error that will cause your transformation instructions to not work after the frame that is said as higher. All instructions after that will be ignored. This will affect all types of transformations - visibility, rotation, scaling, translation, etc., resulting in a broken model
solutions:
1. manually go and re-arrange them one by one
Severe
Why?: Every sequnce's transformation/s must start from the first track. Lacking one of these definitely causes faulty animation. If you want it to start from a later track, then you can:
(alpha example)
opening track: 0
where does non-animated state end?: 0
animation start: 1
(if using linear interpolation)
problems: the animation may be buggy, not smooth or not working
Solution:
1. Manually add the missing track instructions in the said transformation
1.
Severe
Why?: A vertex is attached to a bone, not the whole geoset attached to a bone. Vertices use a vertex group and it uses matrix groups. matrix groups contain bone IDs.
If a vertex is referencing non-existing matrix group, or the matrix group contain ID/s of non-bone nodes, or not referencing any matrix group, then it's a free vertex.
Problems: Free vertices/geosets will cause the model to not be visible in-game and/or crash your map. Also MDLvis will not open it.
Solutions:
1.Attach the free geoset/s to a bone. In war3 Model editor happens by exporting it and importing it
2. Can use optimizer to remove free vertices
3. Can attach them manually by editing raw in Notepad.
Severe
Why?: this geoset is not using any material
problems: pitch black geoset
solutions: apply material to the geoset
Severe
Why?: that's how the value works probably
Solutions:
Yeah.
Severe
Why?: All sequences must in ascending order of their interval (from-to). This error means that they are either not in the right order, or that some sequences' frames are overlapping.
Problems: Your model will not be visible and working in-game as it appears invalid.
Solutions:
- Save the model as MDL, open it with Notepad and manually Cut-Paste the sequences before/after another sequence depending on what the sanity test error tells you. Change the positions of the sequences, not the frames. When all is done, save it back as MDX.
Error
Why?:
-1 means no texture
any other value means pointing to a texture that does not exist at that position
Problems:
this model will crash your map
Solutions:
Either delete the particle emitter if useless, OR set him to use a texture
Severe
Why?: the sequences' frames are overlapping
Problems: animation glitches, conflicts, possible map crash.
Solutions:
Manually edit the frames of the sequences so they don't overlap
Error
Why?: This node is referencing as parent a non-existing node.
problems: unknown.
Solutions:
1. MDLvis' can auto-fix tha by opening the model with it and saving again
2. Edit with notepad the MDL file
3. Use optimizer that supports fixing invalid node relationships
Error
Why?: self-referencing node - node that references itself as parent.
problems: unknown.
Solutions:
An optimizer can fix that for you, or you can edit with notepad the MDL file
Error
not a valid path within the MPQ I guess.
Even though it's labeled as error, it does not crash the map.
Path property is found it attachment point and particle emitter1
Problems: Unknown.
Solutions: You can just delete it.
Error
Why?: The geoset animation doesnt use a valid geoset. -1 is usually assigned to "None". But can also be a deleted geoset's ID.
Problems: This model will crash your map.
Solutions:
1. remov ethe geoset animation
2. apply geoset to it
3. use optimizer if they are too many
in transformation instructions the format:
track: value
Tracks that have more than 1 value are enclosed in curly braces. (like vector or quaternion)
Warcraft 3 models use a lot of normalized values for their keyframe fields. That is - normalized value = value / maxValue.
For example if we represent green color with value 128, it will be 128 /255 = 0.50196078431
Translation - frame: {x,y,z}
Scaling - frame: {x,y,z} (normalized values for percentage with no upper limit)
Alpha - frame: normalized percentage
Visibility - frame: 0 or 1 (0=false, 1=true)
Rotation - (quaternion) frame: {x,y,z,w} - use this tool to convert between quaternion-euler
Color: - frame: {B,G,R} (yes,it's reversed - instead of RGB) (normalized value)
any other (integer or floating point number) is just - frame: value
Skin weight (reforged) - percentage is represented as 0-255 (llike a byte)
In games, the extents of a 3D model refer to the minimum and maximum coordinates along each axis (X, Y, and Z) that enclose the model's geometry. Due to different transformations inside each sequence, the extents of the model will be different for each sequence, when the model is animated.
- decides how the model can be selected and dragged in the editor. Or if it can be selected at all. (For unit must have a collision shape)
- Affects the collision of units, in combination with the unit property "collision size"
- Affects the visibility of the model in the view of the game camera/s. If the extents are wrong and the model is half inside the view of the camera, might not be rendered.
- Affects the health bar position and size.
- Affects the pathfinding of the game engine
If I missed anything, got something wrong, or you can contribute with additional information - write here.
Last edited: