[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4787: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4789: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4790: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4791: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
InsideQC Forums • View topic - Questions About Half Life MDL

Questions About Half Life MDL

Discuss programming in the QuakeC language.

Moderator: InsideQC Admins

Questions About Half Life MDL

Postby Ghost_Fang » Mon May 06, 2013 10:07 pm

I have a few questions concerning half life mdl.

-Do I need CSQC for the basic features? (individual hitboxes, basic animations, attachments)

-How does the qc talk to do the engine/model. Would I have to recode most of the basics like t_damge etc.

-How do I simply call/play an animation sequence?

-In addition for simple answers can I be pointed in the direction of GOOD, PROPER, documentation that would answer those questions and more? (As in half life models in a quake engine).

Thanks in advance.
Ghost
Ghost_Fang
 
Posts: 336
Joined: Thu Nov 12, 2009 4:37 am

Re: Questions About Half Life MDL

Postby Spike » Mon May 06, 2013 11:00 pm

.frame specifies a framegroup/animation just as it does with mdl.
attachments - look up the setattachment extension, or use gettaginfo to do the positioning yourself in csqc.
bone controllers are evil things that need special cases.
individual hitboxes are also a unique feature that are not supported.
if you want advanced bone control, you'll theoretically need to use something like skeletal objects.

as far as I'm aware, only fte supports loading halflife models, and even that is retardedly basic (but hey, some people prefer basic).
it doesn't work with skeletal objects, instead you need to use all these float fields with random values just to get it to animate:
frame
frame2
lerpfrac
frame1time
frame2time
baseframe
baseframe2
baseframe1time
baseframe2time
baselerpfrac
basebone
bonecontrol1
bonecontrol2
bonecontrol3
bonecontrol4
bonecontrol5
subblendfrac
basesubblendfrac
the frame* stuff is regular csqc animation control. frame1+2 say which two framegroups to lerp between, lerpfrac says the fraction between them (0 for frame1, 1 for frame2, 0.5 for 50% of each). frame*time says the time into the framegroup. standard csqc controls.
the base* stuff allows you to control leg animations separately from torso animations. set basebone to the 'dividing' bone, and the bones with numbers lower than that will use the baseframe* fields, while the bones with numbers higher use the regular frame* fields. Theoretically I could add support for .baseframe+.basebone to ssqc, but I'm too lazy to commit to doing so. Note that these work with .iqm models too.
the bonecontrol fields allow you to tweak each halflife-model-defined bonecontroller in the model as desired. in player models, 5 is the mouth and the other four typically give control over twisting the spine (so you can look one way and run another).
subblendfrac+basesubblendfrac is some extra wtferyness of the halflife model format. typically used for pivoting the spine, so your model actually looks at the ground and keeps his feet on the ground.
None of these extra fields are available to ssqc. You need csqc to set them.
comine them all and you should have animations working as well as they do in halflife.
like I said before, its retardedly basic, so anyone that already knows how to animate stuff properly in csqc should have no issues with this stuff. I realise that knowing how to get your ssqc data over into csqc is a completely separate headscratcher, but at least the halflife model stuff is easy.
you have full control over the time into the animations, so you have no excuse for not foot-syncing.

anyway, collisions are treated as no different from regular quake models, except I seriously doubt the hitmodel extension works with them. setsize and bboxes is all you get (in part because reverse engineering this model format is annoying).
there's no support for skeletal objects. mostly an oversight, but also lots of work that I don't care to do for such a gimmick feature.

if you want a more reliable, more portable model animation method, use iqm+skeletal objects, as those should work in DP too, and hopefully other engines if any others ever support csqc.
skeletal objects are much more powerful, but lack that 'retardedly basic' limitation.
.
Spike
 
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK


Return to QuakeC Programming

Who is online

Users browsing this forum: No registered users and 1 guest