int pcgenerate(string filename, int npoints)
この関数は、指定した名前のポイントクラウドのハンドルを返すか、指定した名前とポイントの数でポイントクラウドを新しく作成します。 初期の状態では、ポイントクラウドにはチャンネルがありませんが、pcunshadedループにpcexportを使うことでチャンネルを追加することができます。 pcgenerate()を既に存在するポイントクラウドの名前でコールすれば、そのポイントクラウドは指定したポイントの数を格納するためのサイズ変更がされないことに注意してください。
ポジションチャンネルを一度構築してしまえば、pcopenをコールすると、生成されたポイントクラウドを検索することができます。 pcopenをコールすると、指定したポジションチャンネルをロックすることに注意してください。 ポイントクラウドが一度開かれると、ポイントクラウドが生成されたものとみなされます。 生成されたポイントクラウドの名前を使ってpcgenerate()をコールすれば、pcopen()のコールと0個のポイントの要求と同じことになります。つまり、pcunshadedやpciterateのループ内で利用可能なポイントはありません。
この関数は、RAM内にポイントクラウドを保存するだけです。ポイントをディスクに書き出すには、pcwrite()を使います。
Note
私達は、pcopen()
と整合性を合わせるために、パラメータをfilenameとして参照します。2つの関数が同じネームスペースを共有します。つまり、pcgenerate("myfile.pc", ...)
をコールすれば、pcopen("myfile.pc", ...)
やpcopenlod("myfile.pc", ...)
をコールすることで"myfile.pc"
を検索することができます。
この作業は、他の方法でも同様です。pcopen("myfile.pc", ...)
をコールしてからpcgenerate("myfile.pc", ...)
をコールすれば、pcgenerate()
コールは新しいポイントクラウドを作成せずに、pcopen()
によってメモリに既に読み込まれたポイントクラウドを使います。
Examples ¶
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);
See also | |
create | |
ptcloud |
|