クイックノート

ちょっとした発見・アイデアから知識の発掘を

数式で曲面の3Dモデルを作成する

Unityの物理演算を使って、
物理的な実験をするために、
数式で表現された曲面のモデルを作りたいということが多々あります。

数式をそのまま入力して、
曲面の3Dモデルが作成できると良いのですが、
残念ながらデフォルトではUnity単独でそのような機能はなさそうです。

ここではMathModというソフトを使って、
数式入力で作成した曲面のモデルを、
Unity に取り込む方法を紹介します。

下の動画でボールが転がっている曲面が、
MathModで作成した曲面です。


摩擦のない曲面を転がるボール

準備

MathModのダウンロードページ から、
MathModをダウンロード・解凍します。

MathModによる曲面の作成

MathMod では、
数式の入力によって曲面のモデルを作成することができます。

以下では、断面がサイクロイド曲線となるような曲面を例に、
曲面を作成する手順を紹介します。

テンプレートを選択する

MathModではデフォルトで、
様々な曲線のサンプルが用意されています。
そこで、これらのサンプルを元に作りたい曲面を実現するのが良さそうです。

曲面の表現形式

MathModでは曲面の表現の仕方として、

  • Parametric
  • IsoSurfaces

の二種類があり、
Parametricは、

 x = f(u,v)\\ y=g(u,v) \\ z=h(u,v)

のように曲面をパラメータu,vで表示し、
IsoSurfacesでは、

F(x,y,z)=0

の形で曲面を表現します。

Apple の選択

サイクロイド曲線は、パラメータ表示が向いているので、
Parametricのサンプルから「Apple」を選択してみましょう。

f:id:u874072e:20191203161322p:plain
ParametricのAppleを選択

数式を入力

「Parametric Equation」の欄に、
x,y,zそれぞれのパラメータ表示の数式を入力していきます。

ここでは、yz平面にサイクロイド曲線を描いて、
x軸方向にそのサイクロイド曲線を連結しただけの曲線を描いてみましょう。

数式で表すと下のようになります。

 x = v\\ y=u-\sin(u) \\ z=1-\cos(u)

これを、MathModのウィンドウ内に下のように入力します。

f:id:u874072e:20191203163054p:plain:h500
サイクロイド曲線を繋げた曲面の数式

Run でモデルの描画

数式を入力した後「Run」ボタンをクリックすると、
下のように3Dモデルが描画されます。

f:id:u874072e:20191203163543p:plain
描画された3Dモデル

objファイルとして出力

Unnityでこのモデルを読み込むために、
obj形式のファイルとしてモデルを出力します。

メニューバーの「Export」から、
「TrianglesWavefont.obj」をクリックして、
適当なファイル名をつけて保存します。

f:id:u874072e:20191203163730p:plain
objファイルとして出力

Unity でのモデルの読み込み

それでは生成したモデルをUnityで読み込みます。

Assetsに追加

まず出力したobjファイルをAssetsに追加します。

f:id:u874072e:20191203164107p:plain
Assetsに追加

ドラッグアンドドロップで追加

Assetsからシーンにドラッグして追加します。

縮尺の関係で、下の図のように、
オブジェクトが見えないかもしれませんが、
挿入されているはずです。

f:id:u874072e:20191203164323p:plain
オブジェクトの挿入

スケールを調整

今の場合、大きすぎて視界からはみ出ているので、
transformでスケールを小さくしてみます。 ついでに、表がこちら側に向くように回転させています。

f:id:u874072e:20191203164628p:plain
スケールを小さくする

すると、曲面が見えるようになりました。

f:id:u874072e:20191203164721p:plain
挿入された曲面

まとめ

数式で曲面の3Dモデルを作成するソフトの紹介と、
生成したモデルをUnityに読み込む方法を紹介しました。

複雑な形も簡単な数式で表現できることもあるので、
使えるようにしておきたいですね。

プライバシーポリシー