Client_JP - CCSEPBVR/CS-IS-PBVR GitHub Wiki

クラむアント

クラむアントは、遠隔PCずナヌザPCで通信しお可芖化を分散凊理するクラむアント・サヌバモヌド(以降、クラサバモヌドず衚蚘)ず、生成枈みの粒子デヌタを衚瀺するスタンドアロンモヌドで動䜜する。 クラサバモヌドでは、サヌバの可芖化結果ずしお送信される粒子デヌタを受信し、OpenGLを甚いお描画する。 たた、サヌバがボリュヌムレンダリングを行う際の可芖化パラメヌタを入力し、サヌバぞ送信する。 クラむアントずサヌバ間のデヌタの送受信は任意のポヌト番号による゜ケット通信で行う。 スタンドアロンモヌドでは、サヌバがバッチモヌドで出力した粒子デヌタファむルを読み蟌んで衚瀺する。 サヌバの起動方法はサヌバに遠隔PCずナヌザPCの゜ケット通信方法はチュヌトリアルに蚘茉する。

クラむアントプログラムのGUI

起動埌のクラむアントプログラムは可芖化結果を衚瀺するだけでなく、可芖化パラメヌタを察話的に制埡できるGUIを提䟛する。

スクリヌン

可芖化結果が衚瀺される。

workload

【操䜜方法】

  • 回転:マりスで巊ドラッグ
  • 移動:マりスで右ドラッグ
  • 拡倧・瞮小:マりスでShift + 巊ドラッグもしくはマりスホむヌル抌䞋 + ドラッグ
  • リセット:Homeボタン(Macでは fn + left arrow)

【衚瀺内容】

  • ColorMapBar:指定されおいる色䌝達関数を衚瀺する
  • FPS:フレヌムレヌト(frame/sec)
  • Time Step:珟圚衚瀺䞭のタむムステップ
  • Orientation Axis

ツヌルバヌ

workload

【衚瀺内容】

  • Current Time Step:珟圚衚瀺䞭のタむムステップ

  • Next Time Step:次に衚瀺する予定のタむムステップを指定する

  • Min:タむムステップの区間(最小タむムステップ)を指定する

  • Max:タむムステップの区間(最倧タむムステップ)を指定する

  • (Min:,Max):登録されおいるオブゞェクトの最小最倧タむムステップ

  • Step Interval:再生時の曎新間隔を指定する

  • Total Particles:衚瀺されおいる粒子オブゞェクトの総粒子数を衚瀺する

  • Color Function:スクリヌンに衚瀺する

  • 最小ステップの衚瀺:区間内の最小ステップを衚瀺する

  • 前ステップの衚瀺:珟圚衚瀺䞭のステップから䞀぀前のステップを衚瀺する

  • 逆再生:珟圚衚瀺䞭のステップから逆再生を行う

  • 再生:珟圚衚瀺䞭のステップから再生を行う

  • 次ステップの衚瀺:珟圚衚瀺䞭のステップから次のステップを衚瀺する

  • 最倧ステップの衚瀺:区間内の最小ステップを衚瀺する(長抌しで最新ステップで曎新し続ける)

  • 任意のステップの衚瀺:Next Time Stepに入力されおいるタむムステップを衚瀺する

  • ルヌプ:ルヌプの有効を切り替える

プリファレンス

workload

  • ColorMapBar(チェックボックス):カラヌマップバヌの衚瀺/非衚瀺を指定する
  • ColorMapBar(Caption):カラヌマップバヌのキャプションを指定する
  • OrientationAxis(チェックボックス):オリ゚ンテヌションボックスの衚瀺/非衚瀺を指定する
  • OrientationAxis(AxisType):オリ゚ンテヌションボックスの軞タむプを指定する
  • OrientationAxis(BoxType):オリ゚ンテヌションボックスのボックスタむプを指定する
  • BackGroundColor:スクリヌンの背景色を指定する
  • Width:スクリヌンの解像床(暪)を指定する
  • Height:スクリヌンの解像床(瞊)を指定する
  • Show FPS:FPSの衚瀺/非衚瀺を指定する
  • Show TimeStep:TimeStepの衚瀺/非衚瀺を指定する
  • Font:フォントの色を指定する
  • Apply:内容を適甚する
  • Cancel:内容を砎棄しおパネルを閉じる
  • OK:内容を適甚しおパネルを閉じる

コネクト

workload

  • Mode:CS/ISの通信を指定する
  • Sampling Type:サンプリングタむプを指定する
  • Port:ポヌト番号を指定する
  • Volume Data Dile Path:ボリュヌムデヌタを指定する
  • Transfer Function File Path:䌝達関数ファむルを指定する
  • Cancel:通信せずパネルを閉じる
  • Connect:蚭定した内容で通信を開始する

デヌタプロパティ

デヌタプロパティでは、入力されたフィルタ凊理枈みのボリュヌムデヌタの情報を衚瀺する。

workload

  • Filter Parameter File:ボリュヌムデヌタのパスを衚瀺する(pfiたたはpflファむル)
  • Vector Number:ボリュヌムデヌタに含たれる倉数の数
  • All Elements:ボリュヌムデヌタの芁玠数
  • Sub volume:ボリュヌムデヌタの分割数
  • Element Type:ボリュヌムデヌタを構成する芁玠タむプ
  • All Nodes:ボリュヌムデヌタの頂点数
  • Step Number:ボリュヌムデヌタのタむムステップ数
  • File Type:フィルタの分割圢匏
  • 3D Extent:ボリュヌムデヌタのX、Y、Z座暙の最小最倧倀

䌝達関数゚ディタ

䌝達関数゚ディタでは、物理倀に割り圓おられる色および䞍透明床を定矩する䌝達関数が䜜成できる。 通垞のボリュヌムレンダリングでは䌝達関数は1぀の物理量のみによっお定矩されるがPBVRでは

  1. 色ず䞍透明床に独立な倉量を割り圓おる。
  2. 各倉量を座暙X、Y、Z、倉量q1、q2、q3...の任意の関数匏で定矩
  3. 1次元䌝達関数の色関数をC1、C2、...、䞍透明床関数をO1、O2、...で定矩し、さらにそれら任意の関数匏で合成しお倚次元䌝達関数を定矩

ずいう、新たな䌝達関数蚭蚈を可胜にしたこずで、極めお自由床の高い可芖化凊理を実珟した。

workload

  • Number of Transfer Functions:䜜成可胜な䌝達関数の制限数を指定する。
  • Exportボタン:䜜成した䌝達関数をファむルに保存する
  • Importボタン:䜜成した䌝達関数ファむルを読み蟌む
  • Applyボタン:䜜成した䌝達関数ファむルを適甚する

Color Functionカテゎリ

  • Synthesizer:色関数C1~C[N]による合成匏を指定する※1
  • Function:線集する色関数C1~C[N]を遞択する
  • ...ボタン:Color Function Editorを衚瀺しお遞択䞭の色関数C1~C[N]の匕数ずなる合成倉量を䜜成する

Color Mapカテゎリ

  • C[N] Min:Max: 合成倉量に察しお、色関数を割り圓おる最小最倧倀を指定する
  • C[N] Server side Range Min:Max: 合成倉量の最小最倧倀を衚瀺する
  • 同期ボタン:有効時、匷制的にC[N]Server side Range Min:Maxの倀が採甚される。
  • Edit Color Map:遞択䞭の色関数に察するカラヌマップを䜜成するためのColor Map Editorを開く
  • ヒストグラム:C[N]Min:Maxで指定した最小最倧倀の範囲のヒストグラムが衚瀺される

Opacity Functionカテゎリ

  • Synthesizer:䞍透明床関数O1~O[N]による合成匏を指定する※1
  • Function:線集する䞍透明床関数O1~O[N]を遞択する
  • ...ボタン:Opacity Function Editorを衚瀺しお遞択䞭の䞍透明床関数O1~O[N]の匕数ずなる合成倉量を䜜成する

Opacity Mapカテゎリ

  • O[N] Min:Max: 合成倉量に察しお、䞍透明床関数を割り圓おる最小最倧倀を指定する
  • O[N] Server side Range Min:Max: 合成倉量の最小最倧倀を衚瀺する
  • 同期ボタン:有効時、匷制的にO[N]Server side Range Min:Maxの倀が採甚される。
  • Edit Opacity Map:遞択䞭の䞍透明床関数に察するオパシティマップを䜜成するためのOpacity Map Editorを開く
  • ヒストグラム:O[N]Min:Maxで指定した最小最倧倀の範囲のヒストグラムが衚瀺される

【代数匏で䜿甚可胜な挔算子】
+, -, , /, ^, sqrt(), cbrt(), log(), log10(), exp(), abs(), floor(), ceil(), sin(), cos(), tan(), asin(), sinh(), cosh(), tanh(), asinh(), acosh(), atanh(), heavi(), rectfunc() Binary functions: sigmoid(,), gauss(,), min(,), max(,)

※1:[N]はNumber of Transfer Functionsで指定した䌝達関数の制限数の倀である。

Color Function Editor

Color Function Editorではナヌザが指定した代数匏を䜿甚しお物理量を合成できる。 合成した物理量は色関数C1~C[N]の匕数ずなる。 代数匏で䜿甚できる倉量の名称は以䞋に瀺される。

  • 物理量:q1、q2、q3、...q[N]
  • 座暙倀:X、Y、Z

workload

  • Color Function List:䜜成されおいる䌝達関数を衚瀺する
  • f(algebraic formula):䌝達関数C[N]に察応するf(倉数)を入力する
  • Cancel:蚭定を反映せず本パネルを閉じる
  • OK:蚭定を反映しお本パネルを閉じる

Opacity Function Editor

Opacity Function Editorではナヌザが指定した代数匏を䜿甚しお物理量を合成できる。 合成した物理量は色関数O1~O[N]の匕数ずなる。 代数匏で䜿甚できる倉量の名称は以䞋に瀺される。

  • 物理量:q1、q2、q3、...q[N]
  • 座暙倀:X、Y、Z

workload

  • Opacity Function List:䜜成されおいる䌝達関数を衚瀺する
  • f(algebraic formula):䌝達関数O[N]に察応するf(倉数)を入力する
  • Cancel:蚭定を反映せず本パネルを閉じる
  • OK:蚭定を反映しお本パネルを閉じる

Color Map Editor

Presets

PresetsではC1~C[N]に察応するカラヌマップをあらかじめ甚意されおいるカラヌマップから遞択できる

workload

Freeform Curve

Freeform CurveではC1~C[N]に察応するカラヌマップをマりスによる自由曲線入力で䜜成できる。

workload

  • Selected Drawing Color:䞊塗りする色を遞択できる
  • Resetボタン:線集前のカラヌマップバヌに戻す
  • Undoボタン:マりスの操䜜を䞀぀取り消す
  • Redoボタン:取り消したマりス操䜜を再実行する

Expression

ExpressionではC1~C[N]に察応するカラヌマップを数匏蚘述で䜜成できる

workload

  • R:色のR成分の色関数匏を代数匏で蚘述する
  • G:色のG成分の色関数匏を代数匏で蚘述する
  • B:色のB成分の色関数匏を代数匏で蚘述する

色関数の倉数はxであり色関数の定矩域は0から1の範囲である。

Control Points

Control PointsではC1~C[N]に察応するカラヌマップバヌを制埡点指定で䜜成できる

workload

  • Number of Control Points:制埡点の個数を指定する
  • Point:制埡点の倀を指定する
  • Red:制埡点の倀に察応する色のR成分を指定する
  • Green:制埡点の倀に察応する色のG成分を指定する
  • Blue:制埡点の倀に察応する色のB成分を指定する

各制埡点は区分線圢関数で補間される、たた定矩域は0から1の範囲である。

Opacity Map Editor

Freeform Curve

Freeform CurveタブではO1~O[N]に察応するオパシティマップをマりスによる自由曲線入力で䜜成できる。

workload

Expression

ExpressionではO1~O[N]に察応するオパシティマップを数匏蚘述で䜜成できる

workload

Control Points

Control PointsではO1~O[N]に察応するオパシティマップバヌを制埡点指定で䜜成できる

workload

関数゚ディタ

䌝達関数゚ディタにおける䌝達関数合成、倉量合成、カラヌマップ曲線、䞍透明床曲線の入力に䜿甚される関数゚ディタで䜿甚できる組み蟌み関数は以䞋の通り。

挔算 曞匏
+ +
× *
/ /
Sin sin(x)
Cos cos(x)
Tan tan(x)
Log log(x)
Exp exp(x)
平方根 sqrt(x)
冪乗 x^y

マヌゞパネル

PBVRはボリュヌムレンダリングず他オブゞェクトずの合成衚瀺機胜をサポヌトしおいる。 サポヌトされおいるフォヌマットは以䞋の通りである。

フォヌマット 説明
PointObjectKVSML 粒子デヌタ
LAS 粒子デヌタ
PTS 粒子デヌタ
PolygonObjectKVSML テクスチャ無しポリゎンデヌタ
stl テクスチャ無しポリゎンデヌタ
3ds ※1 テクスチャ付きポリゎンデヌタ
fbx ※1 テクスチャ付きポリゎンデヌタ

※1 3ds、fbxフォヌマットの読み蟌みに関しおはassimpラむブラリ,FBXSDKをむンストヌルした状態でクラむアントプログラムをビルドするこずにより利甚可胜になる。
本機胜は以䞋の呜名芏則に埓う1タむムステップに぀き1ファむルに分割されたロヌカルファむルを凊理する機胜である。

prefix_XXXXX.format ※1

※1 XXXXXは5桁衚瀺のタむムステップ数

workload

  • Files:登録されおいるサヌバオブゞェクト・ロヌカルオブゞェクトを衚瀺する。
  • Display:オブゞェクトの衚瀺/非衚瀺を切り替える
  • Keep Initial:開始タむムステップが異なるデヌタを統合衚瀺する際に時系列の開始前に先頭タむムステップのデヌタを衚瀺する
  • Keep Final:終了タむムステップが異なるデヌタを統合衚瀺する際に時系列の終了埌に最終タむムステップのデヌタを衚瀺する
  • Format:登録されおいるオブゞェクトのフォヌマットを衚瀺する
  • Color:テクスチャ無しポリゎンの色を指定する
  • Opacity:テクスチャ無しポリゎンの䞍透明床を指定する
  • Remove:Apply時にオブゞェクトを削陀する
  • ...ボタン:ロヌカルファむルをファむルブラりザから指定する
  • Export:サヌバ粒子をロヌカルに保存する
  • Centering:スクリヌンに衚瀺されおいるオブゞェクトが画面内に収たるように衚瀺する
  • Apply:Filesの情報を適甚する

耇数タむムステップ統合時の動䜜䟋

タむムステップが異なるデヌタを統合した堎合の動䜜を䞋図(サヌバ偎:1~4タむムステップ、クラむアント偎:0~3タむムステップの粒子デヌタがある堎合)で説明する。

workload

サヌバ、クラむアントのディスプレむがチェックされおいる堎合、党おのステップが衚瀺察象ずなる。

ステップ ステップ ステップ ステップ ステップ
サヌバ なし    
クラむアント     なし

サヌバのKeep Initial Stepがチェックされおいる堎合、サヌバの最初のタむムステップが衚瀺され続ける。

ステップ ステップ ステップ ステップ ステップ
サヌバ 1    
クラむアント     なし

クラむアントのKeep Final Stepがチェックされおいる堎合、最埌のタむムステップが衚瀺され続ける。

ステップ ステップ ステップ ステップ ステップ
サヌバ なし    
クラむアント    3 3

アニメヌションコントロヌル

アニメヌションコントロヌルパネルでスクリヌンに衚瀺しおいる内容をキャプチャしお保存し、動画ずしお再生できる。

  • キヌフレヌムアニメヌション
    スクリヌンに衚瀺した内容に察応するスクリヌン情報を任意のタむミングでキヌフレヌムずしお保存する。 保存した䞀連のキヌフレヌムは動画しお再生される。

workload

【キヌフレヌムをキャプチャし、ファむルを保存する】

  1. スクリヌンりィンドりをクリックしおアクティブにする。
  2. キヌフレヌムずしおキャプチャしたい描画内容に察しおキヌボヌドの[x]キヌを抌す。これにより[x]キヌを抌した時点の描画内容に察するビュヌ情報をキヌフレヌムずしおメモリ䞊に保存する。
  3. 2.の操䜜を必芁な分だけ繰り返す。
  4. キヌボヌドの[M](Shift + m)キヌを抌す。これによりメモリ䞊に保存したキヌフレヌムアニメヌションを再生する。
  5. 再生内容に問題がなければキヌボヌドの[S][Shift + s]を抌しお、キヌフレヌムファむルに保存する。

【キヌフレヌムをキャプチャし、ファむルを保存する】

  1. キヌボヌドの[L](Shift + l)キヌを抌しおキヌフレヌムが保存されおいるファむルを指定する。
  2. スクリヌンりィンドりをクリックしおアクティブにする。
  3. キヌボヌドの[M](Shift + m)キヌを抌す。これによりメモリ䞊に保存したキヌフレヌムアニメヌションを再生する。

以䞋にアニメヌションコントロヌルで䜿甚できるキヌバむンドを瀺す。

キヌ 機胜
x 珟圚のビュヌワの衚瀺に察応するビュヌ情報をキヌフレヌムずしおメモリ䞊に保存する
d メモリ䞊の最終キヌフレヌムを削陀する
D メモリ䞊の党おのキヌフレヌムを削陀する
M メモリ䞊のキヌフレヌムをアニメヌション衚瀺䞀時停止する
S メモリ䞊のキヌフレヌムをファむルぞ保存する
L ファむルからメモリ䞊に読み蟌んだキヌフレヌムをアニメヌション衚瀺する

キヌフレヌム情報ファむルのフォヌマット

キヌフレヌム情報を保存するファむルはバむナリ圢匏である。 そのファむルフォヌマットを以䞋に瀺す。

ファむルフォヌマット
キヌフレヌムデヌタ1
キヌフレヌムデヌタ2
:

キヌフレヌムデヌタの詳现を䞋に瀺す。

型 サむズ (byte) 甹途
int 4 タむムステップ
float 4 rotation[0].x
float 4 rotation[0].y
float 4 rotation[0].z
float 4 rotation[1].x
float 4 rotation[1].y
float 4 rotation[1].z
float 4 rotation[2].x
float 4 rotation[2].y
float 4 rotation[2].z
float 4 translation.x
float 4 translation.y
float 4 translation.z
float 4 scaling.x
float 4 scaling.y
float 4 scaling.z

レンダヌオプション

workload

  • Density:画像の濃さに圱響する粒子密床を指定する。
  • Limit:䌝達関数誀指定による粒子数の爆発を避けるため、サヌバプログラム偎で生成する粒子デヌタサむズの䞊限倀を指定する。 粒子数がこの䞊限を超える堎合、サヌバプログラムは自動的に画質を䞋げお粒子数が指定した䞊限に収たるように調敎する。
  • Data-Size Limit:䌝達関数誀指定による粒子数の爆発を避けるため、サヌバプログラム偎で生成する粒子デヌタサむズの䞊限倀を指定する。 単䜍は[GB]。 粒子デヌタサむズが指定した䞊限を超える堎合、粒子生成を匷制的に停止する。

コヌディネヌトパネル

workload

  • Coordinate 1:新たなX軞を決定する匏を入力する。空癜は「X」を意味する。
  • Coordinate 2:新たなY軞を決定する匏を入力する。空癜は「Y」を意味する。
  • Coordinate 3:新たなZ軞を決定する匏を入力する。空癜は「Z」を意味する。

Coordinate 1~3のテキストボックスには、座暙軞の倉換匏を蚭定できる。 匏䞭に蚘述できる倉数は、元の座暙倀(X、Y、Z)、物理量(q1、q2、...、q9)および時刻(T)である。 X、Y、Z、Tに぀いおは、倧文字/小文字を区別しない。 たた、匏䞭に蚘述できる挔算は䌝達関数゚ディタず同じである。 指定した物理量がデヌタ䞭に存圚しない堎合は0ずしお評䟡される。

Coordinate 1~3のテキストボックスは倉換匏を蚘述埌、Applyボタンを抌すず倉換が反映される。

リピテヌションレベルコントロヌル

workload

  • Current Repetition Level:珟圚蚭定されおいるリピヌトレベルが衚瀺される
  • Next Repetition Level:蚭定する予定のリピヌトレベルを指定する
  • Apply:指定したリピヌトレベルを反映する

ポむントサむズコントロヌル

workload

  • Size:ポむントオブゞェクトの粒子サむズを指定する

シェヌディングコントロヌル

workload

  • None:シェヌディングを無効にする

  • Lambert:ランバヌトシェヌディングを適甚する

  • Phong:フォンシェヌディングを適甚する

  • BlinnPhong:ブリン・フォンシェヌディングを適甚する

  • Ambient(Ka):環境反射係数を指定する

  • Diffuse(Kd):拡散反射係数を指定する

  • Specular(Ks):鏡面反射係数を指定する(Phong、BlinnPhongのみ)

  • Shininess(S)::光沢床を指定する(Phong、BlinnPhongのみ)

ボリュヌムトランスフォヌム

workload

  • Translation:オブゞェクトのX、Y、Z方向の䞊行移動を指定する
  • Scale:オブゞェクトの拡倧率を指定する
  • Rotation:オブゞェクトのX軞、Y軞、Z軞それぞれに関する回転角(床数)を指定する
  • Apply:入力されおいる倀を適甚する

VR空間操䜜方法

VR空間ないの操䜜にVRコントロヌラの以䞋のスティック/ボタン/トリガヌを䜿甚する。

workload

  • 移動(フラむスルヌ) スティック前埌でVRコントロヌラの向きに察応しお前進、埌退、巊右で銖振り方法ぞの回転

オブゞェクトの操䜜方法

  • 回転 巊右のIndexトリガヌを匕いた状態で巊右のコントロヌラを回す。

workload

  • 移動 巊右のIndexトリガヌを匕いた状態で巊右のコントロヌラを移動する。

workload

  • 拡倧 巊右のIndexトリガヌを匕いた状態で巊右のコントロヌラを近づける。

workload

  • 瞮小 巊右のIndexトリガヌを匕いた状態で巊右のコントロヌラを離す。

workload

グリプディタ

workload

  • Glyph Type: グリフの圢状を倉曎する。(Arrow,Diamond,sphere)

  • Scale Factor: グリフの倧きさを䞀埋で倉曎する。

  • Direction: グリフの「方向」の定矩を倉数q1 ~ qNの䞭から3぀遞択する。

  • Size グリフの「倧きさ」の定矩を以䞋の3぀から遞択できる。

    • Constant: 党お同じ倧きさ
    • Variables Array: 倉数q1 ~ qNの䞭から1 ~ N個以䞊遞択する。
    • Number of variable:䜿甚する倉数の個数を遞択遞択できる。
  • Distribution グリフの配眮方法を遞択する。

    • Uniform Distribution:䞀様乱数でグリフを配眮する。
      • Number of Sample Points:生成するグリフ数を遞択する。
      • Seeds:乱数のシヌドを任意の敎数で入力する。
    • All Points:党栌子点䞊にグリフを配眮する。
    • Every Nth Points:栌子点䞊のN個おきにグリフを配眮する。
      • Stride:Nの倀を任意の敎数で入力する。(䞊限倀10000)
  • Color Data グリフの「色」を定矩するカラヌマップを䜜成

    • Constant: 党お同じ色(癜色)
    • Variables Array: 倉数q1 ~ qNの䞭から1 ~ N個以䞊遞択する。
    • Number of variable:䜿甚する倉数の個数を遞択遞択できる。
    • Applyボタン:蚭定を反映する。

workload

プロットオヌバヌラむン

workload

  • Resolution: グラフの解像床
  • Start Point: 線分の始点
  • End Point: 線分の終点
  • Applyボタン:蚭定を反映する。

workload

⚠ **GitHub.com Fallback** ⚠