粒子系统首先是由属性驱动的,以下是解算器可以理解的属性;可使用POP VOP和POP Wrangle创建属性;
State
age |
float |
年龄,单位秒 |
nage |
float |
@age/@life,隐式属性,不可写入 |
life |
float |
生命,单位秒 |
id |
int |
粒子唯一的标识号,使用findattribval()查找id对应的点号 |
Linear Physics
force |
float |
该帧的力 |
mass |
float |
质量默认为1.0 |
spinshape |
vec3 |
与@pscale相乘,以确定粒子旋转的大致形状,默认(1,1,1) |
targetv |
vec3 |
粒子目标速度 |
airresist |
float |
空气阻力,匹配目标速度 |
speedmin, speedmax |
float |
速度限制,单位秒 |
drag |
float |
粒子拖拽默认1.0 |
dragexp |
float |
1~2的值,默认在解算器上设置,用于角度和线性拖拽 |
dragshape |
vec3 |
粒子在其每个局部轴上的拖动量,默认(1,1,1) |
dragcenter |
vec3 |
会与质心间的差产生扭矩,此为局部偏移,默认(0,0,0) |
dragnomal |
float |
如没有dragshape或dragnomal不为1,局部形状会被自动计算,默认1 |
dragtangent |
float |
当自动计算局部dragshape时,与dragnomal一起使用,默认1 |
Angular Physics
p@orient |
vec4 |
粒子方向,默认(0,0,0,1) |
w |
vec3 |
粒子角速度,方向为旋转轴,大小为旋转强度 |
torque |
vec3 |
等价于旋转的力 |
targetw |
vec3 |
粒子目标旋转速度 |
spinresist |
float |
空气阻力,匹配目标旋转速度 |
speedmin, speedmax |
float |
旋转速度限制,单位秒 |
State
dead |
int |
粒子是否死亡 |
stopped |
int |
粒子是否停止,会保留速度,但不在更新位置、方向、速度等 |
stuck |
int |
粒子是否卡住,会机场速度 |
sliding |
int |
粒子是否沿曲面滑动 |
cling |
float |
滑动粒子向内应用力(根据表面法线),有助于弯曲表面停留 |
pospath |
string |
存储一对象路径 |
posprim |
int |
路径几何体prim,默认-1 |
posuv |
vec3 |
prim上的参数化uv |
Collisions
hittotal |
int |
粒子碰撞累计次数,子步内可能碰撞多次但此属性只计算一次;如其他Compute Hit Total开启,可能重复计算; |
hitnum |
int |
粒子是否碰撞 |
hitpath |
string |
存储碰撞对象的路径 |
hitprim |
int |
碰撞面号,默认-1 |
hituv |
vec3 |
碰撞面的参数化uv |
hitnml |
vec3 |
碰撞表面的法线 |
hitv |
vec3 |
碰撞表面的速度 |
hittime |
vec3 |
碰撞发生的时间 |
hitimpulse |
float |
由Gas Impact to Attributes创建,记录碰撞impulse,需在解算器上勾选Add Impact Data; |
has_pprevious |
int |
如@pprevious值有效,此属性为1; |
pprevious |
vec3 |
存储上一帧的粒子位置,用于碰撞检测; |
bounce |
float |
弹力,默认由POP Object上参数控制 |
bounceforward |
float |
弹力切线方向保持的能量,默认由POP Object上参数控制 |
friction |
float |
摩擦力,默认由POP Object上参数控制 |
collisionignore |
string |
匹配的对象(包括对象名字或id)将不会碰撞,不影响碰撞检测,默认"" |
Misc
s@instancepath |
string |
复制到粒子上的几何体,可是磁盘上的路径或op:path(Instance SOP) |
nearest |
int |
最近粒子的@id,如没有id也可能是@ptnum,由Proximity POP创建,默认-1 |
nearestdist |
float |
最近粒子的距离,由Proximity POP创建,默认-1 |
numproximity |
int |
指定范围内的粒子数,由Proximity POP创建,默认0 |