Main Content

複雑な 3 次元オブジェクトの表示

この例では、複雑な 3 次元オブジェクトの作成と表示を行い、その外観を制御する方法を示します。

オブジェクトの形状の取得

この例では、Newell ティーポットと呼ばれるグラフィックス オブジェクトを使用します。ティーポットの頂点、面およびカラー インデックスのデータは、関数 teapotData によって計算されます。ティーポットは複雑な幾何学形状であるため、この関数からは多数の頂点 (4608) および面 (3872) が返されます。

[verts, faces, cindex] = teapotGeometry;

ティーポットの patch オブジェクトの作成

形状データを使用して、patch コマンドでティーポットを描画します。patch コマンドは、patch オブジェクトを作成します。

figure
p = patch('Faces',faces,'Vertices',verts,'FaceVertexCData',cindex,'FaceColor','interp')

p = 
  Patch with properties:

    FaceColor: 'interp'
    FaceAlpha: 1
    EdgeColor: [0 0 0]
    LineStyle: '-'
        Faces: [3872x4 double]
     Vertices: [4608x3 double]

  Use GET to show all properties

view コマンドを使用して、オブジェクトの向きを変更します。

view(-151,30)     % change the orientation
axis equal off    % make the axes equal and invisible

透明性の調整

patch オブジェクトの FaceAlpha プロパティを使用してオブジェクトを透明にします。

p.FaceAlpha = 0.3;   % make the object semi-transparent

FaceColor プロパティを 'none' に設定すると、オブジェクトはワイヤー フレーム図で表されます。

p.FaceColor = 'none';    % turn off the colors

カラーマップの変更

関数 colormap を使用してオブジェクトの色を変更します。

p.FaceAlpha = 1;           % remove the transparency
p.FaceColor = 'interp';    % set the face colors to be interpolated
p.LineStyle = 'none';      % remove the lines
colormap(copper)           % change the colormap

オブジェクトのライティング

ライトを追加して、オブジェクトがより写実的に見えるようにします。

l = light('Position',[-0.4 0.2 0.9],'Style','infinite')
l = 
  Light with properties:

       Color: [1 1 1]
       Style: 'infinite'
    Position: [-0.4000 0.2000 0.9000]
     Visible: on

  Use GET to show all properties

lighting gouraud

patch オブジェクトの以下のプロパティは、光の強度およびオブジェクトの反射プロパティに影響します。

  • AmbientStrength - 周囲光の強度の制御

  • DiffuseStrength - 拡散光の強度の制御

  • SpecularStrength - 反射光の強度の制御

  • SpecularExponent - 反射光の粗さの制御

  • SpecularColorReflectance - 反射される色の計算方法の制御

これらのプロパティは個別に設定できます。これらのプロパティを、金属材料、光沢性材料または非光沢性材料の外観を近似する事前定義された一連の値に設定するには、material コマンドを使用します。

material shiny

Position プロパティを使用してライトの位置を調整します。位置は、xyz の座標で表されます。

l.Position = [-0.1 0.6 0.8]

l = 
  Light with properties:

       Color: [1 1 1]
       Style: 'infinite'
    Position: [-0.1000 0.6000 0.8000]
     Visible: on

  Use GET to show all properties