|
2.10.9 3Dグラフィックス指示子
2Dグラフィックスと同じように3Dグラフィックスも詳細なグラフィックス指示子を指定することができる.
2Dで有効なグラフィックスオプションはすべて3Dでも使える.3Dだけで有効なグラフィックス指示子もある.
2Dのときのように, PointSize, Thickness, Dashingのグラフィックス指示子を使い,3D空間における点や線(Point, Line)の大きさ,太さ,線の形態を指定できる.ただし,3Dでは,それらの条件で指定する長さとは全表示領域の幅に対する割合を示すので注意が必要である.
乱数による3D座標を20組作っておく.
In[1]:= pts = Table[Point[Table[Random[ ], {3}]], {20}];
各座標点に直径が表示幅の 5%の円を描画する.
In[2]:= Show[Graphics3D[ { PointSize[0.05], pts } ]]

Out[2]= 
2Dにおける絶対単位の長さ指定は3Dでも有効である.点の絶対サイズ(AbsolutePointSize),線の絶対太さ(AbsoluteThickness),破線の絶対区間長(AbsoluteDashing)がこれにあたる.
ランダムな3D座標点を10個作り,線で結んだオブジェクトを生成する.
In[3]:= line = Line[Table[Random[ ], {10}, {3}]] ;
オブジェクトの折れ線を破線表示する.線の太さは2ポイントである.
In[4]:= Show[Graphics3D[ { AbsoluteThickness[2], AbsoluteDashing[{5, 5}], line } ]]

Out[4]= 
Pointと Line(点と線の描画)の場合は,色付けにかかわる指示子は3Dでも2Dの場合と同様にはたらく.ただし,Polygon(多角形)に関しては,その限りではない.
2Dでは,多角形には特定色が常に1つ割り付けられ,その色は RGBColor等のグラフィックス指示子により画一的に決められる.これに対して,3Dでは,擬似照明法に基づいたより物理的な手法で多角形の色付けができるようになっている.3Dグラフィックスオブジェクト(Graphics3D)にはデフォルトで照明効果を使うので(設定としては Lighting -> Trueに相当する),多角形そのものの色指定が無視され擬似照明の処理から求まる色が使われる.ただし,照明効果を使ったときでも点や線には特別指定した色が使われる.

3Dグラフィックスにおける多角形の色付け法
多面体パッケージを読み込ませる.
In[5]:= <<Graphics`Polyhedra`
20面体を作り,全表面を灰色で色付けする.
In[6]:= Show[Graphics3D[{GrayLevel[0.7], Icosahedron[ ]}], Lighting -> False]

Out[6]= 
照明効果を有効にし擬似照明法に基づいた配色を使うようにする.本来指定されていた灰色は無視されることになる.
In[7]:= Show[%, Lighting -> True]

Out[7]= 
それでも,点や線には指定した色が使われる.
In[8]:= Show[{%, Graphics3D[{GrayLevel[0.5], Thickness[0.05], Line[{{0, 0, -2}, {0, 0, 2}}]}]}]

Out[8]= 

多角形における辺の描線の指定
3Dグラフィックスの描画で使う線の種類は2つある.1つはプリミティブ Lineの線で,もう1つは多角形の辺を描くのに使う線である.
後者の線について描画仕様を設定するには EdgeFormを使いグラフィックス指示子のリストを与える.
12面体を描画する.面の周囲の線は灰色で描画するよう指示する.
In[9]:= Show[Graphics3D[ {EdgeForm[{GrayLevel[0.5], Thickness[0.02]}], Dodecahedron[ ]}]]

Out[9]= 

多角形の表面と裏面のグラフィックス指示子
3Dにおける多角形には表と裏の2面ある.どのように表か裏を区別するのであろうか.Mathematicaでは,多角形の頂点の指定順序が反時計方向に見えるときの面を表と定義している.
12面体の面を1つ取り去ったオブジェクトを作る.
In[10]:= d = Drop[Dodecahedron[ ], {6}] ;
立体の内側が見えるようになった.
In[11]:= Show[Graphics3D[d]]

Out[11]= 
外側の面(表面)を薄い灰色で,また,内側の面(裏面)を濃い灰色で塗りつ ぶす.
In[12]:= Show[Graphics3D[ {FaceForm[GrayLevel[0.8], GrayLevel[0.3]], d}], Lighting -> False]

Out[12]= 
|