约束粒子
ParticleBlinkScript节点可用于约束粒子位置。例如,此内核将粒子约束到球体的表面。每个粒子向外或向内移动到球体的半径,并旋转其速度以指向与球体表面相切的点。
以下粒子约束内核的结果
注意: 此内核的更实际版本将涉及粒子的逐渐移动,而不是立即执行。
以下内核的示例节点图
kernel ParticleSphereKernel : ImageComputationKernel<ePixelWise> { Image<eReadWrite> p_position; Image<eReadWrite> p_velocity;
param: float3 _centre; float _radius; void define() { defineParam(_centre, "pa_position", float3(0.0f, 0.0f, 0.0f)); defineParam(_radius, "pa_radius", 1.0f); } void process() { float3 d = p_position()-_centre; float r = length(d); if ( r != 0.0f ) { d /= r; //将粒子移动到球面 p_position() = _centre + d*_radius;
//更改速度以跟随曲面 float3 v = p_velocity(); float lv = length(v); if ( lv != 0.0f ) { v / = lv; p_velocity()= cross(cross(d,v),d)* lv; } } } }; |
抱歉,您没有找到此帮助
为什么这没有帮助? (检查所有适用)
感谢您抽出宝贵时间给我们反馈。