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:
Type | Attributes |
---|---|
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.
Einstellung eines Modells
Das folgende Beispiel zeigt, wie ein GLTF oder GLB auf eine Entität zur Laufzeit gesetzt werden kann.
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 });