Zum Hauptinhalt springen

Modelle

Einführung

Studio enthält mehrere integrierte Primitive, wie z. B. Kugeln, Boxen und Ebenen, die schnell angepasst und im Editor positioniert werden können. Für kompliziertere Entwürfe unterstützt Studio externe 3D-Modelle in den Formaten GLTF/GLB, die sich ideal für webbasierte 3D-Inhalte eignen, sowie FBX-Dateien, die nach dem Hochladen in GLB konvertiert werden können. Dieses Setup ermöglicht eine breite Palette von 3D-Elementen, egal ob es sich um stromlinienförmige oder sehr detaillierte virtuelle Szenen handelt.

Primitive

Die folgenden eingebauten Primitive sind verfügbar:

TypeAttributes
SphereGeometry{radius}
BoxGeometry{width, height, depth}
PlaneGeometry{width, height}
CapsuleGeometry{radius, height}
ConeGeometry{radius, height}
CylinderGeometry{radius, height}
PolyhedronGeometry{radius}
CircleGeometry{radius}
RingGeometry{innerRadius, outerRadius}

Hinzufügen eines Primitivs

Ein 3D-Modell kann dem Objekt über die Studio-Schnittstelle über die Mesh-Komponente oder im Code hinzugefügt werden. Das Hinzufügen in Studio erfolgt über die Schaltfläche (+) in der Hierarchie oder durch Hinzufügen von Geometrie zu einer benutzerdefinierten Komponente auf dem Objekt.

Beispiel

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

GLTF-Komponente

Unterstützte Formate

GLTF und GLB

GLTF- und GLB-Modelle werden unterstützt und sind ideal für die Arbeit mit 3D im Web.

FBX

FBX-Upload wird unterstützt, allerdings verlangt Niantic Studio, dass die Modelle nach dem Upload in GLB konvertiert werden. **Vergewissern Sie sich, dass die Texturen in die FBX-Datei eingebettet sind, bevor Sie sie in GLB konvertieren.

fbx-to-glb-converter.png

Einstellung eines Modells

Das folgende Beispiel zeigt, wie ein GLTF oder GLB auf eine Entität zur Laufzeit gesetzt werden kann.

info

Diese Methode erfordert, dass Sie Ihr benutzerdefiniertes Modell aus den Komponenteneigenschaften auswählen, sobald die Komponente auf Ihre Entität angewendet wird

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,
});
},
});

Einstellen der Modelleigenschaften

Modell-Eigenschaften

Eigenschaften anzeigen hier.

Beispiel

Das folgende Beispiel zeigt, wie man ein Model auf eine Entität zur Laufzeit setzt.

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,
});
},
});

Einstellen der Materialeigenschaften

Materialien können entweder durch Code oder direkt in der Mesh-Komponente im Editor konfiguriert werden.

Materialtypen

Material

Ein Standard PBR Material.

UnbeleuchtetMaterial

Material unbeeinflusst von Licht und Schatten.

SchattenMaterial

Material, das nur auf Schatten reagiert.

HiderMaterial

Spezielles Material, das alle Objekte hinter sich verbirgt.

Materialeigenschaften

Eigenschaften anzeigen hier.

Beispiel

Das folgende Beispiel zeigt, wie man ein Material auf eine Entität zur Laufzeit setzt.

// Einstellung des Standardmaterials
ecs.Material.set(world, component.eid, { r: 255, g: 0, b: 100, roughness: 1 });

// Einstellung des Schattenmaterials
ecs.ShadowMaterial.set(world, component.eid, { r: 255, g: 0, b: 100 });