Beiträge: 2.450
Themen: 86
Thanks Received: 1.666 in 586 posts
Thanks Given: 1.865
Registriert seit: Oct 2011
Ich habe wohl einen Bug in OpenSIM gefunden ...
um genau zu sein in der OSSL-Funktion osTeleportAgent
Ich habe in mehrfachen Versuchen das Verhalten der Funktion untersucht.
Um meine eigenen Unsicherheiten im Umgang mit Vektoren und Quaternionen zu umgehen, habe ich mich der Hilfe von chatGPT bedient. Nachdem alle diese Tests zu keinem Ergebnis gekommen sind, habe ich die KI dann gebeten eine Problembeschreibung für die Entwickler zu schreiben ... Hier ist sie:
chatGPT schrieb:Based on the testing done together, it appears that the implementation of osTeleportAgent in OpenSim is not functioning correctly with regards to the lookat parameter. The lookat parameter is supposed to determine the direction the avatar should be facing after teleporting, but in this case, the avatar is not facing in the direction specified by the lookat parameter.
The script was written based on the documentation provided for osTeleportAgent, which stated that lookat is the direction the avatar should look and that the z value would be ignored. However, this has not been the case during testing. The lookat direction was calculated as a normalized vector using the specified compass angle, but the avatar did not face in that direction after teleporting.
It is recommended that the implementation of osTeleportAgent in OpenSim be examined to determine why the lookat parameter is not functioning correctly, and if necessary, the implementation be corrected to correctly set the avatar's facing direction after teleporting.
Ich kann aber keine Kontaktinformation finden, wie ich menen Bugreport denn nun an den/die Developer bringe. Wer weiss Rat oder kann das evtl. auch gleich weitergeben?
Nun hab ich das Mendelsöhnchen und weiss nicht wo Hindemith
Wer nicht weiss wohin er will, der kommt leicht woanders hin.
Beiträge: 1.547
Themen: 74
Thanks Received: 786 in 337 posts
Thanks Given: 377
Registriert seit: May 2013
09.02.2023, 19:30
(Dieser Beitrag wurde zuletzt bearbeitet: 09.02.2023, 19:45 von Mareta Dagostino.)
Mit einem automatenübersetzten Text ist es natürlich nicht getan. Entwickler werden dann ggf. mit Rückfragen antworten und dich bitten, verschiedene Szenarien mit der aktuellen Testversion von OpenSim nachzustellen und deren Ergebnisse zu berichten. Siehe den Kommentar-Verlauf in anderen Bugs, bei denen etwas voran geht.
EDIT: Es könnte auch sein, dass es ein längst bekannter Bug ist, jedenfalls überrascht mich das beschriebene Verhalten jetzt nicht wirklich. Da Dubletten nicht gerne gesehen sind, solltest du vorher auch schauen, ob das nicht schon längst gemeldet ist.
EDIT2: http://opensimulator.org/mantis/view.php?id=3631
Dieser Bugreport von 2009 vielleicht? Dort heißt es zwar "das geht prinzipiell nicht", aber 2020 hat jemand kommentiert, dass es möglicherweise inzwischen gehen soll.
Ansonsten: Wenn du dir dort einen Account machst, kannst du Bugs melden und kommentieren.
Beiträge: 2.450
Themen: 86
Thanks Received: 1.666 in 586 posts
Thanks Given: 1.865
Registriert seit: Oct 2011
Das ist keine "Automatenübersetzung" - ich habe die Unterhaltung mit chatGPT komplett in Englisch geführt und das ist nur das Fazit.
chatGPT ist eine vielseitige KI und weiss auch über LSL/OSSL Scripting bescheid ... allerdings sind die Snippets die sie liefert nicht so ohne weiteres lauffähig, da sie oft noch syntaktische Fehler enthalten. Ich benutze es hier als eine Art Helferlein im Daniel Düsentrieb Sinne
Wer nicht weiss wohin er will, der kommt leicht woanders hin.
Beiträge: 1.547
Themen: 74
Thanks Received: 786 in 337 posts
Thanks Given: 377
Registriert seit: May 2013
http://opensimulator.org/mantis/view.php?id=3772
Noch einer, auch geschlossen. 2021 der letzte Kommentar, es scheint keiner Lust zu haben einen Patch zu schreiben.
Beiträge: 2.450
Themen: 86
Thanks Received: 1.666 in 586 posts
Thanks Given: 1.865
Registriert seit: Oct 2011
09.02.2023, 20:09
(Dieser Beitrag wurde zuletzt bearbeitet: 09.02.2023, 20:10 von Anachron.)
(09.02.2023, 19:53)Mareta Dagostino schrieb: http://opensimulator.org/mantis/view.php?id=3772
Noch einer, auch geschlossen. 2021 der letzte Kommentar, es scheint keiner Lust zu haben einen Patch zu schreiben.
Das ist ein anderes Problem, könnte evtl. verbunden sein, wenn es ein Teleport in eine andere Region ist, aber das von mir beschriebene Problem existiert auch bei lokalen Teleports ...
Bei externen Teleports ist das mit dem Testen natürlich weitaus schwieriger, weil man nach jedem Hüpfer erst wieder zurückhecheln muss. Da es aber schon lokal nicht funktioniert, habe ich es extern erstmal nicht extensiv getestet ...
Interessanterweise scheint es aber zu funktionieren, wenn der gleiche Teleport zweimal initiiert wird. (Was natürlich nur bei lokalen Teleports möglich ist, weil da der Avatar nach dem TP noch in der Region ist.) Allerdings ist das verhalten nicht immer konbsistent und zuverlässig.
Wenn man es nicht fixen will oder kann wäre es natürlich nicht schlecht die Dokumentation dahingehend zu ergänzen, dass man darauf hinweist.
Wer nicht weiss wohin er will, der kommt leicht woanders hin.
Beiträge: 1.547
Themen: 74
Thanks Received: 786 in 337 posts
Thanks Given: 377
Registriert seit: May 2013
09.02.2023, 20:33
(Dieser Beitrag wurde zuletzt bearbeitet: 09.02.2023, 20:33 von Mareta Dagostino.)
Wenn die verlinkten Reports beide nicht passen, könnte sich ein neuer Bugreport vielleicht lohnen. Zumindest ich habe sonst nichts ähnliches gefunden, du kannst natürlich auch noch mal schauen. Dein Text wäre dann für das Beschreibungsfeld. Die anderen Felder bezüglich deiner Testumgebung müsstest du dann natürlich auch ausfüllen. Um die Chancen möglichst groß zu halten, würde ich mit der aktuellen OSGrid Version testen (oder neuer, falls du hast). Und ein möglichst einfach reproduzierbares Szenario zum Nachstellen des Fehlers hilft ggf. auch. So ist zumindest meine Erfahrung bei anderen Software-Projekten. In OpenSim habe ich noch nie was gemeldet.
Beiträge: 2.450
Themen: 86
Thanks Received: 1.666 in 586 posts
Thanks Given: 1.865
Registriert seit: Oct 2011
(09.02.2023, 20:33)Mareta Dagostino schrieb: Wenn die verlinkten Reports beide nicht passen, könnte sich ein neuer Bugreport vielleicht lohnen. Zumindest ich habe sonst nichts ähnliches gefunden, du kannst natürlich auch noch mal schauen. Dein Text wäre dann für das Beschreibungsfeld. Die anderen Felder bezüglich deiner Testumgebung müsstest du dann natürlich auch ausfüllen. Um die Chancen möglichst groß zu halten, würde ich mit der aktuellen OSGrid Version testen (oder neuer, falls du hast). Und ein möglichst einfach reproduzierbares Szenario zum Nachstellen des Fehlers hilft ggf. auch. So ist zumindest meine Erfahrung bei anderen Software-Projekten. In OpenSim habe ich noch nie was gemeldet.
Der erste den du gepostet hast passt schon ... aber der hat ja doch schon etwas Moos angesetzt ... der zweite bezieht sich aber m.E. nach auf etwas anderes, obgleich das als Grund für eine fehlerhafte Rotation bei externen Teleports mit in Betracht kommt, Aber bei Internen Teleports ist dieser Bugreport "unrelated".
Ich habe kein Testgrid um mit aktuellen Testversionen rumzuprobieren ... ich kann meine Tests nur in der aktuell bei Dorenas-World laufenden Version machen - und das ist meines Wissens das letzte "stable Release".
Wer nicht weiss wohin er will, der kommt leicht woanders hin.
Beiträge: 403
Themen: 16
Thanks Received: 224 in 115 posts
Thanks Given: 808
Registriert seit: Sep 2017
10.02.2023, 13:35
(Dieser Beitrag wurde zuletzt bearbeitet: 10.02.2023, 13:36 von Pius Noel.)
So wie es aussieht, funktioniert es auch bei mir nicht. Ich habe aber nur kurz unter OpenSim 0.9.2.2 Yeti Dev 1afe46d getestet.
Ich werde am Wochenende das mal näher anschauen.
Beiträge: 916
Themen: 135
Thanks Received: 539 in 292 posts
Thanks Given: 69
Registriert seit: Feb 2015
11.02.2023, 16:00
(Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2023, 16:06 von Manfred Aabye.)
Bei mir Funktioniert es Tadellos.
opensim-0.9.2.2Dev-387-g157d351
Ich benutze die YEngine.
Hier mein Testscript:
PHP-Code: // Example osTeleportAgent Script // // Set Destination as described below, There are a Few Options depending on Application: // IN GRID Teleport // Destination = "1000,1000"; = Using In-Grid Map XXXX,YYYY coordinates // Destination = "RegionName"; = Using RegionName // HyperGrid Teleport (region must be HG Enabled) // Destination = "TcpIpAddr:Port:RegionName"; = Using the Target/Destination IP Address // Destination = "DNSname:Port:RegionName"; = Using the Target/Detination DNSname // Note: RegionName is Optionally Specified to deliver Avatar to specific region in an instance. // // ======================================================================================== // === SET DESTINATION INFO HERE === //
// vector LookAt = <OstenWesten, NordenSueden, 0.0>; float Osten=1.0; float Westen=-1.0;
float Norden=1.0; float Sueden=-1.0;
string Destination = "Welcome"; // your target destination here (SEE NEXT LINES) Can Be vector LandingPoint = <128.0, 128.0, 25.0>; // X,Y,Z landing point for avatar to arrive at // Test Blickrichtung Suedosten vector LookAt = <Osten, Sueden, 0.0>; // which way they look at when arriving
default { on_rez(integer start_param) { llResetScript(); } changed(integer change) // something changed, take action { if(change & CHANGED_OWNER) llResetScript(); else if (change & CHANGED_REGION_START) // that bit is set during a region restart llResetScript(); } state_entry() { llWhisper(0, "OS Teleportal Active"); } touch_start(integer num_detected) { key avatar = llDetectedKey(0); llRegionSayTo(avatar, 0,"Teleporting you to : "+Destination); osTeleportAgent(avatar, Destination, LandingPoint, LookAt); } }
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.
Beiträge: 403
Themen: 16
Thanks Received: 224 in 115 posts
Thanks Given: 808
Registriert seit: Sep 2017
Ich wollte gerade einen etwas ausführlicheren Zwischenbericht schreiben, aber Manni war schneller. Mein einfachstes Test-Script war fast so wie das von Manni geschrieben.
Wie ich gestern schon geschrieben hatte, funktionierte es bei mir nicht. Heute hat sich dann herausgestellt, dass es einmal funktioniert, dann wieder nicht. Dann vielleicht dreimal perfekt und dann wieder nicht. Reiner Zufall, mal so und mal so und mal irgendwo dazwischen, bzw. mit kleiner Abweichung..
Und genau das gleiche Verhalten habe ich mit dem Script von Manni, das ich 1:1 übernommen habe und nur den Namen der Region von "Welcome" auf "Homes" geändert habe.
Bei mir läuft OpenSim 0.9.2.2 Yeti Dev 1afe46d vom 14.1.2023 unter Linux mit Mono. Ich benutze ebenfalls YEngine. Beim Viewer habe ich den Firestorm 6.5.6 (66221) Jul 16 2022 11:36:34 (64bit / SSE2) (Firestorm-Releasex64) with OpenSimulator.
Die wichtigste Erkenntnis, die ich bei meinen bisherigen Experimenten gewonnen habe war, dass sich der LookAt nicht auf die Koordinaten einer bestimmten Position (z.B. eines Objektes, wie dem Eingang zum Club, einem Laden etc) bezieht, sondern auf die Blickrichtung. Man kann es als einen Richtungsvektor entlang der X-Achse (von -1 [West] nach +1 [Ost]) und der Y-Achse (von -1 [Süd] nach +1 [Nord ]) mit dem Avatar als Nullpunkt betrachten. Die Z-Achse spielt keine Rolle, da der Avatar immer geradeaus und nie nach unten oder nach oben blickt.
Mit diesem System sind natürlich nicht nur Blickrichtungen nach Nord, Ost, Süd oder West möglich, sondern auch beliebige Zwischenrichtungen, wie z.B. <-1,1,0> für Nord-West oder <0.5,-1.0,0.0> für Süd-Süd-Ost usw.
Es ist auch möglich die Blickrichtung auf ein Ziel-Objekt mit einer Formel zu bestimmen. Bei einer normalen 256x256m Region könnte das dann so aussehen.
Code: :
string Destination = "Welcome"; // your target destination here
vector LookAtTarget = <100.50, 140.0, 27.5>; // X,Y,Z of object to look at
vector LandingPoint = <128.0, 128.0, 25.0>; // X,Y,Z landing point for avatar to arrive at
// Test Blickrichtung Stehbar
vector LookAt = (lookAtTarget - landingPoint) / 128; // the object they look at when arriving
:
Neu ist hier die Variable LookAtTarget und die Formel zur Berechnung von LookAt. Der Rest wäre wie in Manni's Beispiel.
Das Problem ist jetzt offensichtlich noch nicht gelöst. Eine detaillierte Analyse scheint auch mit einem grösseren Aufwand verbunden zu sein. Dafür fehlt mir aber die Zeit, so dass ich das auch mal so im Raum stehen lassen muss.
|