今夏休みで、小学生の娘が理科で地球の自転と公転、月の形などを勉強していて、うまく説明できないかと考えていたが、ちょうど仕事で3DCGのソフトウェアBlenderに触る機会があったので月の満ち欠けをうまく表現できないか試してみた。
Blenderの設定
Blenderは3Dのモデリングやシミュレーションができるフリーのソフトウェア。CGは今回初挑戦。一つずつ手探りで作ってみる。以下の環境で実施
・Macbook air 2019
・Blender 2.8
Blenderでのモデル作成
オブジェクトの生成
最初に太陽、地球、月を作成する。それぞれの大きさや距離を実際のものをベースとした比率にしたかったけど、距離と大きさがGUI上だとアンバランスだったので、適当な大きさに設定。
- 太陽の作成: Shift+AでSurface -> Nurbs Sphere。ScaleのX,Y,Zを36に設定。
- 地球の作成: Shift+AでSurface -> Nurbs Sphere。ScaleのX,Y,Zを6に設定。
- 月の作成: Shift+AでSurface -> Nurbs Sphere。ScaleのX,Y,Zを1に設定。
軌道を生成
地球と月の軌道を生成。本当は3D空間で扱うべきだが、簡単のためXY平面で設定。
- 地球の軌道:Shift+AでCurve -> Circle。ScaleのX,Yを100に設定。
- 月の軌道:Shift+AでCurve -> Circle。ScaleのX,Yを4に設定。 RelationのParentを地球に設定。これによって地球を中心とした円になる。
地球と月を軌道上に乗せる
地球と月を作成した軌道に乗せる。このとき、Object propertyのLocationのX,Y,Zを0に設定しておく必要がある。軌道への載せ方だが、Object Constraint PropertiesでAdd Object Constraintを押すと、Follow pathが出てくるので、そこで上で作成したそれぞれの軌道を設定する。その後、Follow Curveのチェックボックスにチェックをつける。
太陽を光らせる
月に影をつけるために太陽を光らせてみる。
- 上のタブをShadingに切り替える。
- 下のボックスのところで、Shift+AでShader -> Emission。
- EmissionのColorを黄色に、Strengthを50に設定。
実行結果
左側が作成した結果の全体環境。太陽の光によって、地球も昼の部分と夜の部分が分かれている。
右側は地球から見た月の画像。カメラを太陽に対して垂直になるように置いたので、月を回転させて、カメラの画角に入るとちょうど半月が見える形になる。若干光が多いのかな。半月よりも光の部分が大きくなってしまっている。


まとめ
結構安易にまずやってみようと思って進めたけど、太陽と地球・月とのサイズの差が違いすぎて、同じ比率ではできないし、そのあたりをざっくりすると光の届き方も違ってくるので、意外と苦労した。実際には地球の自転・公転、月の軌道は平面上でなくて、3Dで考えないといけないし、自転の軸も考えないので改めて天文学は難しいと実感。ただ、Blenderでのオブジェクト生成、オブジェクトの親子関係の作成、軌道での動かし方、Emissionによる発光など基本機能は把握することができたと思う。3DCGソフトを使って色々なことが作成できそうなので、個人的な優先度は低いが、物理エンジンのあるUnityと絡めて、違った題材でもう少し遊んでみても面白いかもしれない。