複雑な 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
プロパティを使用してライトの位置を調整します。位置は、x、y、z の座標で表されます。
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