STEAM GROUP
Blender Source Tools BleST
STEAM GROUP
Blender Source Tools BleST
296
IN-GAME
1,906
ONLINE
Founded
November 8, 2013
Showing 1-10 of 586 entries
5
Shape Keys break when importing the model that I exported
2
Feature request/help
1
Issues with assigning vertex groups to the Loch'n'load
5
Separate eye ranges
Originally posted by Rubus Cockburnianus:
I have a model with the eyes are separated and the ranges must be different (left and right wise) -
Source doesn't support that. The best that you can do is move one eye's coordinates farther backwards into the head to make its eye movements relatively bigger/stronger than the other eye, or farther forwards towards the eye's front surface to make them smaller. (Alternatively, you could compile separate models for each eye, letting them have different slider ranges for the eye sliders.)

Originally posted by Rubus Cockburnianus:
- when I compile the eyes seem to be - barely affected by the viewtarget movements. -
Remember, the eye coordinates are supposed to be the centre of a (sometimes-"fake") eyeball/sphere, not the very front of it.
If your model has spherical eye meshes, then select one of the eyes, find the centre of it, and use that as the eye coordinates (usually just mirrored for the other eye).
If your model doesn't have spherical eye meshes, then you should create a new sphere object/shape yourself, move it to be centred on the model's eye, scale it up to an appropriate eye size, and move the sphere backwards into the head until the front of the sphere lines up with the front of the model's eyes. Then, use this sphere's centre as the eye coordinates, and delete the sphere afterwards.

Source's QC eye system rotates the eye texture around the eye coordinates - so rotating the texture around the very front of the eye mesh won't really do much, whereas rotating the texture around a point farther back in the head will move the texture more on the eye mesh.

Originally posted by Rubus Cockburnianus:
- $modelname "test\Model2\Model2.mdl" -
Unless you plan on making other Model2 models, I'd suggest changing this line to just $ModelName "test/Model2.mdl" - it doesn't really help for organisation to give each and every model its very own folder to reside in.
(It makes sense to have a "unique" folder for $CDMaterials (if the model has multiple materials/textures), but not really for $ModelName.)

Originally posted by Rubus Cockburnianus:
- $attachment "Eyes" "bip_head" 0.000003 -3.21787 81.4759 absolute -
You should probably change the X coordinate here to 0.

Originally posted by Rubus Cockburnianus:
-
eyeball "eye_right" "bip_head" -2.05802 -3.21787 81.476 "eye_right" 1 0 "NotUsed" 7
Flexcontroller "Eyes" range -25 20 "Eyes_UpDown"
Flexcontroller "Eyes" range -55 20 "Eyes_RightLeft"
-
eyeball "eye_left" "bip_head" 2.05802 -3.21787 81.4759 "eye_left" 1 0 "NotUsed" 7
Flexcontroller "Eyes" range -25 20 "Eyes_UpDown"
Flexcontroller "Eyes" range -20 55 "Eyes_RightLeft"
-
You can't have more than one flex controller/slider with the same name in a model. (Or, technically, you can, but only one of them will affect the model, and the other/the rest will do nothing.)

The "Eyes_UpDown" flex controllers are identical, so you can safely remove one of them. The "Eyes_RightLeft" flex controllers are merely mirrored compared to the other, so you might be able to get away with removing one of them and changing the other's range to go from -37.5 to +37.5, along with adjusting the Eyeball statements' "neutral angle" (the 0 before "NotUsed") and/or X coordinate to compensate.

Originally posted by Rubus Cockburnianus:
- $texturegroup "skinfamilies"
{
{ "Body" "Eye_Sparkle" "Eye_Back" "Suit" "eye_left" "eye_right" }
{ "Body2" "Eye_Sparkle" "Eye_Back" "Suit" "eye_left" "eye_right" }
} -
You can safely get rid of "Eye_Sparkle", "Eye_Back", "Suit", "eye_left", and "eye_right" here, as they're the same in both skins.
2
Help with Shape keys/flexes in .QC file
Originally posted by Bad Company:
$model flextest "Head_Mesh.smd" { flexfile "Head_Mesh.vta"{ flexpair "closeeyeL" 1 frame 1 } flexcontroller closeeyeL range -1 1 "closeeyeL" %closeeyeL = closeeyeL }
Here, I've isolated 5 lines of text in the QC file. In order, they...

- Load the "Head_Mesh.smd" file as a mesh, with the internal name "flextest". (The internal name is the name of its body group in Source Filmmaker.)
- Load the "Head_Mesh.vta" file to add vertex "shape keys" (flexes) to the above mesh.
- Split the first shape key in the VTA file into two internal flexes in the model. You supplied the name "closeeyeL", so the resulting internal flexes will be named "closeeyeLL" and "closeeyeLR", respectively. The one suffixed with "L" only affects the left side of the model, and likewise for "R" and the right side - there's a 1-unit-wide area of "smoothing" between the two on the middle of the model.
- Create a "flex controller" (controller) (the slider that you interact with in Source Filmmaker to control the flex). The controller "group" name is unused, so we'll ignore the first "closeeyeL". You specify a slider range from -1 to 1, but you'd usually only want it to range from 0 to 1 (or -45 to 45 for eyes_updown and eyes_rightleft). The name of the controller is "closeeyeL", so that's the name of the slider that you'll see in Source Filmmaker.
- Attempt to assign an internal flex named "closeeyeL" to a controller named "closeeyeL" - but you don't have an internal flex with that name! The closest are "closeeyeLL" and "closeeyeLR", since you split the VTA's shape key into a separate internal flex for each side.

Given that you seem to have "L" and "R" shape keys in the VTA, you probably meant to use "Flex" to load them as-is, not "FlexPair" to auto-split each of them further. You'll probably want to do something like this instead:
$Model flextest "Head_Mesh.smd" { FlexFile "Head_Mesh.vta"{ Flex "closeeyeL" Frame 1 Flex "closeeyeR" Frame 2 Flex "closebotheyes" Frame 3 } FlexController X "right_closeeye" "left_closeeye" "closebotheyes" %closeeyeL = left_closeeye %closeeyeR = right_closeeye %closebotheyes = closebotheyes }
Here, I use "Flex" instead of "FlexPair", to load flexes as-is without splitting them and giving them extra suffixes. Then, I use a single "FlexController" line to create all controllers. The controllers don't need to have the same names as the internal flexes - I name the controllers "right_closeeye" and "left_closeeye" to make a single stereo slider in Source Filmmaker (it's important to make the "right_" and "left_" controllers in that order). Then, I assign "closeeyeL" and "closeeyeR" to the stereo "closeeye" controllers, and assign "closebotheyes" to a non-stereo controller named "closebotheyes". (You can also use math to combine all three flexes into a single stereo slider, blending between the "side-only" and "combined" flexes based on how active each of them are.)


Originally posted by Bad Company:
defaultflex frame 0
"DefaultFlex" is used to automatically activate a certain flex when no other flexes are active. Frame 0 of a VTA is the original shape, so "DefaultFlex Frame 0" is useless - feel free to delete this line.


Originally posted by Bad Company:
- "closeeyeL" is an unknown flex, even the it exists in the .VTA file. -
Technically, VTA shape keys don't have names, only frame numbers. The "closeeyeL" in the VTA is just a "comment", ignored by StudioMDL (the model compiler).

You could have the first shape key in Blender called "Foo" and export it as a VTA. "Foo" will now be frame 1 of the VTA file. Then, you can use "Flex Bar Frame 1" in the QC to load frame 1 of the VTA. Frame 1 of the VTA will now be a flex named "Bar" in the model. Then, you can use "FlexController X Baz" to create a controller, and use "%Bar = Qux" to assign it. "Bar" is now controlled by a "Qux" slider.
2
Feature request: DMX animated position
1
Blender freezes when clicking the Export button.
2
Can't seem to add onto materials of an existing .smd
2
[TF2 Cosmetic] Shape Keys not working in Workshop Tools
Showing 1-10 of 586 entries