Library)を使わないのですかなぜGodotは例外処理を使わないのですか?GodotがRTTI(実行時型情報)を強制しないのはなぜですか?GodotがユーザーにDoD(データ指向設計)の実装を強制しないのはなぜですか?Godotの開発をサポートしたり、貢献したりするにはどうすればいいですか?誰がGodotで働いていますか。source手続き型ジオメトリ(幾何)¶Godotでジオメトリを手続き的に生成する方法は多数あります。このチュートリアルシリーズでは、それらのいくつかを検討します。それぞれの手法には長所と短所があるため、それぞれを理解し、特定の状況でどのように役立つかを理解することが最善です。ArrayMeshの使用MeshDataToolの使用SurfaceToolの使用ImmediateGeometryの使用ジオメトリとは何ですか?¶ジオメトリは、形を洒落た言い方で表現したものです。コンピュータグラフィックスでは、ジオメトリは通常「頂点」と呼ばれる位置の配列で表されます。Godotでは、ジオメトリはメッシュで表されます。それらはすべて関連がありますが、用途が少し異なります。MesheとArrayMeshは、MeshInstanceノードを使用して描画されるリソースです。MesheやArrayMeshなどのリソースをシーンに直接追加することはできません。MeshInstanceは、シーン内のメッシュの1つのインスタンスを表します。単一のメッシュを複数のMeshInstanceで再利用して、異なるマテリアルまたは変換(スケール、回転、位置など)を使用してシーンの異なる部分に描画することができます。同じオブジェクトを何度も描画する場合は、MultiMeshとMultiMeshInstanceを使用すると便利です。MultiMeshInstanceは非常に安価に何千回もメッシュを描画します。そのためには、ハードウェアのインスタンス化を利用します。MultiMeshInstanceを使用する場合の欠点は、すべてのインスタンスで1つのマテリアルに制限されることです。インスタンス配列を使用して、インスタンスごとに異なる色と変換を保存しますが、すべてのインスタンスは同じマテリアルを使用します。メッシュとは¶メッシュは、1つ以上のサーフェスで構成されます。サーフェスは、頂点、法線、UVなどを含む複数のサブ配列で構成される配列です。ユーザーから隠されていますが、ArrayMeshではユーザーは、サーフェス情報を含む配列を渡すことにより、メッシュを手動で構築できます。各サーフェスには独自のマテリアルがあります。使用してMeshInstanceを使用するときに、メッシュ内のすべてのサーフェスのマテリアルをオーバーライドできます。配列の各位置は、頂点ごとの情報を含むサブ配列で埋められます。サーフェス配列はインデックス付きでもインデックスなしでもかまいません。配列を割り当てないのと同じくらい簡単です。インデックスなしの配列には、すべての三角形の一意の頂点情報が格納されます。2つの三角形が頂点を共有する場合、頂点は配列内で複製されます。インデックス付きの表面配列は、各一意の頂点の頂点情報のみを格納し、頂点配列から三角形を構築する方法をマップするインデックスの配列も格納します。一般に、インデックス付き配列の使用は高速ですが、三角形間で頂点データを共有する必要があることを意味します。これは常に望ましいわけではありません(たとえば、面ごとの法線が必要な場合)。ツール¶Godotは、ジオメトリにアクセスして操作するさまざまな方法を提供します。それぞれの詳細については、次のチュートリアルで説明します。ArrayMesh¶ArrayMeshリソースはMeshを拡張して、いくつかの異なるQOL(利便性向上用の)関数を追加します。重要なことは、スクリプティングによってMeshサーフェスを構築する機能です。MeshDataTool¶MeshDataToolは、メッシュデータを、実行時に変更できる頂点、面、およびエッジの配列に変換するリソースです。1.xイミディエイトモードスタイルのインターフェイスを使用してメッシュを作成できます。ImmediateGeometry¶ImmediateGeometryは、イミディエイトモードスタイルのインターフェイス(SurfaceToolなど)を使用してオブジェクトを描画するノードです。ImmediateGeometryとSurfaceToolの違いは、ImmediateGeometryはシーンツリーに追加できるノード自体であり、コードから直接描画されることです。SurfaceToolは、表示するMeshInstanceに追加する必要があるメッシュを生成します。ImmediateGeometryは、簡単なAPIのためにプロトタイピングに役立ちますが、ジオメトリがフレームごとに再構築されるため、速度が遅くなります。単純なジオメトリをすばやく追加して視覚的にデバッグするのに最も役立ちます(たとえば、物理的なレイキャストなどを視覚化するために線を描画する)。どちらを使うべきですか?¶どの方法を使用するかは、何をしようとしているか、どのような手順に慣れているかによって異なります。SurfaceToolとArrayMeshはどちらも、時間とともに変化しない静的なジオメトリ(メッシュ)の生成に最適です。ArrayMeshの使用は、SurfaceToolの使用よりもわずかに高速ですが、APIはもう少し挑戦的です。利便性向上メソッドがいくつかあります。ImmediateGeometryはフレームごとにメッシュを再生成するため、ArrayMeshやSurfaceToolよりもはるかに低速です。すべてのフレームを変更するためにジオメトリが必要な場合は、すべてのフレームでArrayMeshを生成するよりも少し速い可能性がある、はるかに簡単なインターフェイスを提供します。MeshDataToolは高速ではありませんが、他のものでは得られないメッシュのすべての種類のプロパティ(エッジ、面など)にアクセスできます。メッシュを変換するためにそのようなデータが必要な場合は非常に便利ですが、その情報が必要でない場合は使用するのは得策ではありません。MeshDataToolは、面またはエッジ配列へのアクセスを必要とするアルゴリズムを使用する場合に最適に使用されます。