Main Content

イメージ、パッチまたは表面の透明度の変更

この例では、イメージ、パッチおよび表面の透明度を変更する方法を示します。

座標軸のすべてのオブジェクトの透明度

透明度の値をアルファ値といいます。関数 alpha を使用して、現在の座標軸内のすべての image、patch、および surface オブジェクトの透明度を設定します。透明度には 0 (完全に透明) ~ 1 (完全に不透明) の値を指定します。

t = 0:0.1:2*pi;
x = sin(t);
y = cos(t);

figure
patch(x,y,'r')
patch(x+0.8,y,'g')
patch(x+0.4,y+0.8,'b')
axis square tight 
alpha(0.3)

個々の表面の透明度

表面の透明度は、その AlphaData プロパティで定義されます。表面の各頂点の透明度を指定するスカラー値または値の行列として、アルファ データを設定します。FaceAlpha プロパティは、表面の透明度を頂点の透明度から決定する方法を示します。

[X,Y,Z] = peaks(20);
s2 = surf(X,Y,Z);

s2.AlphaData = gradient(Z);    
s2.FaceAlpha = 'flat';

個々のイメージの透明度

表面と同様に、イメージの透明度も AlphaData プロパティによって定義されます。イメージの場合、イメージ データの各要素の透明度を指定するスカラー値または値の行列としてアルファ データを設定します。

たとえば、透明度を使用して 2 つのイメージを重ね合わせます。最初に、地球のイメージを表示します。

earth = imread('landOcean.jpg');
image(earth)    
axis image

次に、透明度を使用して地球のイメージに雲のレイヤーを追加します。

clouds = imread('cloudCombined.jpg');
image(earth)
axis image
hold on

im = image(clouds);
im.AlphaData = max(clouds,[],3);    
hold off

個々のパッチの透明度

パッチの透明度は、FaceAlpha プロパティと FaceVertexAlphaData プロパティによって定義されます。パッチ全体で透明度を一定にするために、FaceVertexAlphaData を 0 (完全に透明) ~ 1 (完全に不透明) の定数に設定し、FaceAlpha プロパティを 'flat' に設定します。

cla
p1 = patch(x,y,'r');
axis square tight
p1.FaceVertexAlphaData = 0.2;
p1.FaceAlpha = 'flat' ; 

パッチ全体で透明度を変化させるには、FaceVertexAlphaData を、パッチの各頂点または各面で透明度を指定する値の行列に設定します。この場合、FaceAlpha プロパティは、FaceVertexAlphaData を使用して面の透明度がどのように決定されるのかを指定します。アルファ データを頂点に指定する場合は、FaceAlpha'interp' に設定しなければなりません。

p1.FaceVertexAlphaData = x';
p1.FaceAlpha = 'interp';

テクスチャ マッピングでの透明度

テクスチャ マッピングでは、2 次元のイメージが 3 次元の表面にマップされます。CData プロパティをイメージ データに設定し、FaceColor プロパティを 'texturemap' に設定することで、イメージを表面にマップできます。

この例では、地球と雲の 3 次元表示を作成します。球面を作成し、テクスチャ マッピングを使用して地球と雲のイメージを表面にマップします。

[px,py,pz] = sphere(50);

sEarth = surface(py, px ,flip(pz));
sEarth.FaceColor = 'texturemap';
sEarth.EdgeColor = 'none';
sEarth.CData = earth;
hold on
sCloud = surface(px*1.02,py*1.02,flip(pz)*1.02); 

sCloud.FaceColor = 'texturemap'; 
sCloud.EdgeColor = 'none';
sCloud.CData = clouds;

sCloud.FaceAlpha = 'texturemap';
sCloud.AlphaData = max(clouds,[],3);
hold off
view([80 2]) 
daspect([1 1 1])
axis off tight

この例で使用するイメージは、Visible Earth から提供されたものです。

Credit: NASA Goddard Space Flight Center Image by Reto Stöckli (land surface, shallow water, clouds). Enhancements by Robert Simmon (ocean color, compositing, 3D globes, animation).Data and technical support:MODIS Land Group; MODIS Science Data Support Team; MODIS Atmosphere Group; MODIS Ocean Group Additional data:USGS EROS Data Center (topography); USGS Terrestrial Remote Sensing Flagstaff Field Center (Antarctica); Defense Meteorological Satellite Program (city lights).

参考

| |