コンテンツにスキップ

Mesh

メッシュ とそれに対応する メッシュ は、3D環境と他のオブジェクトを定義します。


マークアップ

メッシュは衝突のためだけに使われるので、モデルの開発はあまり必要ありません。問題は、2Dスプライトに基づいてモデルの寸法をどのように定義するかだ。解決策は「マークアップ」だ。

基本的な3Dブロックは1x1x1メートルで、これは(遠近法がないため)正射投影では2つの2Dタイルに相当する:

Pasted image 20250301111246.png

Note

タイルのサイズは重要ではありません。この場合、16x16の1タイル(上がライト)。32x32、48x48、64x64など、1x1x1メートルのブロックに相当するものを使うこともできる。

もちろん、あなたのゲームでは正射投影は使わず、通常の遠近法を使うだろう。とはいえ、これは技術的な観点から重要なことで、タイル自体は好きなように描くことができる。


デザイナー

コンストラクターとしてオブジェクトのメッシュを構築できる単純なケースを考えてみよう:

Pasted image 20250301114628.png

Note

個々のタイルから3次元環境を構築し、それにメシャ・ライブラリの要素を添付するとき、エディターでも似たようなことをすることになる。


比率

特に複雑なオブジェクトの場合、コンストラクタ・メソッドが常に機能するとは限らない。

つまり、選択したサイズ(たとえば16x16)のベースタイルがあり、これは1x1x1メートルのブロックを指している。このようにしてプロポーションが形成される:

16 -> 1 метр

16 -> 1 метр

ここで、直交投影を考慮して、ある要素のサイズをピクセルごとに計算する必要がある。つまり、前面と上面の幅と高さである:

Pasted image 20250301203823.png

その割合に従って、各軸に必要なサイズをメートル単位で計算する:

X 軸の場合:

16 -> 1 米

27 -> X 米

X = (27*1)/16 = 1.6875

Y 軸の場合:

16 -> 1 米

15 -> Y 米

Y = (15*1)/16 = 0.9375

Z 軸の場合:

16 -> 1 米

15 -> Z 米

Z = (15*1)/16 = 0.9375

ここで、取得したデータに基づいてモデルを作成する:

Pasted image 20250302112143.png


イメージ

プロポーションには、スプライトそのものを使うという、よりシンプルな方法もあります。 これは、すでに描かれているスプライトをもとにモデルを作成し、希望のサイズに拡大縮小するというものです。

例えば、三菱 零戦はこうして作った:

Pasted image 20250302153040.png

Zero.png


エクスポート

MeshLibrary

メシャ・ライブラリーについては、実装の余地がある。

この例では、まず blender でメッシュを作成します。そのためには、新しいジオメトリを追加して、その頂点を編集するだけです。このような構造になるはずです:

Pasted image 20250301124539.png


次にエクスポートに移ります。お好みの形式を選択してください。例として、私は.blend形式と.glb形式を類似の代替形式として使用します。

  1. 各メッシュオブジェクトの名前には -col を追加してください。

Pasted image 20250819190644.png

  1. メッシュを都合の良い形式でエクスポートします
  2. Godot でエクスポートしたファイルを右クリックして、新しい継承シーンを作成します
  3. 開いたシーンで「シーン」セクションに移動し、「メッシュライブラリ」としてエクスポートします

Tip

ブロックの中心は、エディター内の空間の中心と一致する必要があります


OBJ

オブジェクトにはOBJ形式を使用します。なぜなら、これが私たちの目的に最も適しているからです。

  1. メッシュを作成します。
  2. それを.obj形式にエクスポートします。
  3. GodotエディターでシーンにMeshInstance3Dを追加します。
  4. インポートしたOBJメッシュをドラッグして、MeshInstance3Dにドロップします。

その後、前回のセクションで示したようにメッシュを生成し、これらの2つのオブジェクトをコアに配置します。

Tip

オブジェクトの中心は、エディターの空間の中心と一致する必要があります。Godotでは、メッシュはオブジェクトの中心に固定され、オブジェクト自体は「Tranform」セクションで必要な量だけ移動させます。