可視化手法 | ![]() ![]() |
等特性エンドキャップの定義
等特性エンドキャップは、等特性サーフェスと似ていて、patch
グラフィックスオブジェクトとして作成されます。isocaps
コマンドを使って patch
に転送するデータを作成します。たとえば、
patch(isocaps(voldata,isoval),... 'FaceColor','interp',... 'EdgeColor','none')
は、値 isoval
でスカラ物体データ voldata
に対する等特性エンドキャップを作成します。同じ物体データと等特性サーフェスにfit
する等特性エンドキャップの端を確保する等値を使って、等特性サーフェスを作成するべきです。
patchの FaceColor
プロパティを interp
に設定すると、等特性エンドキャップにより設定されたデータ値の範囲をカラーマップのエントリに写像するカラーリングになります。他のpatch プロパティを設定して、等特性エンドキャップのライティングやカラーリングの効果を制御することもできます。
例題 -
等特性サーフェスに等特性エンドキャップを付加
つぎの例題は、等特性エンドキャップを利用する際のカラーリングやライティングの特性の設定方法を示します。4つの基本的なステップがあります。
1. データの準備
つぎの例題は、ランダムな(rand
) 3次元配列データを使って物体データを定義します。つぎに、データを平滑化します(smooth3
)。
data = rand(12,12,12); data = smooth3(data,'box',5);
2.
等特性サーフェスの作成とプロパティの設定
isosurface
と patch
を使って、等特性サーフェスを作成し、カラーリングおよびライティングプロパティを設定します。反射光の
AmbientStrength
, SpecularStrength
, DiffuseStrength
を小さくして、2つの光源の明るさに対してより一様なライティングを与えるようにします。
等特性サーフェスの頂点法線を再計算して、平滑化されたライティングを作成します(isonormals
)。
isoval = .5; h = patch(isosurface(data,isoval),... 'FaceColor','blue',... 'EdgeColor','none',... 'AmbientStrength',.2,... 'SpecularStrength',.7,... 'DiffuseStrength',.4); isonormals(data,h)
3.
等特性エンドキャップの作成とプロパティの設定
等特性サーフェスと同じデータ、同じ等値を使って
isocaps
を定義します。内挿を行うカラーリングを指定し、青色の等特性サーフェスによりデフォルトのカラーマップよりも対照的な色を与えるカラーマップを選択します(colormap
)。
patch(isocaps(data,isoval),... 'FaceColor','interp',... 'EdgeColor','none') colormap hsv
4. ビューの指定
データの縦横比を [1,1,1]
に設定し、正しい比率で表示します(daspect
)。軸の空白部分を削除し、ビューを3次元に設定します(axis
tight
, view
)。
daspect([1,1,1]) axis tight view(3)
5. 光源の付加
一様な光源を付加し、形状の小さな変化を視覚可能にする光源の機能を利用するために、この例題では2つのライトを使います。1つはカメラの左側、もう1つは右側に設定します(camlight
)。Phongライティングを使ってカラーがスムーズに変化するようにします(lighting
)。Phongライティングではzbufferレンダラが必要です。
camlight right camlight left set(gcf,'Renderer','zbuffer'); lighting phong
![]() |
等特性エンドキャップを使った内部の可視化 | ベクトル物体データの可視化 | ![]() |