Zum Inhalt springen

Öffnen und spielen Sie eine existierende .xosc ab

drawtonomy liest OpenSCENARIO 1.x .xosc-Dateien und führt sie im Browser mit esmini, das zu WebAssembly kompiliert ist, aus. Das importierte Szenario ist nicht schreibgeschützt — die Akte, Ereignisse, Aktionen und Auslöser landen im gleichen Editor, den Sie auch für das Verfassen von Grund auf verwenden würden.

Importieren Sie ein .xosc + .xodr-Paar, inspizieren Sie die importierten Phasen und Ereignisse und führen Sie das Szenario aus.

Eine .xosc beschreibt, was die Aktoren tun. Sie enthält nicht die Straße — sie verweist auf eine OpenDRIVE .xodr in ihrem RoadNetwork-Element. Ohne diese Straße haben Entitäten keinen Platz, an dem sie positioniert werden können. Daher fordert drawtonomy die Datei an, bevor es importiert.

Halten Sie beide Dateien bereit, bevor Sie beginnen. Falls Ihre .xosc aus dem esmini-Repository kam, sitzt die passende .xodr in resources/xodr/ neben resources/xosc/.

Wählen Sie die .xosc und die .xodr in Ihrem Datei-Manager aus und legen Sie sie zusammen auf die Arbeitsfläche. Dies ist der schnellste Weg — drawtonomy paart sie von selbst und importiert in einem Schritt: die Straße lädt, die Aktoren landen darauf, und die LOGIC-Karte füllt sich, alles ohne weiteren Prompt.

Die Paarung basiert auf der Straße, die die .xosc in ihrem RoadNetwork-Element nennt. Falls die abgelegte .xodr nicht diejenige ist, auf die verwiesen wird — oder Sie haben die .xosc allein abgelegt — kann drawtonomy das Paar nicht fertigstellen und fällt auf das OPENDRIVE MAP REFERENCED Banner zurück, damit Sie auf die richtige Straßendatei zeigen können.

Hamburger-Menü → Importieren…, dann wählen Sie die .xosc aus.

Da der Datei-Dialog nur eine Datei nimmt, zeigt drawtonomy dann ein Banner oben auf dem Bildschirm an:

OPENDRIVE MAP REFERENCED cut-in.xosc../xodr/e6mini.xodr

Das OPENDRIVE MAP REFERENCED Banner — der .xosc-Name, die .xodr, auf die sie verweist, und eine Schaltfläche „Open .xodr"

Klicken Sie auf Open .xodr und wählen Sie die Straßendatei. Das Banner hat auch ein ×; wenn Sie es schließen, wird der Import beendet, ohne etwas zu laden. Verwenden Sie daher Open .xodr, es sei denn, Sie möchten abbrechen.

Hängen Sie ?open= und eine GitHub-Datei-URL an die App-URL an:

https://drawtonomy.com/?open=https://github.com/esmini/esmini/blob/master/resources/xosc/cut-in.xosc

Dieser Link ist live — probieren Sie ihn aus: Öffnen Sie das esmini cut-in-Szenario in drawtonomy →

drawtonomy ruft die .xosc auf, liest ihre RoadNetwork-Referenz und zieht die .xodr aus dem gleichen Repository beim gleichen Commit oder Branch. Es zählt auch die Catalogs-Verzeichnisse auf, auf die das Szenario verweist, und lädt die gefundenen Katalog-Dateien — der einzige Weg, in dem Kataloge automatisch aufgelöst werden.

Was es akzeptiert und was nicht:

Akzeptierte Hostsgithub.com-Datei-Blob-Links und raw.githubusercontent.com
Abgelehntjeder andere Host und tree/-Verzeichnis-Links
Repositorymuss öffentlich sein — der Abruf ist unauthentifiziert
Rate-Limitdie Katalog-Auflistung nutzt die unauthentifizierte GitHub-API, begrenzt auf 60 Anfragen pro Stunde
Absolute Straßen-Pfadeeine RoadNetwork, die auf einen Windows-Pfad (C:\…) zeigt, kann nicht aufgelöst werden; Sie werden stattdessen um die .xodr gebeten

Dies macht einen einzigen Link aus, um ein ausführbares Szenario mit einem Reviewer zu teilen — kein Download, kein Install.

Die ?open=-Route liest von GitHub. Um ein bearbeitetes Szenario zu teilen, legen Sie die Dateien dort hin, wo GitHub sie bereitstellen kann:

  1. In drawtonomy, Export → OpenSCENARIO (.xosc)… mit INCLUDE auf .xosc + .xodr gesetzt, damit die Straße mit dem Szenario reist. (Behalten Sie den relativen RoadNetwork-Pfad, den der Export schreibt.)
  2. Committen und pushen Sie beide Dateien zu einem öffentlichen GitHub-Repository.
  3. Kopieren Sie die GitHub-Blob-URL der .xosc-Datei (den github.com/…/blob/…-Link von der Dateiseite) und hängen Sie ihn an https://drawtonomy.com/?open=.

Jeder, der diesen Link öffnet, erhält Ihr bearbeitetes Szenario, seine Straße und alle Kataloge, die das Repository enthält — automatisch aufgelöst, da ?open= Kataloge aus dem gleichen Repository lädt.

Nach erfolgreichem Import wechselt drawtonomy automatisch zu Szenario-Modus und die LOGIC-Karte füllt sich:

  • Jedes OpenSCENARIO Act wird zu einer Phase, behält seinen Namen. Ein Szenario mit CutInAndBrakeAct zeigt eine Phase mit diesem Namen.
  • Jedes Event wird zu einer Ereigniskarte unter dem Aktor, der es ausführt, beschriftet mit dem ursprünglichen Ereignisnamen.
  • Der StopTrigger des Storyboards wird zum END CONDITIONS-Knoten — zum Beispiel After CutInManeuver ends.

Klicken Sie auf jede Ereigniskarte, um den Ereignis-Editor zu öffnen. Auslöser, Aktionen, Dynamik-Profile und Prioritäten machen alle eine Hin- und Rückfahrt mit, daher liest ein importierter Time gap to actor-Auslöser als Time gap to actor mit dem gleichen Schwellwert zurück. Namen von Maneuver und ManeuverGroup werden im Abschnitt ADVANCED beibehalten, anstatt auf der Karte angezeigt zu werden.

Viele veröffentlichte Szenarien deklarieren <CatalogLocations> und ziehen ihre Fahrzeugmodelle aus externen Katalog-Dateien. Wenn Sie eine solche Datei importieren, zeigt drawtonomy einen informativen Toast an:

This scenario references external Catalogs that were not provided. Drop the catalog files with the .xosc, or actors may not load.

Lesen Sie es als Information, nicht als Fehler:

  • Es erscheint, wann immer die .xosc Katalog-Standorte deklariert, ob etwas wirklich fehlt oder nicht.
  • Standard-Fahrzeug-Katalog-Einträge werden auf drawtonomy’s eingebaute Modelle abgebildet, daher laden in den meisten Fällen alle Aktoren mit der richtigen Form, Farbe und Startposition und das Szenario spielt sich durch.
  • Der Toast verschwindet von selbst nach wenigen Sekunden; importieren Sie die Datei erneut, wenn Sie ihn nochmal lesen müssen.
  • Kataloge werden über die ?open= GitHub-Route automatisch aufgelöst.

Falls Aktoren nach einem Import wirklich fehlen, zeigt sich das deutlich — die betroffenen Entitäten erscheinen überhaupt nicht auf der Arbeitsfläche.

Sie können nach dem Import alles ändern, aber ein Detail überrascht Menschen. Das Variables-Panel — die {x}-Schaltfläche auf der LOGIC-Karte — sagt es direkt:

Editing values here does not change actions already imported with a literal value (references are resolved at import time).

Mit anderen Worten: Falls die ursprüngliche .xosc $HostVehicle_Speed nutzte und dieser Parameter war 27.7, hält die importierte Aktion 27.7, nicht die Referenz. Das Ändern des Parameters danach bewegt die Aktion nicht. Bearbeiten Sie die Aktion selbst.

Die Transport-Zeile oben auf der LOGIC-Karte steuert die Ausführung: Wiedergabe und Pause, Zurücksetzen zum Start, Wiedergabe-Geschwindigkeit, Verfolgungskamera, Ghost-Trails und der Verdikt-Badge. Ziehen oder klicken Sie die Zeitlinie, um zu einem beliebigen Moment zu springen. Siehe Playback für die vollständige Palette.

Zwei Gewohnheiten, die sich für importierte Szenarien lohnen:

  • Stellen Sie die Verfolgungskamera ein, bevor Sie abspielen. Importierte Straßennetze sind oft Kilometer lang, und die Standard-Kamera verfolgt nichts.
  • Spulen Sie statt zu schauen. Jede Pose kommt aus der Simulation, daher ist das Pausieren beim exakten Frame eines Cut-In exakt, nicht eine Schätzung.
SymptomUrsache
Nichts lädt nach Wahl einer .xoscDie Straßendatei wurde nie geliefert. Importieren Sie erneut und nutzen Sie Open .xodr auf dem Banner.
Aktoren sitzen alle übereinanderDie Straße wurde nicht geladen, daher fielen alle Entitäten zum Ursprung zurück. Überprüfen Sie, dass die .xodr zum Szenario passt.
Ein Aktor stoppt unterwegs und bewegt sich nicht mehrEr hat das Ende der Straße erreicht. Erweitern Sie die Straße oder nutzen Sie eine längere .xodr.
Katalog-Toast bei jedem ImportErwartet für jeden .xosc mit <CatalogLocations> — siehe oben.
Ein GitHub-Link wird abgelehntNur github.com-Blob-Links und raw.githubusercontent.com werden akzeptiert, und das Repository muss öffentlich sein.