Jump to content

Kamera Rotation


Andy

Empfohlene Beiträge

Hallo @Neo,
ich möchte noch über ein Problem berichten, dass ich schon eine Weile habe, bislang noch nicht berichtet habe.
In meiner Anlage benutze ich im Ablauf eine Kamera mit angehängtem Textfeld ("ACam") um alles als 'Video mit Untertitel' darzustellen.
Hierzu wird zu einem bestimmten Zeitpunkt aus einer Tabelle die Position einer platzierten Kamera und ein Text ausgelesen. Die so stationierte Kamera zeigt selbst das Bild nicht, es ist nur die ACam, die praktisch 'hüpft'. Das funktioniert soweit auch wunderbar, leider nicht in allen Fällen. In den problematischen Fällen übernimmt die Kamera zwar die Position, aber die Rotation ist falsch! Noch einmal: eine 'platzierte' Kamera ändert ihren Standpunkt nie, nur die Acam. Setze ich die gleichen Daten noch einmal dahinter in die Tabelle und führe die Operation noch einmal identisch durch, stimmen die Winkel!!!
Für's debuggen: Ich habe die Anlage mal kurz vor der Zuweisung gestoppt und als Entwurf abgespeichert (5 Sekunden vorher): ID ist 08ABAC09-E2EA-4110-8A7A-55FD50033462
Der Screenshot zeigt die Situation kurz danach, nach dem Kamerasprung (und vor der Wiederholung!). Als Vergleich habe ich die zugehörige 'platzierte Kamera' mal selektiert.
Um wieviel der Winkel verdreht ist, kann man dem kleinen Bildchen entnehmen, da die Kamera so das Textfeld der ACam mit zeigt.
Die zugehörige Tabelle findet sich in der EV unter dem Ordner 'Movie', das Skript für's 'Hüpfen' der Kamera in Ereignis 'tick Movie'. Etwas wild dort, weil ich oft genug versucht habe, dem Fehler näher zu kommen (bzw. s.u.=. Aber das muß vom System kommen. Der Fehler ist reproduzierbar, es findet sich außerdem später in der Tabelle noch ein zweites solch problematisches Ereignis. Jeder Versuch das Problem im Kleinen nachzustellen ist bislang aber gescheitert! Hat das was mit Laufzeiten zu tun?!?
Es ist nicht so, dass mich der Fehler sonderlich stört, die zweite Zuweisung danach funktioniert ja. Aber melden wollte ich das schon.
Der zweite Screenshot zeigt die Situation nach jener zweiten Zuweisung. Nun stimmen Acam (im Window) und Cam Zeppelin überein.

Gruß
  Andy

edit: relevanter Teil des Kameraskripts

     o = MovieTable[i][3] -- Objekt
     $("CamText").text = "" -- Textfeld löschen, Anm.: wohl nicht zwingend nötig
     $("ACam").transformation.position = o.transformation.position
     $("ACam").transformation.rotation = o.transformation.rotation
     layout.activeCameras[1] = $("ACam") -- Anm. eigentlich überflüssig, bis auf den allerersten Eintrag. Diese Kamera bleibt die Aktive.
     $("CamText").text = MovieTable[i][4]
  

relevanter Teil der Tabelle:

{  500, false, $("Cam Zeppelin"), "\n\n\nLangsam wachen alle auf..." },
{  505, false, $("Cam Zeppelin"), "" },

 

 

cam zeppelin.jpg

cam zeppelin 2.jpg

Bearbeitet von Andy
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe dann nochmal die Rotationswerte im skript printen lassen. Also, bei der ersten (fehlerhaften) Operation sieht es schon sehr merkwürdig aus. Was geht da ab? Ach ja - der Zeppelin bewegt sich ja leicht und die Kamera ist da angehängt...  Aber der Unterschied ist doch ziemlich grob. Die Wiederholung zeigt sich stark verbessert.
Und im dem späteren zweiten Problemfall in der Tabelle ist die Kamera nirgendwo angehängt. Notfalls hole ich deren Daten auch nochmal raus.

[07:50:38]                         obj x-0.21969597041607
[07:50:38]                         obj y-0.0091502983123064
[07:50:38]                         obj z0.040597103536129
[07:50:38]                         ACam x-0.12135223299265
[07:50:38]                         ACam y0.065209858119488
[07:50:38]                         ACam z-0.46883425116539

bei der Wiederholung des Kommandos nur noch geringe Unterschiede durch die Bewegung des Zeppelins, das wäre korrekt:

[07:52:43]                         obj x-0.21985968947411
[07:52:43]                         obj y-0.0034269373863935
[07:52:43]                         obj z0.015205532312393
[07:52:43]                         ACam x-0.21985965967178
[07:52:43]                         ACam y-0.003426933195442
[07:52:43]                         ACam z0.015205529518425

 

Bearbeitet von Andy
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Andy,

ich habe deine Anlage noch nicht im Detail untersucht, aber ich habe vor der Zuweisung der Transformation folgende Zeile hinzugefügt:

$("ACam").target = nil

Damit wird die Kamera erst "befreit", so wie du es schon mit der Verknüpfung (link) tust, bevor die Transformation angepasst wird. Ich habe noch keine weiteren Tests durchgeführt, aber wenn nur die Position übernommen wird, nicht aber die Rotation, dann deutet das darauf hin, dass die Kamera die Rotation anderweitig bestimmt, zum Beispiel durch eine noch gesetzte Verfolgung. Diese muss also wie die Verknüpfung zuerst gelöst werden.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...