本文へスキップ

モデル

models.png

はじめに

Studioは、エンティティの複数の3Dモデル形式をサポートしており、各エンティティは一度に1つのモデル形式を使用します。 基本的な形状はシンプルなプリミティブで、より詳細でハイエンドな表現が必要な場合はGLB、FBX、GLTFバンドルをインポートして作業できます。 内蔵のアセット・エディタを使えば、エンジン内で直接モデルを修正したり微調整したりできるので、ツールを切り替えることなく素早く反復できます。

備考

Studio UIのメッシュコンポーネントは、統一されたインターフェイスを通してプリミティブ、メッシュ、ガウススプラットを設定しますが、それぞれのタイプはプログラム上では別のコンポーネントを使用します。

プリミティブ

プリミティブは、ボリュームや単純なオブジェクトを表現したり、将来のゲーム アセットのプレースホルダーとして使用されます。 Studioには、球、ボックス、平面などのプリミティブが組み込まれており、エディタ内で素早くカスタマイズして配置することができます。 プリミティブはマテリアルを持ち、実行時に動的に変更することもできる。

primitives.png

以下の組み込みプリミティブが利用可能です:

タイプ属性
スフィア{radius}
ボックス{width, height, depth}
飛行機{width, height}
カプセル{radius, height}
コーン{radius, height}
シリンダー{radius, height}
多面体{radius}
サークル{radius}
リング{innerRadius, outerRadius}
トーラス{radius, tubeRadius}

プリミティブの追加

3Dモデルは、Meshコンポーネントを介したStudioインターフェース、またはコードでエンティティに追加できます。 スタジオでこれらを追加するには、階層の(+)ボタンを使用するか、エンティティ上のカスタムコンポーネントにジオメトリを追加します。

ecs.SphereGeometry.set(world, eid, {radius: 5})

GLTFコンポーネント

対応フォーマット

GLTFとGLB

GLTFとGLBモデルがサポートされており、ウェブ上で3Dを扱うのに理想的です。

資産バンドル

ほとんどのGLBはスタジオにドラッグ・アンド・ドロップできますが、GLTFファイルは複数ファイルのアップロードが必要な場合があります。 このプロセスを処理するために、アセットバンドルを使用する。 プロジェクトに新しいアセットをアップロードするには、左パネルの下部でファイルタブを選択し、プラスアイコンをクリックします。 新規アセットオプションを選択し、すべてのファイルをドラッグ&ドロップします。

new-asset-bundle-option.png

new-asset-bundle.png

FBX

FBXアップロードはサポートされていますが、8th Wall Studioではアップロード後にモデルをGLBに変換する必要があります。 **GLBに変換する前に、テクスチャがFBXファイルに埋め込まれていることを確認してください。

fbx-to-glb-converter.png

モデルの設定

次の例は、実行時にエンティティにGLTFまたはGLBを設定する方法を示しています。

インフォメーション

この方法では、コンポーネントがエンティティに適用されると、コンポーネントのプロパティからカスタムモデルを選択する必要があります。

import * as ecs from '@8thwall/ecs'

ecs.registerComponent({
name: 'loaded-model',
schema:{
// @asset
model: ecs.string,
},
add: (world, component) => {
ecs.GltfModel.set(world, eid, {
url: component.schema.model,
})
}.
})

モデルのプロパティを設定する

モデル特性

物件を見る こちら.

次の例は、実行時にエンティティに Model を設定する方法を示しています。

import * as ecs from '@8thwall/ecs'

ecs.registerComponent({
name: 'loaded-model',
schema:{
// @asset
model: ecs.string,
},
add: (world, component) => {
ecs.GltfModel.set(world, eid, {
url: component.schema.model,
animationClip:'clip1',
loop: true,
paused: false,
time: 0,
timeScale:1,
})
}
})

モデルと物理学

プリミティブ

コライダーはシミュレーション・ステップの物理エンティティを表し、その挙動に直接影響する属性を持ちます。 ほとんどのプリミティブは、その体積に正確に一致するコライダー形状を持っているので、立方体のようなプリミティブをスポーンして物理インタラクションを追加するのは簡単です。

モデル

3Dモデルから、その形状やサイズに近いカスタムコライダーを生成できます。 最良の結果を得るためには、ニーズに合った最もシンプルなコライダー形状を使用してください。 たいていの場合、これはプリミティブで代用できる。

危険

カスタム・コライダー生成は、モデルの複雑さ、サイズ、品質のばらつきによって失敗する可能性がある。 このような場合は、プリミティブ(1つまたは複数)を使って希望の形状に近づけるか、Blenderのような3Dモデリングツールからクリーンな.glbファイルをエクスポートします。

詳しくは物理学ガイドこちら をご覧ください。