粒子の拘束
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; } } } }; |
申し訳ありませんが、これは役に立ちませんでした
なぜこれが役に立たなかったのですか? (当てはまるもの全てをご確認ください)
ご意見をいただきありがとうございます。
探しているものが見つからない場合、またはワークフローに関する質問がある場合は、お試しくださいファウンドリサポート。
学習コンテンツを改善する方法についてご意見がある場合は、下のボタンを使用してドキュメントチームにメールを送信してください。
Email Docs Teamフィードバックをお寄せいただきありがとうございます。