gooブログはじめました!

写真付きで日記や趣味を書くならgooブログ

3DCGに入門する

2019-08-18 08:21:00 | ブログ
 3Dプリンターが普及している。一度3Dプリンターの出力サービスでも使ってみたらどうだろうかと思って、3Dプリンターに関する本をのぞいてみた。

 3Dプリンターを利用するには、3DCADソフトまたは3DCGソフトを使って3Dデータを作成するか、3Dスキャナーで対象物をスキャンしたスキャンデータをパソコンに入力して専用ソフトでプリンター用の3Dデータを作成しているようである。

 3DCADはその筋の専門家が使うものだから、数学的な予備知識は、専門的な知識のうちに入るだろう。また、3Dスキャナーを用いて対象をうまくスキャンする技術は、技能の類だから数学的な知識はほとんど不要であろう。

 問題は、アーティストなどが3DCGソフトを用いて3Dアニメなどを作成するか、あるいは3Dプリンターに入力するためのデータを作成する際にどの程度の数学的知識が必要になるのかということであろう。そこで、アートのための数学に関する参考文献の3DCGを説明する章を読んでみた。

 その説明によると、3DCGソフトのユーザは、3次元空間の中に(x,y,z)軸をもつ3次元座標系を意識することと、立体物の平面図、正面図および側面図と座標軸との関係を意識することと、対象物を回転させるときに(x,y,z)軸をどちらの方向に何度回転させるかを意識する程度の空間認識があればソフトを使えそうである。

 3DCGソフトを使えば、大小の球や立体などの部品をいろいろな場所に配置したり、移動したり、拡大縮小したり、回転させたり、変形させたりできるようだ。対象物を変形させるのも、お絵描きのようにフリーハンドで曲線や曲面を変形させればよいようで、アート感覚や技能さえあればよいらしい(3DCGソフトの内部では、ベジエ曲面、Bスプライン曲面、NURBS曲面などの数学的技法を駆使して、ユーザの意図する曲面をつくるようにフォローしているようであるが)。

 3Dプリンターや3DCGソフトを使う際に、空間認識は重要であるが、数学的な技法を知る必要はほとんどないということであろう。

 そこで、この際、3DCG入門コースとして、Excelを用いて、地球を想定する球面に経度線を6本×2、緯度線を11本引いたモデルをつくり、北極と南極を貫く座標軸を23.5度傾けるような回転を施した後、これを2次元平面に射影したものを計算してグラフ表示することにした。

 左手系と呼ばれる(x,y,z)座標系のy軸上に球面の北極と南極があるとする。このy軸をx軸のまわりに23.5度回転させたとき、座標系は(x,y’,z’)となる。さらに、この(x,y’,z’)で表される球面上の点を元の(x,y)平面上に射影した点の位置を(x’’,y’’)とする。

 球の半径を1とすると、経度線上の(x,y,z)は、(x=costsinf,y=cosf,z=sintsinf)のように表現できる。tはx軸からの偏角、fはy軸からの偏角である。

 緯度線上の(x,y,z)は、(x=ricost,y=cosf,z=risint)のように表現できる。riは緯度線の半径である。

 y軸をx軸のまわりに角度ftだけ回転させるとき、球面上の位置ベクトル(x,y,z)は、cosft,sinft,0,1を要素とする行列によって位置ベクトル(x’,y’,z’)に変換される。

 また、位置ベクトル(x’,y’,z’)を元の(x,y)平面上に射影するとき、(x’,y’,z’)は、射影変換の行列によって位置ベクトル(x’’,y’’,z’’)に変換されるが、z’’に関する行列要素は考えなくてよい。(x’’,y’’)に関する行列要素は、(x,y,z)が0または1になるような特定の座標値から求められる。

 球面上の位置ベクトル(x,y,z)に回転の行列を作用させた後、射影変換の行列を作用させたときの(x’’,y’’)は、次のように与えられる。
 経度線:x’’=x=costsinf; t:6個の定角度,0=<f<2*PI()
      y’’=cosfcosft-sintsinfsinft; ft:23.5度
 緯度線:x’’=x=ricost; ri:11個の定数,0=<t<2*PI()
      y’’=cosfcosft-risintsinft; f:11個の定角度

 経度線と緯度線の各々を点列(x,y’’)で表現するために、角度変数fまたはtを刻む列を設けた。こうすると、この列以外に必要なものは、x列とy’’列だけとなる。

 (x,y’’)の計算結果をグラフ表示すると、下図のようになる。



 参考文献
 水野操著「3Dプリンター入門」(日刊工業新聞社)
 牟田淳著「アートのための数学」(オーム社)