for(int i = 0; i < npoints(0); i++){
// 获取当前正在进行迭代的点的属性
vector current_P = point(0, "P", i);
int current_id = point(0, "id", i);
int branch_count_temp = point(0, "branch_count", i);
int branch_time_temp = point(0, "branch_time", i);
// 设置两个点云查找需要用到的参数,可以推送到界面,方便进行操作
float seach_radius = chf("seach_radius");
int max_points = chi("max_points");
// 设置一个点云查找需要用到的临时变量
int found_ptnum;
// 设置一个点云的handle
int handle = pcopen(1, "P", current_P, seach_radius, max_points);
// 开始进行点云的查找迭代
while(pciterate(handle)){
pcimport(handle, "point.number", found_ptnum);
}
}
if(branch_count_temp > -1 && branch_count_temp <= branch_time_temp){
branch_count_temp += 1;
setpointattrib(0, "branch_count", idx, branch_count_temp, "set");
}else if(branch_count_temp > -1 && branch_count_temp > branch_time_temp){
branch_count_temp = -1;
setpointattrib(0, "branch_count", idx, branch_count_temp, "set");
setpointattrib(0, "Cd", idx, {0,0,0}, "set");
}
这一整段代码的作用是使分支闪电存在的时间大于我们设定的时间范围之后,让分支闪电消失掉,之所以写在点云查找迭代的前面,也是因为SOPsolve这个节点在DOP网络里粒子系统中的循环,没有要改动的地方,唯一要改的可能就是我们自己设定的分支闪电存在的时间