这篇条目有关 Source引擎。如需详情,点击这里。

$jigglebone

From Valve Developer Community
< Zh
Jump to navigation Jump to search
English (en)Español (es)中文 (zh)Translate (Translate)
Info content.png
This page needs to be translated.
This page either contains information that is only partially or incorrectly translated, or there isn't a translation yet.
If this page cannot be translated for some reason, or is left untranslated for an extended period of time after this notice is posted, the page should be requested to be deleted.
Also, please make sure the article complies with the alternate languages guide.(en)

$jigglebone是一个QC 命令(en),可在所有的 起源 起源 游戏,自从 起源2007 起源2007 以来中使用。 用于将模型骨骼中的某些骨骼标记为“抖动骨骼”,并告知游戏引擎在运行时动态模拟它们,从而实现逼真的次级运动,例如摇晃的触须、弹跳的肌肉、柔软的耳朵等。

Warning.png警告:抖动骨骼的模拟端会沿着骨骼的+Z轴方向延伸。因此,在模型编辑器中创建抖动骨骼时,骨骼的朝向应考虑到这一点。
抖动骨骼的假定朝向。


教程

可以在此处找到添加抖动骨骼的教程。

另一个添加抖动骨骼的教程可以在此处找到。

对于Blender用户,可以在此处找到教程。

语法

$jigglebone <name> {
	<property group> {
		<property> <value> [<value>]
		...
	}
}

其中,<name> 是关节末端的名称。

目前有四种“属性组”:

  • is_rigid
  • is_flexible
  • has_base_spring
  • is_boing (存在于 起源2013 之中)

每个组都是可选的,但is_rigidis_flexible不能同时使用。has_base_springis_boing也不能同时使用。

示例

这里有一些例子:

$jigglebone "Floppy" {
	is_rigid {
		tip_mass 100
		length 20
		angle_constraint 60 
	}
}
$jigglebone "JigglyUpAndDown" {
	is_flexible {
		yaw_stiffness 100
		yaw_damping 3
		length 20
		yaw_constraint 0 0
	}
}
$jigglebone "Bouncy" {
	has_base_spring {
		stiffness 100 
		damping 1 
		left_constraint -20 20
		up_constraint -20 20
		forward_constraint -20 20
	}
}
$jigglebone "SubtleBounceWithALimit" {
	has_base_spring {
		base_mass 5
		stiffness 800
		damping 10
		left_constraint -0.5 0.5
		up_constraint -0.75 2.0
		forward_constraint -0.25 0.25
		left_friction 10
		up_friction 10
		forward_friction 10
	}
}
$jigglebone "FloppyAndBouncy" {
	is_rigid {
		tip_mass 100
		length 20
		angle_constraint 60 
	}

	has_base_spring {
		stiffness 100 
		damping 1 
		left_constraint -20 20
		up_constraint -20 20
		forward_constraint -20 20
	}
}
$jigglebone "ConstantBoing" {
	is_boing {
		impact_speed 0
		impact_angle 0
		damping_rate 0.0
		frequency 20.0
		amplitude 0.2
	}
}

来自Antlion Worker:

$jigglebone "Antlion.glasswingR_bone" {
	is_flexible {
		yaw_stiffness 700
		yaw_damping 6
		pitch_stiffness 700
		pitch_damping 8
		tip_mass 5
		length 30
		angle_constraint 37
	}
}

弹簧

通过指定刚度和阻尼值来模拟弹簧。刚度决定了弹簧的硬度。较低的值(如10)表示弹簧非常松弛和柔弱,而500的值则表示弹簧非常硬且有弹性。合法值范围为1到1000。

阻尼是一种弹簧的摩擦或阻力。阻尼值为零表示弹簧会无限震荡。阻尼值为10会导致弹簧几乎立即停止振动。合法值范围为0到10。

is_flexible

如果抖动骨骼是“柔性的”,则会在骨骼+Z轴方向的一定距离处放置一个模拟质量,骨骼会像一个弹性柔韧的杆一样运动。这种弹簧仅会产生旋转运动,旋转中心位于抖动骨骼的根部。

yaw_stiffness
控制弹簧在局部偏航旋转轴上的刚度。
yaw_damping
控制弹簧在局部偏航旋转轴上的阻尼。较小的值会导致显著的抖动,而较大的值会导致更微妙的运动。
pitch_stiffness
控制弹簧在局部俯仰旋转轴上的刚度。
pitch_damping
控制弹簧在局部俯仰旋转轴上的阻尼。较小的值会导致显著的抖动,而较大的值会导致更微妙的运动。
along_stiffness
控制弹簧沿轴方向的刚度。仅在为该骨骼指定“allow_length_flex”时使用。
along_damping
控制弹簧沿轴方向的阻尼。仅在为该骨骼指定“allow_length_flex”时使用。
allow_length_flex
通常,抖动骨骼会保持其长度刚性。指定此项后,长度也会变得可变。
length
模拟质量距离根部的距离(以英寸为单位)。此值应与骨骼长度匹配;若设置的值大于骨骼长度,且未仔细调整,则可能导致抖动骨骼出现奇怪且不可预测的运动。
tip_mass
模拟质量受重力影响的程度。零表示禁用重力效果,而1000表示质量很重。

is_rigid

如果抖动骨骼是“刚性的”,则会在骨骼末端放置一个模拟质量,骨骼会像一个刚性棍棒一样运动。这种弹簧仅会产生旋转运动,旋转中心位于抖动骨骼的根部。

length
模拟质量距离根部的距离(以英寸为单位)。此值应与骨骼长度匹配;若设置的值大于骨骼长度,且未仔细调整,则可能导致抖动骨骼出现奇怪且不可预测的运动。
tip_mass
模拟质量受重力影响的程度。零表示禁用重力效果,而1000表示质量很重。

角度约束

以下参数可以在 is_rigid(刚性)或 is_flexible(柔性)参数组中使用。请注意,可以不使用这些约束,也可以全部使用,但每个约束都会带来一定的计算开销。

angle_constraint
指定允许的最大角偏转,创建一个抖动骨骼无法穿透的圆锥形边界。
yaw_constraint (min max)
指定沿局部偏航旋转轴允许的最小和最大角偏转。角度值不应超过+/- 90度。
Note.png注意当使用“yaw_constraint”时,设置角度值大于或等于+/- 90度会导致抖动骨骼产生不期望的翻转现象。为避免此问题,可旋转抖动骨骼以使用“pitch_constraint”。
待完善: 检查此规则是否适用于除“is_rigid”以外的其他参数组
yaw_friction
非零值会在抖动骨骼沿偏航限制平面滑动时产生摩擦力。摩擦值不应超过20单位。
pitch_constraint
指定沿局部俯仰旋转轴允许的最小和最大角偏转。角度值不应超过+/- 90度。
待完善: 检查“pitch_constraint”的角度限制规则是否适用于除“is_rigid”以外的其他参数组
pitch_friction
非零值会在抖动骨骼沿俯仰限制平面滑动时产生摩擦力。摩擦值不应超过20单位。

has_base_spring

如果抖动骨骼具有“基础弹簧”,模拟质量将被放置在骨骼的基部。这种弹簧仅产生平移运动,使整个抖动骨骼在 X、Y 和 Z 轴上移动。

stiffness
基础弹簧的刚度。
damping
基础弹簧的阻尼系数。
left_constraint
骨骼沿局部 X 轴允许的最大移动距离。
left_friction
当弹簧与左侧约束摩擦时,在向上/向前平面内施加的摩擦力大小。
up_constraint
骨骼沿局部 Y 轴允许的最大移动距离。
up_friction
当弹簧与向上约束摩擦时,在左侧/向前平面内施加的摩擦力大小。
forward_constraint
骨骼沿局部 Z 轴允许的最大移动距离。
forward_friction
当弹簧与向前约束摩擦时,在左侧/向上平面内施加的摩擦力大小。
base_mass
基础弹簧受重力影响的程度。

is_boing

生成一个简单的压缩与伸展的正弦波“弹跳”效果。当骨骼移动并达到速度阈值时,会触发缩放与伸展的动态效果,使骨骼在运动中呈现弹性外观。

注意:在 军团要塞2 中,执行弹跳效果时尺寸有时会随机变为 0,导致效果消失。

impact_speed

触发弹跳效果所需的速度阈值。当骨骼的速度超过此值时,弹跳动画会被激活。 示例:20。 此效果在 军团要塞2 中似乎并未按预期工作,即使设置了高值,任何形式的移动似乎都会触发效果。

impact_angle

确定弹跳效果对骨骼运动方向相对于其方向的敏感度。只有与指定角度一致的运动会触发效果。 示例:90。 逻辑上,值的范围为 0 到 180。

damping_rate

控制弹跳效果随时间的衰减速度。较低的值会导致动画持续时间更长。值为 0.0 时,弹跳效果不会停止动画;在触发后会无限生长和恢复。值为 1.0 时,动画会快速消退,而值为 3.0 或更高可能会使其几乎立即恢复正常。

frequency

频率较高时会导致更快的运动,而较低的频率会导致更慢的运动。值为 0.0 时,动画完全停止,而值为 40.0 时会使动画极其快速。

amplitude

控制弹跳效果期间骨骼缩放的幅度。较高的值会产生更夸张的缩放与伸展效果。骨骼速度相对于 impact_speed 阈值的大小会影响感知的振幅。 在 军团要塞2 中,即使未达到最大阈值速度,此效果似乎始终触发最大振幅。