The qcScriptEditor (in developement...)

Hi there

so i’m gonna present you a small tool, which is supposed to save you time with the model,texture -> sdk process.
i was annoyed by the thousand steps you have to do, to get a single model with texture in the sdk, to use it in hammer or gmod or anywhere else.

it basically does this:

  • moves the files to the right position
  • generates a qc file which you can modify before compiling
  • compiles all the stuff and moves the output files in the correct directory, for immediate use in your sdk environment.
  • brings in an UI, so you dont have to handle cmd boxes anymore
  • supports basic drag-and-drop, to save your time looking for your files.
  • batch compilation (not implemented yet, but planned for further developement)

Since i am a newbie in the source engine and only used static props with custom textures for import, i need your help, to fully build an useful tool for all the sdk developers and mappers!

This is what i need to know:

  • Does this tool help you in your import process yet? if not, what do you miss?
  • where is the difference in animated models? what do you need? what is missing?
  • how does the import work, if you want to use a custom model but an existing texture?
  • what further functions would you like to see in a tool which helps you speeding up your import process?

Download tool (v0.9.6b - last update: 09/10)

Readme:

What thousands of steps are these? The only complicated parts are getting the QC right and making/rigging the model, which this doesn’t help with from what you’ve written there @.@

To answer your question the difference for animated models is you must define your animation smds in the QC. Also is this a compiler in itself or is it using something else (like StudioCompiler)?

All you have to do for a custom model is set it up right when you export it, and if you want it to have an existing texture its also done in the modelling program, you just have to define the right directory in the qc.

And does this program convert your tga/bmp files to VTFs? because if it doesn’t there is no point in it moving stuff around.

This is actually useful for beginners and to be honest I’d rather use something like this than fiddle with all that annoying stuff myself.

there are enough steps that i write a tool for it ^^

Could you specify this please? or send me a link?

Its not a compiler itself, the sdk applications are executed remotely, only the parameters are controlled by this application.

Yes, it does that.

Perhaps you want to test it out before commenting?
Would make things much more useful ;D

Thanks for your reply

I’m sorry if you took me as being mean, I was not trying to be so, i’m just trying to point out the parts that didn’t sound right or need improvement from what you said :slight_smile:

(If i’m not allowed to post these for some reason let me know and i’ll remove em)

V_model:


$modelname "weapons/v_superphyscannon.mdl"
$model "studio" "SuperPhyscannon_reference.smd"
$poseparameter active 0.00 1.00
$cdmaterials "models\weapons\v_physcannon\"
$cdmaterials "models\weapons\v_hand\"
$hboxset "default"
$hbox 0 "Base" -6.977  -8.508  -15.484  14.471  5.898  18.091
$hbox 0 "Prong_B" -1.620  -5.240  -1.378  4.704  1.820  11.821
$hbox 0 "Prong_A" -0.796  -1.506  -1.822  0.655  7.236  11.386
$hbox 0 "Doodad_1" -2.188  -0.599  -0.272  0.678  2.401  0.818
$hbox 0 "Handle" -3.116  -3.526  -10.562  3.400  1.962  2.144
$hbox 0 "square" -0.034  -5.232  -7.112  5.406  0.799  0.644
// Model uses material "v_superphyscannon_sheet.vmt"
// Model uses material "v_hand_sheet.vmt"
$attachment "muzzle" "Muzzle" -0.00 0.25 -2.00 rotate 0.00 0.00 0.00
$attachment "fork1b" "Base_A" -0.00 -0.00 -0.00 rotate 0.00 0.00 0.00
$attachment "fork1m" "Prong_A" 0.00 0.00 -0.00 rotate -0.00 0.00 0.00
$attachment "fork1t" "Tip_A" -0.00 -0.00 0.00 rotate 0.00 0.00 0.00
$attachment "fork2b" "Base_B" -0.00 0.00 0.00 rotate 0.00 0.00 0.00
$attachment "fork2m" "Prong_B" 0.00 0.00 0.00 rotate -0.00 0.00 0.00
$attachment "fork2t" "Tip_B" -0.00 -0.00 0.00 rotate 0.00 0.00 0.00
$surfaceprop "default"
$illumposition 47.232 -8.546 -11.292
$sequence idle "idle" loop ACT_VM_IDLE 1 fps 22.00
$sequence hold_idle "hold_idle" loop ACT_VM_RELOAD 1 fps 30.00
$sequence draw "draw" ACT_VM_DRAW 1 fps 30.00
$sequence holster "holster" ACT_VM_HOLSTER 1 fps 30.00
$sequence fire "fire" ACT_VM_PRIMARYATTACK 1 fps 30.00
$sequence altfire "altfire" ACT_VM_SECONDARYATTACK 1 fps 30.00
$sequence chargeup "chargeup" loop fps 30.00
$animation ProngsShut "ProngsShut" fps 30.000000
$animation ProngsOpen "ProngsOpen" fps 30.000000
$sequence prong_blend "ProngsShut" fps 30.00 {
  blendwidth 2
  blend active 0.000000 1.000000
  autoplay
 ProngsOpen
}

Ragdoll (if you want it to have anims for PM/NPC it will have $includemodel lines also):


$modelname "Link_twilightprincess.mdl"
$model "smdimport" "twilightlink_ref.smd" {
     flexfile "mdldecompiler_expressions.vta" {
          flex "l_index" frame 5
          flex "l_thumb" frame 6
          flex "l_middle" frame 7
          flex "l_ring" frame 8
          flex "l_pinky" frame 9
          flex "r_index" frame 10
          flex "r_middle" frame 11
          flex "r_ring" frame 12
          flex "r_pinky" frame 13
          flex "r_thumb" frame 14
          flex "mouth_open" frame 15
          flex "mouth_openbigger" frame 16
          flex "mouth_smile" frame 17
          flex "blink_l" frame 18
          flex "blink_r" frame 19
          flex "face_normal" frame 20
          flex "face_normal2" frame 21
     }
     eyeball righteye joint12 -1.930 -4.230 65.790 eyeball_r 1.000  4.000 LinkSS08 1.930
     eyeball lefteye joint12 1.930 -4.230 65.790 eyeball_l 1.000  -4.000 LinkSS08 1.930
     // If you uncomment the following lines the eyes will be closed
     // I'm including it anyway in case anyone wants to experiment
     // eyelid  upper_right "mdldecompiler_expressions.vta" lowerer 4 0.000000 neutral 4 0.000000 raiser 4 0.000000 split 0.1 eyeball righteye
     // eyelid  lower_right "mdldecompiler_expressions.vta" lowerer 4 0.000000 neutral 4 0.000000 raiser 4 0.000000  split 0.1 eyeball righteye
     // If you uncomment the following lines the eyes will be closed
     // I'm including it anyway in case anyone wants to experiment
     // eyelid  upper_left "mdldecompiler_expressions.vta" lowerer 4 0.000000 neutral 4 0.000000 raiser 4 0.000000 split -0.1 eyeball lefteye
     // eyelid  lower_left "mdldecompiler_expressions.vta" lowerer 4 0.000000 neutral 4 0.000000 raiser 4 0.000000  split -0.1 eyeball lefteye
     flexcontroller phoneme Blank "range" 0.000 1.000
     flexcontroller phoneme l_index "range" 0.000 1.000
     flexcontroller phoneme l_thumb "range" 0.000 1.000
     flexcontroller phoneme l_middle "range" 0.000 1.000
     flexcontroller phoneme l_ring "range" 0.000 1.000
     flexcontroller phoneme l_pinky "range" 0.000 1.000
     flexcontroller phoneme r_index "range" 0.000 1.000
     flexcontroller phoneme r_middle "range" 0.000 1.000
     flexcontroller phoneme r_ring "range" 0.000 1.000
     flexcontroller phoneme r_pinky "range" 0.000 1.000
     flexcontroller phoneme r_thumb "range" 0.000 1.000
     flexcontroller phoneme mouth_open "range" 0.000 1.000
     flexcontroller phoneme mouth_openbigger "range" 0.000 1.000
     flexcontroller phoneme mouth_smile "range" 0.000 1.000
     flexcontroller phoneme blink_l "range" 0.000 1.000
     flexcontroller phoneme blink_r "range" 0.000 1.000
     flexcontroller phoneme face_normal "range" 0.000 1.000
     flexcontroller phoneme face_normal2 "range" 0.000 1.000
    %l_index =  l_index
    %l_thumb =  l_thumb
    %l_middle =  l_middle
    %l_ring =  l_ring
    %l_pinky =  l_pinky
    %r_index =  r_index
    %r_middle =  r_middle
    %r_ring =  r_ring
    %r_pinky =  r_pinky
    %r_thumb =  r_thumb
    %mouth_open =  mouth_open
    %mouth_openbigger =  mouth_openbigger
    %mouth_smile =  mouth_smile
    %blink_l =  blink_l
    %blink_r =  blink_r
    %face_normal =  face_normal
    %face_normal2 =  face_normal2
}
$cdmaterials "models\link_twprincess\"
$hboxset "default"
$hbox 0 "joint1" -6.985  -10.702  -8.453  7.420  9.190  7.341
$hbox 0 "joint2" -3.620  -6.623  0.000  4.522  5.926  16.278
$hbox 0 "joint3" -3.567  -3.073  0.000  3.098  4.960  14.546
$hbox 0 "joint4" -2.781  -9.788  -0.485  2.454  2.751  4.966
$hbox 0 "joint5" -4.452  -6.575  0.000  3.773  6.850  16.288
$hbox 0 "joint6" -2.787  -3.007  0.000  3.767  4.990  14.533
$hbox 0 "joint7" -2.633  -9.719  -0.481  2.590  2.817  4.960
$hbox 0 "joint8" -8.448  -5.006  0.000  8.343  6.970  17.950
$hbox 0 "joint9" -7.549  -0.023  -0.157  7.530  1.556  3.873
$hbox 0 "joint10" -3.525  -3.150  0.000  3.722  3.614  11.925
$hbox 0 "joint11" -3.683  -3.625  0.000  3.565  3.139  11.564
$hbox 0 "joint12" -6.183  -5.636  -1.205  6.144  5.293  12.251
$hbox 0 "joint13" -2.354  -2.389  0.000  2.630  2.125  12.478
$hbox 0 "joint14" -2.534  -3.342  0.000  1.288  2.257  8.604
$hbox 0 "joint15" -2.173  -2.843  0.000  3.530  3.250  14.031
$hbox 0 "joint16" -2.279  -2.254  0.000  1.521  3.344  8.322
$hbox 0 "joint18" -4.884  -5.642  -0.324  4.878  0.417  3.700
$hbox 0 "joint19" -4.173  -3.609  -0.455  4.168  5.078  3.851
$hbox 0 "joint20" -3.618  -3.850  0.000  3.568  3.205  3.896
$hbox 0 "joint21" -2.954  -2.669  0.000  2.930  2.756  4.000
$hbox 0 "joint22" -2.190  -1.922  0.000  2.220  2.119  3.790
$hbox 0 "joint23" -1.464  -1.251  0.000  1.512  1.355  4.725
// Model uses material "LinkSS00.vmt"
// Model uses material "LinkSS11.vmt"
// Model uses material "LinkSS13.vmt"
// Model uses material "LinkSS14.vmt"
// Model uses material "LinkSS17.vmt"
// Model uses material "LinkSS02.vmt"
// Model uses material "LinkSS06.vmt"
// Model uses material "LinkSS10.vmt"
// Model uses material "LinkSS12.vmt"
// Model uses material "LinkSS15.vmt"
// Model uses material "LinkSS16.vmt"
// Model uses material "LinkSS21.vmt"
// Model uses material "LinkSS01.vmt"
// Model uses material "LinkSS07.vmt"
// Model uses material "LinkSS20.vmt"
// Model uses material "LinkMS19.vmt"
// Model uses material "LinkSS03.vmt"
// Model uses material "LinkSS04.vmt"
// Model uses material "LinkSS05.vmt"
// Model uses material "LinkSS18.vmt"
// Model uses material "eyeball_l.vmt"
// Model uses material "eyeball_r.vmt"
// Model uses material "LinkSS08.vmt"
// Model uses material "glint.vmt"
$attachment "eyes" "joint12" -0.01 -2.84 5.17 rotate -10.20 -89.89 0.06
$attachment "mouth" "joint12" 0.80 -5.80 -0.15 rotate -0.00 -80.00 -90.00
$surfaceprop "flesh"
$keyvalues  { prop_data {"base" wooden.large } 
$eyeposition 0.000 0.000 70.000
$illumposition -9.215 0.059 37.039
$sequence ragdoll "ragdoll" ACT_IDLE 1 fps 30.00
$collisionjoints "phymodel.smd" {

	$mass 70.0
	$inertia 10.00
	$damping 0.01
	$rotdamping 1.50
	$rootbone "joint1"

	$jointconstrain "joint8" x limit -90.00 45.00 0.00
	$jointconstrain "joint8" y limit -30.00 30.00 0.00
	$jointconstrain "joint8" z limit -30.00 30.00 0.00

	$jointconstrain "joint12" x limit -45.00 45.00 0.00
	$jointconstrain "joint12" y limit -30.00 30.00 0.00
	$jointconstrain "joint12" z limit -45.00 45.00 0.00

	$jointmassbias "joint18" 0.00
	$jointconstrain "joint18" x limit -30.00 30.00 0.00
	$jointconstrain "joint18" y limit -30.00 30.00 0.00
	$jointconstrain "joint18" z limit -15.00 15.00 0.00

	$jointmassbias "joint19" 0.00
	$jointconstrain "joint19" x limit -20.00 30.00 0.00
	$jointconstrain "joint19" y limit -30.00 30.00 0.00
	$jointconstrain "joint19" z limit -15.00 15.00 0.00

	$jointmassbias "joint20" 0.00
	$jointconstrain "joint20" x limit -30.00 30.00 0.00
	$jointconstrain "joint20" y limit -20.00 20.00 0.00
	$jointconstrain "joint20" z limit -15.00 15.00 0.00

	$jointmassbias "joint21" 0.00
	$jointconstrain "joint21" x limit -20.00 20.00 0.00
	$jointconstrain "joint21" y limit -20.00 20.00 0.00
	$jointconstrain "joint21" z limit -15.00 15.00 0.00

	$jointconstrain "joint11" x limit -65.00 120.00 0.00
	$jointconstrain "joint11" y limit -60.00 100.00 0.00
	$jointconstrain "joint11" z limit -25.00 25.00 0.00

	$jointconstrain "joint10" x limit -120.00 65.00 0.00
	$jointconstrain "joint10" y limit -60.00 100.00 0.00
	$jointconstrain "joint10" z limit -25.00 25.00 0.00

	$jointconstrain "joint13" x limit 0.00 110.00 0.00
	$jointconstrain "joint13" y limit 0.00 0.00 0.00
	$jointconstrain "joint13" z limit 0.00 0.00 0.00

	$jointconstrain "joint15" x limit -110.00 0.00 0.00
	$jointconstrain "joint15" y limit 0.00 0.00 0.00
	$jointconstrain "joint15" z limit 0.00 0.00 0.00

	$jointconstrain "joint16" x limit -15.00 15.00 0.00
	$jointconstrain "joint16" y limit -45.00 30.00 0.00
	$jointconstrain "joint16" z limit -15.00 15.00 0.00

	$jointconstrain "joint14" x limit -15.00 15.00 0.00
	$jointconstrain "joint14" y limit -45.00 30.00 0.00
	$jointconstrain "joint14" z limit -15.00 15.00 0.00

	$jointmassbias "joint22" 0.00
	$jointconstrain "joint22" x limit -30.00 30.00 0.00
	$jointconstrain "joint22" y limit -20.00 20.00 0.00
	$jointconstrain "joint22" z limit -10.00 10.00 0.00

	$jointconstrain "joint5" x limit -35.00 45.00 0.00
	$jointconstrain "joint5" y limit -45.00 10.00 0.00
	$jointconstrain "joint5" z limit -20.00 10.00 0.00

	$jointconstrain "joint6" x limit -110.00 0.00 0.00
	$jointconstrain "joint6" y limit 0.00 0.00 0.00
	$jointconstrain "joint6" z limit 0.00 0.00 0.00

	$jointmassbias "joint23" 0.00
	$jointconstrain "joint23" x limit -30.00 30.00 0.00
	$jointconstrain "joint23" y limit -30.00 30.00 0.00
	$jointconstrain "joint23" z limit -10.00 10.00 0.00

	$jointconstrain "joint2" x limit -35.00 45.00 0.00
	$jointconstrain "joint2" y limit -10.00 45.00 0.00
	$jointconstrain "joint2" z limit -10.00 20.00 0.00

	$jointconstrain "joint3" x limit -110.00 0.00 0.00
	$jointconstrain "joint3" y limit 0.00 0.00 0.00
	$jointconstrain "joint3" z limit 0.00 0.00 0.00

	$jointconstrain "joint4" x limit -30.00 15.00 0.00
	$jointconstrain "joint4" y limit -15.00 15.00 0.00
	$jointconstrain "joint4" z limit -10.00 10.00 0.00

	$jointconstrain "joint7" x limit -30.00 15.00 0.00
	$jointconstrain "joint7" y limit -15.00 15.00 0.00
	$jointconstrain "joint7" z limit -10.00 10.00 0.00
}

Anims:


$modelname "Global_Include.mdl"
$cdmaterials "modelsrc\extra/"
$hboxset "default"
$hbox 1 "ValveBiped.Bip01_Head1" -1.250  -6.500  -3.190  8.250  3.500  3.310
$hbox 4 "ValveBiped.Bip01_L_UpperArm" 0.000  -2.750  -2.750  12.510  1.750  2.250
$hbox 4 "ValveBiped.Bip01_L_Forearm" 0.000  -2.190  -2.380  13.000  1.810  1.620
$hbox 4 "ValveBiped.Bip01_L_Hand" 0.060  -2.000  -1.500  4.060  1.000  2.500
$hbox 5 "ValveBiped.Bip01_R_UpperArm" 0.000  -3.000  -2.250  12.390  2.000  2.750
$hbox 5 "ValveBiped.Bip01_R_Forearm" -0.500  -2.200  -1.550  12.500  1.800  2.450
$hbox 5 "ValveBiped.Bip01_R_Hand" 0.060  -2.000  -2.500  4.060  1.000  1.500
$hbox 6 "ValveBiped.Bip01_L_Thigh" 0.000  -3.750  -3.250  17.850  3.750  3.250
$hbox 6 "ValveBiped.Bip01_L_Calf" 0.000  -3.510  -3.280  15.640  3.490  2.720
$hbox 6 "ValveBiped.Bip01_L_Foot" -1.070  -2.000  -2.840  5.040  5.000  2.160
$hbox 6 "ValveBiped.Bip01_L_Toe0" -0.500  -3.000  -2.190  2.500  0.000  2.460
$hbox 7 "ValveBiped.Bip01_R_Thigh" 0.000  -3.750  -3.250  17.850  3.750  3.250
$hbox 7 "ValveBiped.Bip01_R_Calf" 0.000  -3.510  -2.820  15.640  3.490  3.180
$hbox 7 "ValveBiped.Bip01_R_Foot" -1.060  -2.010  -2.280  5.050  4.990  2.720
$hbox 7 "ValveBiped.Bip01_R_Toe0" -0.500  -3.000  -2.600  2.500  0.000  2.100
$hbox 3 "ValveBiped.Bip01_Pelvis" -7.500  -5.500  -6.000  7.500  8.500  5.000
$hbox 2 "ValveBiped.Bip01_Spine2" -2.500  -2.500  -7.000  14.500  7.500  7.000
$attachment "forward" "ValveBiped.forward" 0.00 0.00 -0.00 rotate 0.00 0.00 0.00
$attachment "anim_attachment_RH" "ValveBiped.Anim_Attachment_RH" -0.00 -0.00 -0.00 rotate -90.00 -90.00 0.00
$attachment "anim_attachment_LH" "ValveBiped.Anim_Attachment_LH" 0.00 0.00 0.00 rotate -90.00 -90.00 0.00
$attachment "anim_attachment_head" "ValveBiped.Bip01_Head1" -0.00 -0.00 -0.00 rotate -90.00 -90.00 0.00
$surfaceprop "flesh"
$illumposition 0.558 -0.009 35.329
$sequence reference "reference" fps 30.00
$sequence signal_advance "signal_advance" ACT_SIGNAL_ADVANCE 1 fps 30.00
$sequence signal_group "signal_group" ACT_SIGNAL_GROUP 1 fps 30.00
$sequence signal_halt "signal_halt" ACT_SIGNAL_HALT 1 fps 30.00
$sequence signal_takecover "signal_takecover" ACT_SIGNAL_TAKECOVER 1 fps 30.00
$sequence signal_forward "signal_forward" ACT_SIGNAL_FORWARD 1 fps 30.00
$sequence melee_gunhit "melee_gunhit" ACT_MELEE_ATTACK1 1 fps 30.00
$sequence Heal "Heal" ACT_CIT_HEAL 1 fps 30.00
$sequence MeleeAttack01 "MeleeAttack01" ACT_MELEE_ATTACK1 1 fps 30.00
$sequence grenThrow "grenThrow" ACT_HL2MP_ACTION_THROW 1 fps 30.00
$sequence grenPlace "grenPlace" ACT_SPECIAL_ATTACK2 1 fps 30.00
$sequence grenDrop "grenDrop" ACT_SPECIAL_ATTACK1 1 fps 30.00
$ikchain rhand ValveBiped.Bip01_R_Hand knee  0.707 0.707 0.000
$ikchain lhand ValveBiped.Bip01_L_Hand knee  0.707 0.707 0.000
$ikchain rfoot ValveBiped.Bip01_R_Foot knee  0.707 -0.707 0.000
$ikchain lfoot ValveBiped.Bip01_L_Foot knee  0.707 -0.707 0.000

What compiler does it use then? because I find StudioCompiler is rubbish for compiling (its really good for decompiling though), would much rather use StudioMDL.

I didn’t see the download (whoops) I shall try it out for you ^^

np :smiley:

Also just so you know this is my process (full not nessicarily needed for everything as different things need different things):

-Decompile model with StudioCompiler
-Import SMD to Milkshape
-Edit model however needed
-Export SMD
-Convert BMP/TGA textures into VTFs (using VTFEdit) + Alter/write VMTs and put in folders where they will need to be
-Put all files needed (base qc/smd’s) into a folder (anywhere doesn’t matter), with a shortcut to StudioMDL
-Alter QC as needed (usually just texture paths/smd names)
-drag qc onto StudioMDL shortcut
-Copy texture and model files from where they are (folders from before for Textures and garrysmod/garrysmod/models/path for the models) to where I want them.
-done

Edit: just fired up your program and can already see the materials are keyvalue settings which isn’t suitible for basic prop porting or ragdolls (at least not how i’ve come to do them), would be better if you at least had the option for basic: Flesh, Metal, Weapon, Default, ect.

Edit2: theres no drag and drop into the program so you can only auto set the model not the collision model which is annoying (though not too problematic).

Theres no sequence field, so you’ll need that for things with animated idle anims. Package name is not obvious as being the directory path.

It resets the default path every time you exit and re-enter which is really annoying (thats why I hate the GUI compilers they all do it ¬.¬)

Add a compile with Orange Box or Ep1 option, will be awesome ! :smiley:

Ok i’ve tried it to the point of generating the qc:

QC generated with this:


// Generated with qcScriptEd by Radon //

$modelname "DC/LoSH/legion_ring_tester.mdl"
$cdmaterials "models/DC/LoSH"
$staticprop
$scale 1.0
$body mybody "losh_ring.smd"
$sequence idle "losh_ring.smd" loop fps 15
$collisionmodel "losh_ring.smd" {
$concave
}
$keyvalues {
  prop_data {
    "base" "Metal.Small"
  }
}

My QC made by hand (altering default):


$modelname "DC/LoSH/losh_ring.mdl"
$scale "1"
$body prop "losh_ring.smd"
$cdmaterials "models/DC/LoSH"

$surfaceprop "metal"

$sequence idle "losh_ring.smd" fps 30

$collisionmodel "losh_ring.smd" {
$mass 100.0
$inertia 1.00
$damping 0.00
$rotdamping 0.00
}

Just noticed the program has a mass setting but doesn’t put it in the qc. Also all the other settings in the fields part should not reset if you change the model smd as you may want the paths/names to be what they were but only change the model smd and not have to re-write all of it again.

Great Post, Thanks a lot Silver!

If the integration of a full or half-automatic qc generation for animated models can be implemented depends on how external programs can get these information out of the modelfiles.
as someone who did not work too much with the sdk yet, i’m overwhelmed with this much information in a single qc file.
Also it seems to me, that you need information about joint locations from the model itself where i can not imagine how to get these informations in an automated process(?)
So this might be a big section i want to work on.

The App uses studiomdl.exe and vtex.exe as external compilers. these are the ones i know are included in the basic sdk. any information how to find the others would be great!

^— this should remain the work of the modeler. since implemented smd exporter and bridges to any 3d application would be an overkill.

As you propably noticed, this sequence of steps is covered by my tool.

Concerning your edits: I’ll look into it. Thx for that.

What exactly do you mean? ep1 is included in the gametypes and when you change your sdk to orangebox/ep1 as well, you shoudl be able to convert your models for ep1

[Edit:]

@mass: ah damn. and i was just fixing this mass implementation yesterday. something went wrong i guess :stuck_out_tongue:

@properties: good idea. will be implemented soon.

(damn I hate this forum and its getting rid of what I write at random ¬.¬ I’ll try and type it out again bare with me)

The flexes are made in a modelling program as a .vta file (not sure how you do this exactly) and defined in the qc as to where it attaches to the model.

ikchains, inboxes and attachments i’m not that sure on yet either as i’m new to modelling, rigging and animating from scratch, but I know they are how you propperly define how you animations attach and affect your model and rigging.

Joint contrains are done in HLMV (which does come with the SDK I think), but i’ve been unable to test how you do it as mine has been broken for ages and i’ve not been able to make any ragdolls from scratch to test because of this :frowning:

What he means by the ep1/orange box thing is that you have to use GUIStudioMDL (instead of StudioMDL, unless theres cmd options) to enable the orange box options (as well as giving you more detailed compilation options but is much more tedius to use).

np :slight_smile: and thats good will make it much better for your standard physics prop making.

I gotta be honest I am speechless, if the concept you are attempting here comes to work as we’d all like it’d be the best thing for us bastards next to sliced bread. I hope this program doesn’t disappear, I would probably have to jump into traffic.

What’s different compared to Cannonfodder’s Studio Compiler?

StudioMDL? I find it works better and you don’t have to define the path to your qc… in your qc (which I never understood why), and I get alot less errors and if something partially fails it doesn’t leave the parts that worked in the folders (as that can be slightly annoying). Theres other stuff but i can’t think what atm :slight_smile:

Damn this looks tight. If it had full support for all the commands of the qc, then there is no way it would not beat typing it out ourselves. A program that can take the original files all the way to the game is long long overdue, the current way is so annoying and so dated. GUIstudioMDL is the only good program out there for compiling, if it was basically that and a gui to the qc it’d be brilliant.

Hi

I didnt know about this StudioMDL. It looks like it basically follows the same idea.

i will try to improve my app more and converse most of your ideas.

if you have any more ideas, tell me!

We defiantly need a program that can take it from smd and tga to mdl and vtf from one program i mean studiomdl can do this.