pcgenerate
int pcgenerate(string filename, int npoints)
该函数返回指定名称点云的句柄,或创建具有指定名称和点数量的新点云。 初始时点云不包含任何通道,但可以通过在pcunshaded循环中使用pcexport添加通道。注意:如果使用已存在的点云名称调用pcgenerate(),该点云不会被重新调整为指定点数。
建立位置通道后,可调用pcopen查询生成的点云。注意:调用pcopen会锁定指定的位置通道。点云一旦被打开即视为已生成。对已生成的点云调用pcgenerate()类似于调用pcopen()并请求0个点:在pcunshaded或pciterate循环中将无法获取任何点。
本函数仅将点云存储在内存中。如需写入磁盘,请使用pcwrite()。
注意
为保持与pcopen()
的一致性,我们将参数称为文件名。这两个函数共享同一命名空间。例如调用pcgenerate("myfile.pc", ...)
后,可通过pcopen("myfile.pc", ...)
或pcopenlod("myfile.pc", ...)
查询该点云。
反之亦然。若先调用pcopen("myfile.pc", ...)
再调用pcgenerate("myfile.pc", ...)
,pcgenerate()将直接使用pcopen()已加载到内存的点云,而非创建新点云。
示例
vector position;int ohandle, ghandle, rval;
ghandle = pcgenerate(texturename, npoints);while (pcunshaded(ghandle, "P")){ // 计算'position'... rval = pcexport(ghandle, "P", position);}
ohandle = pcopen(texturename, "P", P, maxdistance, maxpoints);while (pciterate(ohandle)){ rval = pcimport(ohandle, "P", position); // 对'position'进行处理...}
pcclose(ohandle);pcclose(ghandle);