구속 입자
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 (d, v), d) * lv; } } } }; |
도움이되지 않은 죄송합니다
왜 도움이되지 않습니까? (해당되는 모든 것을 체크하세요)
의견을 보내 주셔서 감사합니다.
찾고있는 것을 찾을 수 없거나 워크 플로 관련 질문이있는 경우 시도해보십시오 파운드리 지원.
학습 내용을 개선 할 수있는 방법에 대한 의견이 있으시면 아래 버튼을 사용하여 설명서 팀에 이메일을 보내십시오.
의견을 보내 주셔서 감사합니다.