• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!

[Models] How to determine fields of units based on custom models...

Status
Not open for further replies.
Level 15
Joined
Aug 7, 2013
Messages
1,337
Hi,

I've been importing lots of custom models and making them into units.

Suffice to say, those custom models which don't have an obvious analogue (e.g. not based on a WC3 model) turn out a little weird as I try to approximate a similar model.

For example, how do I know what values to set for say a bee that shoots a needle out of its thorax? No WC3 units launch a projectile from that place.

I mean how did Blizzard figure out all these values with their models? There are hundreds of unit models. Surely they didn't go in by hand and tediously tweak the value until the unit looked right. There must be some kind of relationship between the metrics of the model to the values chosen in the object editor. That's what I am missing, because I don't want to keep doing everything by hand.

Here's what I mean with this unit (credits for the model and everything to olofmoleman)

It's based off a riderless wyvern, but the projectile shoots from the top of its back, rather then from its mouth (again no similar unit, I tried using the dragons but their mouth is in a different/higher spot).

JASS:
    //***************
    // Pterodaustro
    //***************
    //! i setobjecttype("units")
    //! i createobject(DUMMY_FLYING, make_id(upoi))
    //! i makechange(current, "unam", DRAGON)
    //! i makechange(current, "properNames", "Pterodaustro (m),Pterodaustro (f)")
    //special effect (e.g. give a lightning attack)
    ////! i makechange(current, "uabi", "Alit")
    //! i makechange(current, "umdl", "Pterodaustro.mdx")
    //! i makechange(current, "uico", "ReplaceableTextures\\CommandButtons\\BTNPterodaustro.blp")
    //! i makechange(current, "ussi", "ReplaceableTextures\\CommandButtons\\BTNPterodaustro.blp")
    //! i makechange(current, "usnd", "HippoGryph")
    //various art values
    //! i makechange(current, "uble", "0.15")
    //! i makechange(current, "ucbs", "0.510")
    //! i makechange(current, "ucpt", "0.000")
    //! i makechange(current, "urun", "200.0")
    //! i makechange(current, "uwal", "200.0")
    //! i makechange(current, "udtm", "3.0")
    //! i makechange(current, "uept", "2")
    //! i makechange(current, "uerd", "50.00")
    //! i makechange(current, "umxp", "33.00")
    //! i makechange(current, "umxr", "00.00")
    //orientation interpolation
    //! i makechange(current, "uori", "1")
    //impact/launch values
    //! i makechange(current, "uisz", "0")
    //! i makechange(current, "uimz", "60.00")
    //! i makechange(current, "ulpx", "0.00")
    //! i makechange(current, "ulpy", "0.00")
    //! i makechange(current, "ulsz", "0.00")
    //! i makechange(current, "ulpz", "60.00")
    //! i makechange(current, "uprw", "61.00")
    //! i makechange(current, "uaap", "medium")
    //the scaling of the model
    //! i makechange(current, "usca", "1.00")
    //selection circle size
    //! i makechange(current, "ussc", "1.75")
    //flyers only
    //! i makechange(current, "uslz", "230.00")
    //unit shadow sizes
    //! i makechange(current, "ushx", "90.00")
    //! i makechange(current, "ushy", "90.00")
    //! i makechange(current, "ushh", "180.00")
    //! i makechange(current, "ushw", "180.00")
    //tinting values for some units
    //! i makechange(current, "uclr", "255")
    //! i makechange(current, "uclg", "255")
    //! i makechange(current, "uclb", "255")
    //what hitting the unit sounds like
    //! i makechange(current, "uarm", "Flesh")
    //backswing stuff
    //! i makechange(current, "ubs1", "0.370")
    //! i makechange(current, "udp1", "0.600")
    //the unit's projectile (ranged/flying only)
    //! i makechange(current, "ua1m", "Abilities\\Spells\\NightElf\\FanOfKnives\\FanOfKnivesMissile.mdl")
    //movement height (flyers only)
    //! i makechange(current, "umvh", "240.00")
    //flyer min height
    //! i makechange(current, "umvf", "90.00")
    //collision size
    //! i makechange(current, "ucol", "32.00")
    //point value - index
    //! i makechange(current, "upoi", "" .. upoi)
    //movement speed
    //! i makechange(current, "umvs", "295")
    //what sound the unit makes when attacking (melee only)
    //! i makechange(current, "ucs1", "NONE")
    //the unit's armor type, e.g. "hero"
    //! i makechange(current, "udty", "none")
    //! i makechange(current, "ua1t", "pierce")
    //! i upoi = upoi + 1
 
Last edited:
I think it's either they did it via trial and error, or more probably already had those things in mind when they made the models...

Or you could always determine it via calculating the in-game size of the model then determine the appropriate point from there...

I believe calculations start at the center of the unit (X=0,Y=0,Z=0)...

PS: curious as to why you're trying to make them all out using scripts...
 
Level 15
Joined
Aug 7, 2013
Messages
1,337
It's a 100x faster to script all the objects than to do it in the object editor. Also easier to read and go back and make changes, since it's a text file.
 
I'm not sure how Blizzard do their stuff, but...

For my models, I used my very own hand and brain just to get the right editor fields. It took me about 30 min to an hour on it to make it as flawless as possible.

because I don't want to keep doing everything by hand.
Stop making maps. It's tiresome.

Even if there's some kind of matrix system, it won't work. These user made models are made to have... their own uniqueness. You can't expect a computer to find the equations between these things.
 
Level 15
Joined
Aug 7, 2013
Messages
1,337
I'm not sure how Blizzard do their stuff, but...

For my models, I used my very own hand and brain just to get the right editor fields. It took me about 30 min to an hour on it to make it as flawless as possible.

Stop making maps. It's tiresome.

Even if there's some kind of matrix system, it won't work. These user made models are made to have... their own uniqueness. You can't expect a computer to find the equations between these things.

Sorry about my frustrations (not being an artist it's difficult for me to interpret this things, though ignorance is never an excuse).

I have little understanding of what the art fields actually mean (unit orientation interpolation, come on what is that?). Is there a tutorial that explains what each field means?

Do the user made models have a list of the suggested editor field values. I've seen only some provide a handful, others give nothing.

I understand it is amazing enough that there are all these publicly available models, but it would be nice if the author provided what they think should be the values of every editor field if it were turned into a unit. Polishing of the custom unit models can come much later I suppose.
 
I usually provide editor settings for my models, WhiteDeath and Freddyk do it too, not sure about others.
However you are right, majority of the modelers don't provide it. This is simply because of one reason: it's a tedious process.

What I normally do is to check the model's animation sequence right when it launches its attack, pause it and then check the coordinates. But even then, it doesn't make it easy for you, the editor itself is messed up.

Im not sure what unit orientation does, but your problem would probably lies on the projectile launch, based on the script you provided it would be on impact/launch values (ulpx, ulpy and ulpz).


--------------------------------------------------------

Now I can only help you doing the object editor ways, never worked with the script. Based on object editor:

- Projectile Launch - Z (assumably ulpz) : Adjusts the height of the projectile; higher values means higher from the ground. (z-axis)

Meanwhile, not sure if it's just me, but the launch X and launch Y are messed up. So,

- Projectile Launch - Y : Higher values means the projectile will be launched at forward of the model; Negative value means behind the model. (x-axis)

- Projectile Launch - X: This one acts like y-axis but somehow performs oddly. Assuming the model is facing 270 degree. From your view, positive values means more to the left, negative value means more to the right.


----------------------------------------------------

I am not certain of any programs that allow you to find the coordinates automatically, so I'll let others answer that.
 
Level 15
Joined
Aug 7, 2013
Messages
1,337
I figured---it's been tedious enough just to copy them from pre-existing models.

The most helpful hint on the models has been whether it's based on a pre-existing model. In which case the editor fields seem to work out good (though I can't really judge) but when dealing with actually new models, like a snake, I'm at a loss for where to go.

So I suppose I'll need a post for each model I need help finding the right editor values for?
 
Projectile X/Y seems to be based on the unit's facing... positive X means right of model, negative X means left of model... Also, X axis is really right or left, IDK how why you said it works like Y axis...

To me, the way they work makes total sense... X-axis is left-right axis of model, Y is front-back axis of model...

in cartesian coordinates (or when you're looking at a model in TOP-VIEW):

+X => Right
-X => Left
+Y => Up (Front)
-Y => Down (Back)

just remember that this is BASED ON THE MODEL, not the camera, nor the terrain... otherwise, it will actually be hard and weird to work with...

imagine if it's camera based, if my model has a projectile launch X of 100, and my model faces the left of the camera, then the projectile will actually launch from his back (or inside his body depending on how big he is)... and that will definitely be weird... which is why the coordinates are based on the model's coordinate planes...
 
Last edited:
Status
Not open for further replies.
Top