User documentation

PointWeaver式リファレンス

このページは、PointWeaverを点群処理ツールとして使うユーザー向けのドキュメントです。 中心はExpressionノードに書く式の構文です。ノードをつなぎ、式を書き、 プレビューで確認しながら点群属性を変換します。

はじめに

PointWeaverでは、点群ファイルを開き、ノードグラフで処理を組み、3Dビューで結果を確認します。 ユーザーが主に編集するのはExpressionノードの中身です。

1

点群を開く

File > Open Point Cloud... から LAS / LAZ / PLY / PCD を開きます。

2

式を書く

ノードエディタでExpressionノードを選び、左のエディタに複数行の代入式を書きます。

3

確認して書き出す

3Dプレビューやスプレッドシートで確認し、File > Export... で書き出します。

基本操作

やりたいこと操作
点群ファイルを開く File > Open Point Cloud...
デモ点群を開く File > Demo
Expressionノードを追加する Edit > Add Expression Node
式の構文チェックをする Edit > Validate Expressions
プレビューを更新する Edit > Refresh Preview
点群を書き出す File > Set Output... で出力先を決め、File > Export...
属性表を見る View > Geometry Spreadsheet

Expressionノード

Expressionノードは、入力点群を受け取り、各点の属性を書き換えて出力します。 ノードを複数つなぐと、Sourceに近いノードから順番に式が実行されます。

Expression Editor

X = round(X)
Y = round(Y)
Z = round(Z)
R = remap(Z, minZ, maxZ, 0, 255)

Preview

式を反映した点群を3Dで確認します。

Node Editor

Source
Snap XYZ
Colorize
Writer
式は点ごとに文字列として再評価されるわけではありません。 実行前に構文チェックされ、内部表現に変換されてから点群に適用されます。

構文の基本

1行に1つの代入式を書きます。左辺は書き換える属性、右辺は数値式です。 空行は無視されます。

属性 = 式
属性 = 式
属性 = 式

最小例

Z = round(Z)

各点の Z を丸め、その値を同じ点の Z に書き戻します。

複数行

X = round(X)
Y = round(Y)
Z = round(Z)

行は上から順番に実行されます。同じノード内で前の行が書き換えた値を、 後続行から参照できます。

コメントについて

現在のMVPではコメント構文はありません。説明を残したい場合は、 プロジェクト外のメモに残してください。

属性

属性名は式の中で読み書きできます。大文字表記の座標・色属性と、 小文字の属性名を使います。

属性意味読み取り代入
XX座標X = round(X)
YY座標Y = Y + 10
ZZ座標Z = Z * 0.5
R赤成分R = 255
G緑成分G = remap(intensity, 0, 65535, 0, 255)
B青成分B = 64
intensity反射強度intensity = intensity * 1.2
classification分類コードclassification = if(Z > 10, 2, 1)
属性名は現在の実装では上表の表記を使ってください。 例えば座標は x ではなく X です。

統計値

式の中では、処理中の点群範囲を表す統計値を参照できます。 高さで色を付ける処理では minZmaxZ をよく使います。

名前意味
minX現在段階のX最小値R = remap(X, minX, maxX, 0, 255)
maxX現在段階のX最大値R = remap(X, minX, maxX, 0, 255)
minY現在段階のY最小値G = remap(Y, minY, maxY, 0, 255)
maxY現在段階のY最大値G = remap(Y, minY, maxY, 0, 255)
minZ現在段階のZ最小値B = remap(Z, minZ, maxZ, 255, 0)
maxZ現在段階のZ最大値R = remap(Z, minZ, maxZ, 0, 255)

複数ノードをつないだ場合、後段ノードの統計値は前段ノードの処理結果を反映します。 例えば先に Z = round(Z) を実行した場合、次ノードの minZ / maxZ は丸めた後のZ範囲になります。

演算子

種類演算子
加算+Z = Z + 1
減算-X = X - minX
乗算*Z = Z * 0.3048
除算/Z = Z / 1000
剰余%R = X % 255
比較< <= > >= == !=classification = if(Z > 5, 2, 1)

比較式の値

比較式は条件として使います。主な用途は if(condition, a, b) の第1引数です。

R = if(Z > 10, 255, 0)

関数

関数は name(arg1, arg2, ...) の形で呼び出します。 引数には属性、統計値、数値、別の関数呼び出しを書けます。

関数説明
round(x)最も近い整数に丸めます。Z = round(Z)
floor(x)小さい側の整数へ丸めます。Z = floor(Z)
ceil(x)大きい側の整数へ丸めます。Z = ceil(Z)
clamp(x, min, max)値を範囲内に制限します。R = clamp(R, 0, 255)
remap(x, inMin, inMax, outMin, outMax)入力範囲を出力範囲へ線形変換します。R = remap(Z, minZ, maxZ, 0, 255)
min(a, b)小さい方を返します。Z = min(Z, 100)
max(a, b)大きい方を返します。Z = max(Z, 0)
abs(x)絶対値を返します。R = abs(X)
sqrt(x)平方根を返します。R = sqrt(intensity)
sin(x)サインを返します。単位はラジアンです。Z = Z + sin(X)
cos(x)コサインを返します。単位はラジアンです。Z = Z + cos(Y)
if(condition, a, b)条件が真なら a、偽なら b を返します。R = if(Z > 10, 255, 0)

remapの考え方

R = remap(Z, minZ, maxZ, 0, 255)

Z == minZ の点は R = 0Z == maxZ の点は R = 255 になります。 入力値が範囲外なら、その分だけ外挿されます。

remap は自動でclampしません。 0から255に収めたい場合は clamp(remap(...), 0, 255) と明示します。

型と範囲

式は数値式として評価されます。代入先の属性に応じて保存時・表示時の扱いが変わります。

代入先扱い注意
X Y Z 座標値として扱います。 小数を保持できます。グリッドに吸着したい場合は round などを使います。
R G B 表示色として扱います。 プレビューでは0から255の色成分として表示されます。
intensity 反射強度として扱います。 ファイル形式により保存可能な範囲が異なります。
classification 分類コードとして扱います。 整数コードを入れる用途を想定しています。

式の例

座標を1mグリッドへスナップ

X = round(X)
Y = round(Y)
Z = round(Z)

Z高さを赤色に割り当て

R = remap(Z, minZ, maxZ, 0, 255)

高さで赤から青へグラデーション

R = remap(Z, minZ, maxZ, 0, 255)
G = 0
B = remap(Z, minZ, maxZ, 255, 0)

指定高さより上だけ分類を変更

classification = if(Z > 10, 2, classification)

反射強度をグレースケール表示

R = remap(intensity, 0, 65535, 0, 255)
G = remap(intensity, 0, 65535, 0, 255)
B = remap(intensity, 0, 65535, 0, 255)

Z方向を誇張

Z = Z * 2

波形を加える

Z = Z + sin(X * 0.1) * 2

プレビュー

Final Output

ノードグラフ上のExpressionノードを最後まで実行した状態を表示します。 通常はこちらで最終結果を確認します。

Selected Stage

ノードエディタ右上のボタンで切り替えます。 選択中のExpressionノードまで処理した途中結果を表示します。

3Dプレビュー右下の Preview Controls を開くと、 プレビューサンプル数、描画上限、点サイズ、ビュー方向、ギズモ表示を調整できます。

Geometry Spreadsheet

View > Geometry Spreadsheet から別ウィンドウで開きます。 点ごとの ptnum、座標、色、反射強度、分類を表で確認できます。

機能説明
Preview / Source処理後プレビューと元サンプルを切り替えます。
Start / Rows表示開始行と表示行数を調整します。
ptnum Go指定した点番号へ移動します。現在のサンプルに含まれる点だけ対象です。
Frame Selected選択した点へ3Dビューを寄せます。

エラー表示

式に問題がある場合、エディタ下部に行番号・列番号つきで表示されます。 ノードキャンバス上では、問題のあるノードに警告表示が付きます。

よくある原因修正例
存在しない属性名を使った x ではなく X を使います。
関数名を間違えた rempa ではなく remap を使います。
関数の引数が足りない remap(Z, minZ, maxZ, 0, 255) のように必要な引数をすべて書きます。
代入先が属性ではない minZ = 0 のような統計値への代入はできません。