Rescaled Archimedes

Hello everyone.

Recently, I’ve been doing some rescaling and now I have encountered a problem.
The rescaling process went fine. Only the bodygroups merged with each other, turning it into a mess.

The tutorial I used: http://vggts.macrosonic.org/where/garrymod/mscaledoc.html
I followed the guide correctly and everything went fine during the process.
My current issue is that I haven’t found any tutorial/help covering this case.

I would really appreciate it if anyone could be of assistance.

Archimedes: http://www.garrysmod.org/downloads/?a=view&id=129476

How big do you want him? Can I see the .qc? The thing about the rescaling program is that it doesn’t like bodygroups.

I would like to have him scaled up by 20. Uploaded .qc here: http://speedy.sh/aB4UR/Archimedes.zip

Alright, when you decompiled the model, the QC merges all the bodygroups for some reason, as you have already found out heh, though the scaling went fine so that’s what matters. The rescaling program does not like bodygroups at all and refuses to compile with them.

I have 2 solutions for this:

1: Use the rescaler and compile multiple models with different combinations of bodygroups enabled (bodygroups will be part of the model itself and won’t actually function as a bodygroup), or

2: Do not use rescaler and use GUIStudioMDL (http://www.wunderboy.org/apps/guistudiomdl2.php) to compile the model using the $scale command inside the QC. The model will having working bodygroups with this method, but there are downsides.

Downsides to 1: You will have multiple models of the different sizes. (e.g. archimedes_wingsopen020, archimedes_wingsclosed020, archimedes_wingsclosed_tailclosed020, etc.) Seeing as they are separate models completely, one would think that they would have to re-pose the model. However, since the models use the same skeletons and bones, you can simply use the Model Manipulator tool http://www.garrysmod.org/downloads/?a=view&id=86785) to simply change the model around at that current pose. Also note that face posing will break on a model after a certain size. That breaking point varies on models and depends on the flex. The reason behind this is that VTAs, which is basically moving points on a model, have a maximum amount of distance travelled in the world before they break and distort. The bigger the model, the more distance the flex points of a model will travel.

Note that decompiling a custom model (e.g. that is not a Valve ragdoll like a HL2 citizen) with faceposing will have a higher chance of breaking/removing any faceposing it might have (eye posing will still work.) So once Archimedes is decompiled, he will no longer be able to move his beak. The second method, using $scale, is great for models without eye or face posing, as there is nothing to break, and the bodygroups scale up with the model (and still work like bodygroups e.g. can be changed with the bodygroup changer tool.) So the second method in my opinion would be the ideal method of scaling this model, as Archimedes will not have any face posing, he has no eye posing anyways, and that his bodygrouped parts will work. But I can tell you both methods should you come across a model with eyeposing that you may want to retain.

Downsides to 2: For more advanced models, you will lose face posing and eye posing, as the $scale command breaks faceposing and does not scale up the coordinates and settings for the eyes. Also the weight of the model will not scale accordingly (e.g. double the size of the model, cube the weight of it.) The model needs to be very very heavy in order to be able to be manipulated with the physgun. For example, at a size of 20x, I would put the mass at 50,000. Unless you use the Ragdoll Mover tool. http://www.garrysmod.org/downloads/?a=view&id=129379

First Method
Now let’s say you want to scale it up using the first method. In this example, you’ll want him at 20x, open wings, open tail, and open feet. So for this, we’ll only use the bodygrouped parts which contain the main body, open wings, tail and feet. Now I see that you have decompiled the model already, and are greeted with a terrifying jumbled mess of letters and numbers in mdldecompiler.qc. Luckily for us, we only need to focus on the $model lines at the top and the $mass near the bottom.




$cd "D:\Documents\3dsMax\meshes\Scaler\Models\boid\"
$modelname "player/archimedes.mdl"


$model “dove” “dove.smd”
$model “wings” “wings_open.smd”
$model “wings” “wings_closed.smd”
$model “tail” “tail_open.smd”
$model “tail” “tail_closed.smd”
$model “feet” “legs.smd”
$model “feet” “legs_tucked.smd”



$cdmaterials "models\player\archimedes\"
$texturegroup skinfamilies
{
	{ "archimedes.vmt" }
	{ "archimedes_blood.vmt" }
	{ "archimedes_nm.vmt" }
	{ "archimedes_nm_blood.vmt" }
	{ "archimedes_red_invun.vmt" }
	{ "archimedes_blue_invun.vmt" }
}
$hboxset "default"
$hbox 0 "M_COG_jnt" -2.520  -1.413  0.000  0.000  1.413  3.697
$hbox 0 "M_spineA_jnt" -2.846  -2.111  -1.729  0.457  2.111  2.858
$hbox 0 "M_spineB_jnt" -2.275  -1.466  -0.268  0.427  1.499  2.549
$hbox 0 "R_collar_jnt" -1.107  -0.505  -1.621  1.883  2.211  0.691
$hbox 0 "R_wing_jnt" -0.373  -0.817  -0.757  4.320  6.884  1.301
$hbox 0 "R_knee_jnt" -0.248  -0.421  -1.487  1.041  0.874  0.991
$hbox 0 "L_knee_jnt" -0.196  -0.846  -1.487  1.039  0.427  0.991
$hbox 0 "L_collar_jnt" -0.231  -0.643  -1.621  1.883  0.505  0.544
$hbox 0 "L_wing_jnt" -0.373  -6.884  -0.757  4.320  0.817  1.301
$hbox 0 "M_tail_jnt" -1.063  -4.074  -3.394  0.334  0.000  3.394
$hbox 0 "M_neckA_jnt" -2.598  -0.868  -2.004  0.457  1.998  2.004
$hbox 0 "M_neckB_jnt" -2.508  -1.546  -1.039  0.390  1.493  1.836
$hbox 0 "M_neckC_jnt" -2.954  -1.054  -3.507  1.069  1.489  1.407
$hbox 0 "bip_head" -1.195  -0.136  -0.740  0.349  1.255  0.740
// Model uses material "archimedes.vmt"
// Model uses material "archimedes_blood.vmt"
// Model uses material "archimedes_nm.vmt"
// Model uses material "archimedes_nm_blood.vmt"
// Model uses material "archimedes_red_invun.vmt"
// Model uses material "archimedes_blue_invun.vmt"
$surfaceprop "flesh"
$illumposition -0.036 0.000 -0.155
$sequence ref "ref" fps 30.00
$ikchain rfoot bip_hand_R knee  0.000 0.000 0.000
$ikchain lfoot bip_hand_L knee  0.000 0.000 0.000
$ikchain rwing R_wrist_jnt knee  0.000 0.000 0.000
$ikchain lwing L_wrist_jnt knee  0.000 0.000 0.000
$collisionjoints "phymodel.smd" {


$mass 2.0


	$inertia 1.00
	$damping 0.01
	$rotdamping 1.50
	$rootbone "m_cog_jnt"

	$jointconstrain "m_neckc_jnt" x limit -125.00 125.00 0.00
	$jointconstrain "m_neckc_jnt" y limit -60.00 100.00 0.00
	$jointconstrain "m_neckc_jnt" z limit -65.00 65.00 0.00

	$jointconstrain "r_wing_jnt" x limit -60.00 35.00 0.00
	$jointconstrain "r_wing_jnt" y limit -55.00 75.00 0.00
	$jointconstrain "r_wing_jnt" z limit -60.00 25.00 0.00

	$jointconstrain "r_wrist_jnt" x limit -55.00 90.00 0.00
	$jointconstrain "r_wrist_jnt" y limit -90.00 60.00 0.00
	$jointconstrain "r_wrist_jnt" z limit -55.00 65.00 0.00

	$jointconstrain "l_wing_jnt" x limit -35.00 60.00 0.00
	$jointconstrain "l_wing_jnt" y limit -55.00 75.00 0.00
	$jointconstrain "l_wing_jnt" z limit -25.00 60.00 0.00

	$jointconstrain "l_wrist_jnt" x limit -55.00 90.00 0.00
	$jointconstrain "l_wrist_jnt" y limit -90.00 60.00 0.00
	$jointconstrain "l_wrist_jnt" z limit -55.00 65.00 0.00

	$jointconstrain "m_spineb_jnt" x limit -30.00 30.00 0.00
	$jointconstrain "m_spineb_jnt" y limit -25.00 70.00 0.00
	$jointconstrain "m_spineb_jnt" z limit -40.00 40.00 0.00

	$jointconstrain "l_knee_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "l_knee_jnt" y limit -30.00 70.00 0.00
	$jointconstrain "l_knee_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "l_ankle_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "l_ankle_jnt" y limit -50.00 50.00 0.00
	$jointconstrain "l_ankle_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "r_knee_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "r_knee_jnt" y limit -30.00 70.00 0.00
	$jointconstrain "r_knee_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "r_ankle_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "r_ankle_jnt" y limit -50.00 50.00 0.00
	$jointconstrain "r_ankle_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "bip_hand_r" x limit -60.00 40.00 0.00
	$jointconstrain "bip_hand_r" y limit -60.00 35.00 0.00
	$jointconstrain "bip_hand_r" z limit -50.00 30.00 0.00

	$jointconstrain "m_tail_jnt" x limit -40.00 40.00 0.00
	$jointconstrain "m_tail_jnt" y limit -60.00 60.00 0.00
	$jointconstrain "m_tail_jnt" z limit -90.00 90.00 0.00

	$jointconstrain "bip_hand_l" x limit -40.00 60.00 0.00
	$jointconstrain "bip_hand_l" y limit -35.00 60.00 0.00
	$jointconstrain "bip_hand_l" z limit -50.00 30.00 0.00

	$jointconstrain "bip_head" x limit -55.00 55.00 0.00
	$jointconstrain "bip_head" y limit -45.00 45.00 0.00
	$jointconstrain "bip_head" z limit -70.00 30.00 0.00
}


Edit out the necessary parts at the top and increase the base $mass size. A good base mass of any ragdoll the size of a HL2 citizen or lower is 80-100. The reason behind this is that when the rescaling program works its magic and cubing the mass or so, the ragdoll should be able to be manipulated with the phys gun. So let’s change the mass to 80. The qc should now look like:



$cd "D:\Documents\3dsMax\meshes\Scaler\Models\boid\"
$modelname "player/archimedes.mdl"


$model “dove” “dove.smd”
$model “wings” “wings_open.smd”
$model “tail” “tail_open.smd”
$model “feet” “legs.smd”



$cdmaterials "models\player\archimedes\"
$texturegroup skinfamilies
{
	{ "archimedes.vmt" }
	{ "archimedes_blood.vmt" }
	{ "archimedes_nm.vmt" }
	{ "archimedes_nm_blood.vmt" }
	{ "archimedes_red_invun.vmt" }
	{ "archimedes_blue_invun.vmt" }
}
$hboxset "default"
$hbox 0 "M_COG_jnt" -2.520  -1.413  0.000  0.000  1.413  3.697
$hbox 0 "M_spineA_jnt" -2.846  -2.111  -1.729  0.457  2.111  2.858
$hbox 0 "M_spineB_jnt" -2.275  -1.466  -0.268  0.427  1.499  2.549
$hbox 0 "R_collar_jnt" -1.107  -0.505  -1.621  1.883  2.211  0.691
$hbox 0 "R_wing_jnt" -0.373  -0.817  -0.757  4.320  6.884  1.301
$hbox 0 "R_knee_jnt" -0.248  -0.421  -1.487  1.041  0.874  0.991
$hbox 0 "L_knee_jnt" -0.196  -0.846  -1.487  1.039  0.427  0.991
$hbox 0 "L_collar_jnt" -0.231  -0.643  -1.621  1.883  0.505  0.544
$hbox 0 "L_wing_jnt" -0.373  -6.884  -0.757  4.320  0.817  1.301
$hbox 0 "M_tail_jnt" -1.063  -4.074  -3.394  0.334  0.000  3.394
$hbox 0 "M_neckA_jnt" -2.598  -0.868  -2.004  0.457  1.998  2.004
$hbox 0 "M_neckB_jnt" -2.508  -1.546  -1.039  0.390  1.493  1.836
$hbox 0 "M_neckC_jnt" -2.954  -1.054  -3.507  1.069  1.489  1.407
$hbox 0 "bip_head" -1.195  -0.136  -0.740  0.349  1.255  0.740
// Model uses material "archimedes.vmt"
// Model uses material "archimedes_blood.vmt"
// Model uses material "archimedes_nm.vmt"
// Model uses material "archimedes_nm_blood.vmt"
// Model uses material "archimedes_red_invun.vmt"
// Model uses material "archimedes_blue_invun.vmt"
$surfaceprop "flesh"
$illumposition -0.036 0.000 -0.155
$sequence ref "ref" fps 30.00
$ikchain rfoot bip_hand_R knee  0.000 0.000 0.000
$ikchain lfoot bip_hand_L knee  0.000 0.000 0.000
$ikchain rwing R_wrist_jnt knee  0.000 0.000 0.000
$ikchain lwing L_wrist_jnt knee  0.000 0.000 0.000
$collisionjoints "phymodel.smd" {


$mass 80.0


	$inertia 1.00
	$damping 0.01
	$rotdamping 1.50
	$rootbone "m_cog_jnt"

	$jointconstrain "m_neckc_jnt" x limit -125.00 125.00 0.00
	$jointconstrain "m_neckc_jnt" y limit -60.00 100.00 0.00
	$jointconstrain "m_neckc_jnt" z limit -65.00 65.00 0.00

	$jointconstrain "r_wing_jnt" x limit -60.00 35.00 0.00
	$jointconstrain "r_wing_jnt" y limit -55.00 75.00 0.00
	$jointconstrain "r_wing_jnt" z limit -60.00 25.00 0.00

	$jointconstrain "r_wrist_jnt" x limit -55.00 90.00 0.00
	$jointconstrain "r_wrist_jnt" y limit -90.00 60.00 0.00
	$jointconstrain "r_wrist_jnt" z limit -55.00 65.00 0.00

	$jointconstrain "l_wing_jnt" x limit -35.00 60.00 0.00
	$jointconstrain "l_wing_jnt" y limit -55.00 75.00 0.00
	$jointconstrain "l_wing_jnt" z limit -25.00 60.00 0.00

	$jointconstrain "l_wrist_jnt" x limit -55.00 90.00 0.00
	$jointconstrain "l_wrist_jnt" y limit -90.00 60.00 0.00
	$jointconstrain "l_wrist_jnt" z limit -55.00 65.00 0.00

	$jointconstrain "m_spineb_jnt" x limit -30.00 30.00 0.00
	$jointconstrain "m_spineb_jnt" y limit -25.00 70.00 0.00
	$jointconstrain "m_spineb_jnt" z limit -40.00 40.00 0.00

	$jointconstrain "l_knee_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "l_knee_jnt" y limit -30.00 70.00 0.00
	$jointconstrain "l_knee_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "l_ankle_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "l_ankle_jnt" y limit -50.00 50.00 0.00
	$jointconstrain "l_ankle_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "r_knee_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "r_knee_jnt" y limit -30.00 70.00 0.00
	$jointconstrain "r_knee_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "r_ankle_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "r_ankle_jnt" y limit -50.00 50.00 0.00
	$jointconstrain "r_ankle_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "bip_hand_r" x limit -60.00 40.00 0.00
	$jointconstrain "bip_hand_r" y limit -60.00 35.00 0.00
	$jointconstrain "bip_hand_r" z limit -50.00 30.00 0.00

	$jointconstrain "m_tail_jnt" x limit -40.00 40.00 0.00
	$jointconstrain "m_tail_jnt" y limit -60.00 60.00 0.00
	$jointconstrain "m_tail_jnt" z limit -90.00 90.00 0.00

	$jointconstrain "bip_hand_l" x limit -40.00 60.00 0.00
	$jointconstrain "bip_hand_l" y limit -35.00 60.00 0.00
	$jointconstrain "bip_hand_l" z limit -50.00 30.00 0.00

	$jointconstrain "bip_head" x limit -55.00 55.00 0.00
	$jointconstrain "bip_head" y limit -45.00 45.00 0.00
	$jointconstrain "bip_head" z limit -70.00 30.00 0.00
}


Looks like it’s good to go! Save the QC and see if the rescaler spits out a model.

https://dl.dropbox.com/u/16145629/Random/archimedes1.jpg

And here is he at 20x, with the said open wings, open tail, and open feet parts. And if you look at the new QC inside the new folder (named scl20 for example) where you resized the model, you will see that $mass has increased to 640000.00000! This is after setting the base mass to 80. If you want the different parts, like closed wings and tail, then you would do the same, but leave only the necessary $model lines at the top.

Second Method

Now a more simpler method. I assumed you already downloaded Source SDK within Steam, and that you also already downloaded GUIStudioMDL. If not, here is the link again. http://www.wunderboy.org/apps/guistudiomdl2.php

Once you start up GUIStudioMDL, it will ask you for the Orange Box path. At the top, select config, and set orange box tools path. Navigate to your steam\steamapps\yourname\sourcesdk\bin\orangebox\bin. If you want to set up EP1 tools path, it is located in steam\steamapps\yourname\sourcesdk\bin\ep1\bin. Now one more thing. Once you added the Orange Box path, you should see some games under Target Mod, once you have Orange Box SDK version selected (not Episode 1.) To configure GUIStudioMDL for Gmod, make sure Orange Box SDK version is selected, and click Add. Navigate to the gameinfo.txt inside your Gmod folder e.g. steamapps\yourname\garrysmod\garrysmod. After adding it, you should be able to select Gmod from the dropdown menu.

ALRIGHT so once that is all done, the program should be ready to compile. Now, remember, this is the second method which were going to use a line “$scale” in the QC. We also still need to fix the bodygroups and make them actually act like bodygroups. Also, since we are doing this manually, we will also need to set the $mass accordingly. So, lets start off with a freshly decompiled model QC. What needs to be changed is highlighted.




$cd "D:\Documents\3dsMax\meshes\Scaler\Models\boid\"


$modelname “player/archimedes.mdl”



$model "dove" "dove.smd"


$model “wings” “wings_open.smd”
$model “wings” “wings_closed.smd”
$model “tail” “tail_open.smd”
$model “tail” “tail_closed.smd”
$model “feet” “legs.smd”
$model “feet” “legs_tucked.smd”



$cdmaterials "models\player\archimedes\"
$texturegroup skinfamilies
{
	{ "archimedes.vmt" }
	{ "archimedes_blood.vmt" }
	{ "archimedes_nm.vmt" }
	{ "archimedes_nm_blood.vmt" }
	{ "archimedes_red_invun.vmt" }
	{ "archimedes_blue_invun.vmt" }
}
$hboxset "default"
$hbox 0 "M_COG_jnt" -2.520  -1.413  0.000  0.000  1.413  3.697
$hbox 0 "M_spineA_jnt" -2.846  -2.111  -1.729  0.457  2.111  2.858
$hbox 0 "M_spineB_jnt" -2.275  -1.466  -0.268  0.427  1.499  2.549
$hbox 0 "R_collar_jnt" -1.107  -0.505  -1.621  1.883  2.211  0.691
$hbox 0 "R_wing_jnt" -0.373  -0.817  -0.757  4.320  6.884  1.301
$hbox 0 "R_knee_jnt" -0.248  -0.421  -1.487  1.041  0.874  0.991
$hbox 0 "L_knee_jnt" -0.196  -0.846  -1.487  1.039  0.427  0.991
$hbox 0 "L_collar_jnt" -0.231  -0.643  -1.621  1.883  0.505  0.544
$hbox 0 "L_wing_jnt" -0.373  -6.884  -0.757  4.320  0.817  1.301
$hbox 0 "M_tail_jnt" -1.063  -4.074  -3.394  0.334  0.000  3.394
$hbox 0 "M_neckA_jnt" -2.598  -0.868  -2.004  0.457  1.998  2.004
$hbox 0 "M_neckB_jnt" -2.508  -1.546  -1.039  0.390  1.493  1.836
$hbox 0 "M_neckC_jnt" -2.954  -1.054  -3.507  1.069  1.489  1.407
$hbox 0 "bip_head" -1.195  -0.136  -0.740  0.349  1.255  0.740
// Model uses material "archimedes.vmt"
// Model uses material "archimedes_blood.vmt"
// Model uses material "archimedes_nm.vmt"
// Model uses material "archimedes_nm_blood.vmt"
// Model uses material "archimedes_red_invun.vmt"
// Model uses material "archimedes_blue_invun.vmt"
$surfaceprop "flesh"
$illumposition -0.036 0.000 -0.155
$sequence ref "ref" fps 30.00
$ikchain rfoot bip_hand_R knee  0.000 0.000 0.000
$ikchain lfoot bip_hand_L knee  0.000 0.000 0.000
$ikchain rwing R_wrist_jnt knee  0.000 0.000 0.000
$ikchain lwing L_wrist_jnt knee  0.000 0.000 0.000
$collisionjoints "phymodel.smd" {



$mass 2.0


	$inertia 1.00
	$damping 0.01
	$rotdamping 1.50
	$rootbone "m_cog_jnt"

	$jointconstrain "m_neckc_jnt" x limit -125.00 125.00 0.00
	$jointconstrain "m_neckc_jnt" y limit -60.00 100.00 0.00
	$jointconstrain "m_neckc_jnt" z limit -65.00 65.00 0.00

	$jointconstrain "r_wing_jnt" x limit -60.00 35.00 0.00
	$jointconstrain "r_wing_jnt" y limit -55.00 75.00 0.00
	$jointconstrain "r_wing_jnt" z limit -60.00 25.00 0.00

	$jointconstrain "r_wrist_jnt" x limit -55.00 90.00 0.00
	$jointconstrain "r_wrist_jnt" y limit -90.00 60.00 0.00
	$jointconstrain "r_wrist_jnt" z limit -55.00 65.00 0.00

	$jointconstrain "l_wing_jnt" x limit -35.00 60.00 0.00
	$jointconstrain "l_wing_jnt" y limit -55.00 75.00 0.00
	$jointconstrain "l_wing_jnt" z limit -25.00 60.00 0.00

	$jointconstrain "l_wrist_jnt" x limit -55.00 90.00 0.00
	$jointconstrain "l_wrist_jnt" y limit -90.00 60.00 0.00
	$jointconstrain "l_wrist_jnt" z limit -55.00 65.00 0.00

	$jointconstrain "m_spineb_jnt" x limit -30.00 30.00 0.00
	$jointconstrain "m_spineb_jnt" y limit -25.00 70.00 0.00
	$jointconstrain "m_spineb_jnt" z limit -40.00 40.00 0.00

	$jointconstrain "l_knee_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "l_knee_jnt" y limit -30.00 70.00 0.00
	$jointconstrain "l_knee_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "l_ankle_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "l_ankle_jnt" y limit -50.00 50.00 0.00
	$jointconstrain "l_ankle_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "r_knee_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "r_knee_jnt" y limit -30.00 70.00 0.00
	$jointconstrain "r_knee_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "r_ankle_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "r_ankle_jnt" y limit -50.00 50.00 0.00
	$jointconstrain "r_ankle_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "bip_hand_r" x limit -60.00 40.00 0.00
	$jointconstrain "bip_hand_r" y limit -60.00 35.00 0.00
	$jointconstrain "bip_hand_r" z limit -50.00 30.00 0.00

	$jointconstrain "m_tail_jnt" x limit -40.00 40.00 0.00
	$jointconstrain "m_tail_jnt" y limit -60.00 60.00 0.00
	$jointconstrain "m_tail_jnt" z limit -90.00 90.00 0.00

	$jointconstrain "bip_hand_l" x limit -40.00 60.00 0.00
	$jointconstrain "bip_hand_l" y limit -35.00 60.00 0.00
	$jointconstrain "bip_hand_l" z limit -50.00 30.00 0.00

	$jointconstrain "bip_head" x limit -55.00 55.00 0.00
	$jointconstrain "bip_head" y limit -45.00 45.00 0.00
	$jointconstrain "bip_head" z limit -70.00 30.00 0.00
}


Now, I looked at the model, and the guy set up the model to have in the first bodygroup: wings, second bodygroup: tail, and third bodygroup: feet. Let’s fix those bodygroups up first. I will also change the $mass from 2 to 640000 because we are scaling up by 20x in this example. I will also change the name, so the new model will not overwrite anything:




$cd "D:\Documents\3dsMax\meshes\Scaler\Models\boid\"


$modelname “player/archimedes20.mdl”



$model "dove" "dove.smd"


$bodygroup Wings
{
studio “wings_open.smd”
studio “wings_closed.smd”
}
$bodygroup Tail
{
studio “tail_open.smd”
studio “tail_closed.smd”
}
$bodygroup Legs
{
studio “legs.smd”
studio “legs_tucked.smd”
}



$cdmaterials "models\player\archimedes\"
$texturegroup skinfamilies
{
	{ "archimedes.vmt" }
	{ "archimedes_blood.vmt" }
	{ "archimedes_nm.vmt" }
	{ "archimedes_nm_blood.vmt" }
	{ "archimedes_red_invun.vmt" }
	{ "archimedes_blue_invun.vmt" }
}
$hboxset "default"
$hbox 0 "M_COG_jnt" -2.520  -1.413  0.000  0.000  1.413  3.697
$hbox 0 "M_spineA_jnt" -2.846  -2.111  -1.729  0.457  2.111  2.858
$hbox 0 "M_spineB_jnt" -2.275  -1.466  -0.268  0.427  1.499  2.549
$hbox 0 "R_collar_jnt" -1.107  -0.505  -1.621  1.883  2.211  0.691
$hbox 0 "R_wing_jnt" -0.373  -0.817  -0.757  4.320  6.884  1.301
$hbox 0 "R_knee_jnt" -0.248  -0.421  -1.487  1.041  0.874  0.991
$hbox 0 "L_knee_jnt" -0.196  -0.846  -1.487  1.039  0.427  0.991
$hbox 0 "L_collar_jnt" -0.231  -0.643  -1.621  1.883  0.505  0.544
$hbox 0 "L_wing_jnt" -0.373  -6.884  -0.757  4.320  0.817  1.301
$hbox 0 "M_tail_jnt" -1.063  -4.074  -3.394  0.334  0.000  3.394
$hbox 0 "M_neckA_jnt" -2.598  -0.868  -2.004  0.457  1.998  2.004
$hbox 0 "M_neckB_jnt" -2.508  -1.546  -1.039  0.390  1.493  1.836
$hbox 0 "M_neckC_jnt" -2.954  -1.054  -3.507  1.069  1.489  1.407
$hbox 0 "bip_head" -1.195  -0.136  -0.740  0.349  1.255  0.740
// Model uses material "archimedes.vmt"
// Model uses material "archimedes_blood.vmt"
// Model uses material "archimedes_nm.vmt"
// Model uses material "archimedes_nm_blood.vmt"
// Model uses material "archimedes_red_invun.vmt"
// Model uses material "archimedes_blue_invun.vmt"
$surfaceprop "flesh"
$illumposition -0.036 0.000 -0.155
$sequence ref "ref" fps 30.00
$ikchain rfoot bip_hand_R knee  0.000 0.000 0.000
$ikchain lfoot bip_hand_L knee  0.000 0.000 0.000
$ikchain rwing R_wrist_jnt knee  0.000 0.000 0.000
$ikchain lwing L_wrist_jnt knee  0.000 0.000 0.000
$collisionjoints "phymodel.smd" {


$mass 640000.0


	$inertia 1.00
	$damping 0.01
	$rotdamping 1.50
	$rootbone "m_cog_jnt"

	$jointconstrain "m_neckc_jnt" x limit -125.00 125.00 0.00
	$jointconstrain "m_neckc_jnt" y limit -60.00 100.00 0.00
	$jointconstrain "m_neckc_jnt" z limit -65.00 65.00 0.00

	$jointconstrain "r_wing_jnt" x limit -60.00 35.00 0.00
	$jointconstrain "r_wing_jnt" y limit -55.00 75.00 0.00
	$jointconstrain "r_wing_jnt" z limit -60.00 25.00 0.00

	$jointconstrain "r_wrist_jnt" x limit -55.00 90.00 0.00
	$jointconstrain "r_wrist_jnt" y limit -90.00 60.00 0.00
	$jointconstrain "r_wrist_jnt" z limit -55.00 65.00 0.00

	$jointconstrain "l_wing_jnt" x limit -35.00 60.00 0.00
	$jointconstrain "l_wing_jnt" y limit -55.00 75.00 0.00
	$jointconstrain "l_wing_jnt" z limit -25.00 60.00 0.00

	$jointconstrain "l_wrist_jnt" x limit -55.00 90.00 0.00
	$jointconstrain "l_wrist_jnt" y limit -90.00 60.00 0.00
	$jointconstrain "l_wrist_jnt" z limit -55.00 65.00 0.00

	$jointconstrain "m_spineb_jnt" x limit -30.00 30.00 0.00
	$jointconstrain "m_spineb_jnt" y limit -25.00 70.00 0.00
	$jointconstrain "m_spineb_jnt" z limit -40.00 40.00 0.00

	$jointconstrain "l_knee_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "l_knee_jnt" y limit -30.00 70.00 0.00
	$jointconstrain "l_knee_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "l_ankle_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "l_ankle_jnt" y limit -50.00 50.00 0.00
	$jointconstrain "l_ankle_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "r_knee_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "r_knee_jnt" y limit -30.00 70.00 0.00
	$jointconstrain "r_knee_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "r_ankle_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "r_ankle_jnt" y limit -50.00 50.00 0.00
	$jointconstrain "r_ankle_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "bip_hand_r" x limit -60.00 40.00 0.00
	$jointconstrain "bip_hand_r" y limit -60.00 35.00 0.00
	$jointconstrain "bip_hand_r" z limit -50.00 30.00 0.00

	$jointconstrain "m_tail_jnt" x limit -40.00 40.00 0.00
	$jointconstrain "m_tail_jnt" y limit -60.00 60.00 0.00
	$jointconstrain "m_tail_jnt" z limit -90.00 90.00 0.00

	$jointconstrain "bip_hand_l" x limit -40.00 60.00 0.00
	$jointconstrain "bip_hand_l" y limit -35.00 60.00 0.00
	$jointconstrain "bip_hand_l" z limit -50.00 30.00 0.00

	$jointconstrain "bip_head" x limit -55.00 55.00 0.00
	$jointconstrain "bip_head" y limit -45.00 45.00 0.00
	$jointconstrain "bip_head" z limit -70.00 30.00 0.00
}


From here, you can see that I divided the bodygroups into 3 sections as how the original model was.

Now, the main part: scaling up the model by 20x. We do this by adding a line with $scale X just before the line $model, so that $scale affects the other lines below it, especially $model. So go a head and add $scale in, and this is what it should look like:




$cd "D:\Documents\3dsMax\meshes\Scaler\Models\boid\"
$modelname "player/archimedes20.mdl"


$scale 20



$model "dove" "dove.smd"
$bodygroup Wings
{
	studio "wings_open.smd"
	studio "wings_closed.smd"
}
$bodygroup Tail
{
	studio "tail_open.smd"
	studio "tail_closed.smd"
}
$bodygroup Legs
{
	studio "legs.smd"
	studio "legs_tucked.smd"
}
$cdmaterials "models\player\archimedes\"
$texturegroup skinfamilies
{
	{ "archimedes.vmt" }
	{ "archimedes_blood.vmt" }
	{ "archimedes_nm.vmt" }
	{ "archimedes_nm_blood.vmt" }
	{ "archimedes_red_invun.vmt" }
	{ "archimedes_blue_invun.vmt" }
}
$hboxset "default"
$hbox 0 "M_COG_jnt" -2.520  -1.413  0.000  0.000  1.413  3.697
$hbox 0 "M_spineA_jnt" -2.846  -2.111  -1.729  0.457  2.111  2.858
$hbox 0 "M_spineB_jnt" -2.275  -1.466  -0.268  0.427  1.499  2.549
$hbox 0 "R_collar_jnt" -1.107  -0.505  -1.621  1.883  2.211  0.691
$hbox 0 "R_wing_jnt" -0.373  -0.817  -0.757  4.320  6.884  1.301
$hbox 0 "R_knee_jnt" -0.248  -0.421  -1.487  1.041  0.874  0.991
$hbox 0 "L_knee_jnt" -0.196  -0.846  -1.487  1.039  0.427  0.991
$hbox 0 "L_collar_jnt" -0.231  -0.643  -1.621  1.883  0.505  0.544
$hbox 0 "L_wing_jnt" -0.373  -6.884  -0.757  4.320  0.817  1.301
$hbox 0 "M_tail_jnt" -1.063  -4.074  -3.394  0.334  0.000  3.394
$hbox 0 "M_neckA_jnt" -2.598  -0.868  -2.004  0.457  1.998  2.004
$hbox 0 "M_neckB_jnt" -2.508  -1.546  -1.039  0.390  1.493  1.836
$hbox 0 "M_neckC_jnt" -2.954  -1.054  -3.507  1.069  1.489  1.407
$hbox 0 "bip_head" -1.195  -0.136  -0.740  0.349  1.255  0.740
// Model uses material "archimedes.vmt"
// Model uses material "archimedes_blood.vmt"
// Model uses material "archimedes_nm.vmt"
// Model uses material "archimedes_nm_blood.vmt"
// Model uses material "archimedes_red_invun.vmt"
// Model uses material "archimedes_blue_invun.vmt"
$surfaceprop "flesh"
$illumposition -0.036 0.000 -0.155
$sequence ref "ref" fps 30.00
$ikchain rfoot bip_hand_R knee  0.000 0.000 0.000
$ikchain lfoot bip_hand_L knee  0.000 0.000 0.000
$ikchain rwing R_wrist_jnt knee  0.000 0.000 0.000
$ikchain lwing L_wrist_jnt knee  0.000 0.000 0.000
$collisionjoints "phymodel.smd" {

	$mass 640000.0
	$inertia 1.00
	$damping 0.01
	$rotdamping 1.50
	$rootbone "m_cog_jnt"

	$jointconstrain "m_neckc_jnt" x limit -125.00 125.00 0.00
	$jointconstrain "m_neckc_jnt" y limit -60.00 100.00 0.00
	$jointconstrain "m_neckc_jnt" z limit -65.00 65.00 0.00

	$jointconstrain "r_wing_jnt" x limit -60.00 35.00 0.00
	$jointconstrain "r_wing_jnt" y limit -55.00 75.00 0.00
	$jointconstrain "r_wing_jnt" z limit -60.00 25.00 0.00

	$jointconstrain "r_wrist_jnt" x limit -55.00 90.00 0.00
	$jointconstrain "r_wrist_jnt" y limit -90.00 60.00 0.00
	$jointconstrain "r_wrist_jnt" z limit -55.00 65.00 0.00

	$jointconstrain "l_wing_jnt" x limit -35.00 60.00 0.00
	$jointconstrain "l_wing_jnt" y limit -55.00 75.00 0.00
	$jointconstrain "l_wing_jnt" z limit -25.00 60.00 0.00

	$jointconstrain "l_wrist_jnt" x limit -55.00 90.00 0.00
	$jointconstrain "l_wrist_jnt" y limit -90.00 60.00 0.00
	$jointconstrain "l_wrist_jnt" z limit -55.00 65.00 0.00

	$jointconstrain "m_spineb_jnt" x limit -30.00 30.00 0.00
	$jointconstrain "m_spineb_jnt" y limit -25.00 70.00 0.00
	$jointconstrain "m_spineb_jnt" z limit -40.00 40.00 0.00

	$jointconstrain "l_knee_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "l_knee_jnt" y limit -30.00 70.00 0.00
	$jointconstrain "l_knee_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "l_ankle_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "l_ankle_jnt" y limit -50.00 50.00 0.00
	$jointconstrain "l_ankle_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "r_knee_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "r_knee_jnt" y limit -30.00 70.00 0.00
	$jointconstrain "r_knee_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "r_ankle_jnt" x limit -50.00 50.00 0.00
	$jointconstrain "r_ankle_jnt" y limit -50.00 50.00 0.00
	$jointconstrain "r_ankle_jnt" z limit -35.00 35.00 0.00

	$jointconstrain "bip_hand_r" x limit -60.00 40.00 0.00
	$jointconstrain "bip_hand_r" y limit -60.00 35.00 0.00
	$jointconstrain "bip_hand_r" z limit -50.00 30.00 0.00

	$jointconstrain "m_tail_jnt" x limit -40.00 40.00 0.00
	$jointconstrain "m_tail_jnt" y limit -60.00 60.00 0.00
	$jointconstrain "m_tail_jnt" z limit -90.00 90.00 0.00

	$jointconstrain "bip_hand_l" x limit -40.00 60.00 0.00
	$jointconstrain "bip_hand_l" y limit -35.00 60.00 0.00
	$jointconstrain "bip_hand_l" z limit -50.00 30.00 0.00

	$jointconstrain "bip_head" x limit -55.00 55.00 0.00
	$jointconstrain "bip_head" y limit -45.00 45.00 0.00
	$jointconstrain "bip_head" z limit -70.00 30.00 0.00
}


Alright! Now open up the newly edited QC in GUIStudioMDL and hit Compile. After it spams a million words at you, it should say “Completed x.qc”, x being whatever you named your QC. Fire up Gmod and see what what GUIStudioMDL made.

https://dl.dropbox.com/u/16145629/Random/archimedes2.jpg

Spawned at 20x with working bodygroups. :smiley:

I have packed up all the source files I used when writing this so you can have a look at them yourself. Remember to change the $cd line in the QC to where YOUR QC is on your computer. $cd is not needed for the second method, but needed for the first.

https://dl.dropbox.com/u/16145629/Random/ArchimedesResize.zip

I hope this helped.

Thank you so much! This was really helpful.

One last question though: Is there any way to get him to work with the “Stand Pose” tool?

It’s strange that the Stand Pose tool doesn’t seem to work on it. What I do is spawn the model with phys_timescale 0 (typed in the console.) That way, the model will spawn in the “stand” position, stuck in the air. I then use the statue tool on the ragdoll, then revert the physics timescale back to 1.

The console method works just great. Thanks again!