HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing (https://hx3.de/editing-139/)
-   -   Kamera an Person in bewegendem Fahrzeug heften? (https://hx3.de/editing-139/kamera-person-bewegendem-fahrzeug-heften-15477/)

RADEKs_Katze 27.11.2008 15:48

Kamera an Person in bewegendem Fahrzeug heften?
 
Hallo,

bin jetzt ganz neu mit Armed Assault eingestiegen, da ich vor langer Zeit mal OFP angespielt hatte und begeistert war.
Habe mich dann auch recht schnell mit dem Editor auseinandergestetzt und landete schlussendlich beim erstellen eines Intros.
Dazu hab ich eine Frage:

Nach langen suchen bin ich leider immer noch nicht auf eine Lösung des Problems gestoßen, wie ich eine Kamera an eine Person hefte die in einem fahrenden oder fliegenden Vehicle sitzt. Immer wenn ich dies probiere bleibt die Kamera an einem festen Punkt stehen und das Gefährt verschwindet in der Ferne.
Eine Kamera an das Vehicle selbst zu heften ist kein Problem und auch ausreichend erklärt.
Habe schon mit Sachen wie cameraEffect rumgespielt, hatte aber keinen großen Erfolg.
Das erstellen einer neuen Kamera funktionierte auch nicht, da sich das Vehicle bewegt und ich so keine Koordinaten habe. Gebe ich als target den Namen ein lande ich auch sonst irgendwo, aber nicht bei der Einheit die ich im Bild haben will.
Muss man da vieleicht gar nicht den "Anheftbefehl" nehmen, oder hab ich vieleicht einfach nur ein Brett vor dem Kopf?
Mir würde auch reichen bzw. gefallen in der Egoperspktive das Intro vortzusetzen, was beim nutzen der Missionskarte im Editor auch kein Problem darstellt (ist ja auch klar).

Na ja, da das ganze nicht funktionierte, habe ich nach einer anderen Lösung geschaut und wollte dann im sich bewegenden Fahrzeug eine Kamerafahrt realisieren, bzw. eine Kameraeinstellung auf die Person richten. Geht aber auch nicht wirklich, da ja die Kamera auf das Vehicle fixiert ist. Gibt es für dieses Problem eventuell auch eine Lösung?

Ich weiss, dass das eigendlich Sachen sind mit denen man nicht beginnt, möchte das aber trotzdem realisieren wenn das möglich ist.

Muss übrigens noch sagen, das man auch als Leihe Aufgrund der verschiedensten Tutorials, Anleitungen und nicht zu vergessen des Guides "leicht" einsteigen kann und so schon einiges realisieren kann. Finde ich sehr gut und habe großen Respekt vor den Erstellern solcher Hilfsmittel.

Gruß

Vienna 27.11.2008 19:23

Liste der Anhänge anzeigen (Anzahl: 1)
Hier ein Beispiel, wie die Kamera einen Hilikopter folgt.

Die Kamera verfolgt aber jedes Objekt, welches du in die globale Varialble Kamera1ZielObjekt eingibst.

z.B. Kamera1ZielObjekt = player


Der Abstand der Kamera zum Objekt ist einstellbar im Skirpt:

kamera1.sqf
Code:

_Px =  0; //Position der Kamera neben  dem Objekt
_Py = -40; //Position der Kamera hinter dem Objekt (negativer Wert)
_Pz =  2; //Position der Kamera über  dem Objekt


Mr-Murray 27.11.2008 19:37

Mach´s wie Vienna vorschlägt.
Im Editing Guide stehts ähnlich!

8.5 Kamera an ein Fahrzeug/Einheit heften - Seite 260

RADEKs_Katze 27.11.2008 20:23

vielen Dank,

werde es versuchen,

Gruß

GAanimal 26.12.2008 21:17

Und genau da bin ich gerade, auf Seite 260 des Editing Guides, habe das dort aufgeführte kopiert und eingefügt, die relevanten Namen angepasst aber das Spiel zeigt mir eine Fehlermeldung an. Da es nicht schwer ist simples copy and paste zu betreiben habe ich keine Ahnung wo der Fehler liegt.

Das hier steht bei mir in der .sqs Datei:

~3
_camera camSetTarget osprey
_camera camSetPos [0,0,0]
_camera camSetFOV 0.700
_camera camCommit 0
@camCommitted _camera
_camera cameraEffect ["internal","back"]
; Position der Kamera im/am/um das Fahrzeug
_car = osprey
;Position der Kamera längs des Fahrzeugs (vorne/hinten/in)
_dx = -6
;Position der Kamera neben dem Fahrzeug (links/rechts/in)
_dy = 0
;Höhe der Kamera (unter/über/in)
_dz = 2
#LOOP
;Die folgenden zwei Blöcke sind jeweils eine Zeile, was hier nicht möglich ist.
_camera camSetTarget [(10 * sin (getdir _car))+(getpos _ car select 0), 10*cos (getdir _car)+(getpos _car select 1), (getpos _car select 2)]
_camera camSetPos [(getpos _ car select 0) + _dx * sin (getdir _car) - _dy * cos (getdir _car), (getpos _car select 1) + _dx * cos (getdir _car) + _dy * sin (getdir _car), (getpos _car select 2)+_dz]
_camera camSetFOV 0.900
_camera camCommit 0
@camCommitted _camera
;Um das Skript zu beenden, setzen wir eine Bedingung. Hier: Wenn unser Auto
;näher als 50 Meter an die Einheit (P1) kommt, soll die Szene beendet werden.
?P1 distance osprey < 50 : goto "Ende"
goto "LOOP"
#Ende
P1 cameraEffect ["terminate","back"]
camDestroy _camera
exit

Kann mir bitte jemand mitteilen was hier dran falsch ist?
Laut Fehlermeldung steckt der Fehler (eine Klammer fehlt laut Meldung) irgendwo im zweiten Block. Vorschläge?

Mr-Murray 27.12.2008 18:58

Jop!
Dein Vehicle heißt Osprey. Unten hast du aber _car!

Da musst du dann schon ändern ;)


Viele Grüße

Mr-Murray

GAanimal 28.12.2008 12:05

Hallo nochmal,

danke Mr-Murray für deine schnelle Hilfe, jedoch funzt das ganze noch immer nicht. Ich habe alle _car in _osprey umgeschreiben, die Fehlermeldung allerdings die schon vorher kam hat sich nicht geändert, sie zeigt weiterhin an das irgendwo eine Klammer fehlt. Ich poste jetzt nochmal das aktuelle Script in der Hoffnung so den Fehler leichter zu identifizieren.


_camera camSetTarget osprey
_camera camSetPos [0,0,0]
_camera camSetFOV 0.700
_camera camCommit 0
@camCommitted _camera
_camera cameraEffect ["internal","back"]
; Position der Kamera im/am/um das Fahrzeug
_car = osprey
;Position der Kamera längs des Fahrzeugs (vorne/hinten/in)
_dx = -6
;Position der Kamera neben dem Fahrzeug (links/rechts/in)
_dy = 0
;Höhe der Kamera (unter/über/in)
_dz = 2
#LOOP
;Die folgenden zwei Blöcke sind jeweils eine Zeile, was hier nicht möglich ist.
_camera camSetTarget [(10 * sin (getdir _osprey))+(getpos _ osprey select 0), 10*cos (getdir _osprey)+(getpos _osprey select 1), (getpos _osprey select 2)]
_camera camSetPos [(getpos _ osprey select 0) + _dx * sin (getdir _osprey) - _dy * cos (getdir _osprey), (getpos _osprey select 1) + _dx * cos (getdir _osprey) + _dy * sin (getdir _osprey), (getpos _osprey select 2)+_dz]
_camera camSetFOV 0.900
_camera camCommit 0
@camCommitted _camera
;Um das Skript zu beenden, setzen wir eine Bedingung. Hier: Wenn unser Auto
;näher als 50 Meter an die Einheit (P1) kommt, soll die Szene beendet werden.
?P1 distance osprey < 50 : goto "Ende"
goto "LOOP"
#Ende
P1 cameraEffect ["terminate","back"]
camDestroy _camera
exit

Die Fehlermeldung lautet folgendermaßen:
_camera camSetPos [(getPos _ |#| osprey select 0) + _dx * sin (getdir _os...´_osprey...´
Error Fehlende )

Entschuldigt wenn ich euch mit solchen Belanglosigkeiten nerve =(


EDIT
Hab da noch ein Anliegen: und zwar wieso wird einmal _osprey und ein mal _ osprey geschrieben (also mit Leerzeile dazwischen)? Ich hab experiment um alle _ ospreys ohne leerzeile geschrieben. Tatsächlich verschwand die oben genannte Fehlermeldung, jedoch wurde sie kurz vor dem Eintritt der neuen Kamerasequenz durch eine neue ersetzt -.-

Mr-Murray 28.12.2008 14:28

Du hast ein ganz anderes Problem! Du kennst den Unterschied zwischen globaler und lokaler Variable nicht!


Wie heißt dein fhz nun? Osprey oder _Osprey???
Also bitte entsprechend anpassen, dann klappt auch ;)

GAanimal 28.12.2008 17:00

Ich weiß tatsächlich nicht was der Unterschied ist zwischen globalen und lokalen Variabeln, aber das hab ich auch nie behauptet.

Jetzt, wo ich _car ersetzt hab funktioniert es prima und läuft wunderbar :)

Danke für die Hilfe :danke:

GAanimal 01.01.2009 18:36

Es ist bei meinem Camscript ein Fehler aufgetaucht der mir völlig suspect erscheint. Ich habe die funktionierende Kamerasequenz kopiert und unter drangehängt, die Kameraposition editiert und mit einer Bedingung verknüpft.
Jedoch ist die zweite Kamerasequenz irgendwie fehlerhaft.

Sie sieht wie folgt aus:

#fortsetzung
;KAMERA AN FAHRZEUG SEQUENZ ZWEI
_camera camSetTarget osprey
_camera camSetPos [0,0,0]
_camera camSetFOV 0.700
_camera camCommit 0
@camCommitted _camera
_camera cameraEffect ["internal","back"]
; Position der Kamera im/am/um das Fahrzeug
_car = osprey
;Position der Kamera längs des Fahrzeugs (vorne/hinten/in)
_dx = 45
;Position der Kamera neben dem Fahrzeug (links/rechts/in)
_dy = -10
;Höhe der Kamera (unter/über/in)
_dz = 5
#LOOOP
;Die folgenden zwei Blöcke sind jeweils eine Zeile, was hier nicht möglich ist.
_camera camSetTarget [(10 * sin (getdir osprey))+(getpos osprey select 0), 10*cos (getdir osprey)+(getpos osprey select 1), (getpos osprey select 2)]
_camera camSetPos [(getpos osprey select 0) + _dx * sin (getdir osprey) - _dy * cos (getdir osprey), (getpos osprey select 1) + _dx * cos (getdir osprey) + _dy * sin (getdir osprey), (getpos osprey select 2)+_dz]
_camera camSetFOV 0.700
_camera camCommit 0
@camCommitted _camera
;Um das Skript zu beenden, setzen wir eine Bedingung. Hier: Wenn unser Auto
;näher als 50 Meter an die Einheit (P1) kommt, soll die Szene beendet werden.
?esgehtweiter : goto "weiter"
goto "LOOOP"
#weiter

Das Problem:
Wenn die gepostete Sequenz beginnt hängt die Kamera nicht am Osprey sondern fixiert irgendeinen Punkt über dem Meer. Sie folgt dem Ding einfach nicht was ja eigendlich aufgrund des _camera camSetTarget osprey garnicht gehen kann. Kann jemand helfen?
Schöne Grüße und frohes neues Jahr

Vienna 10.01.2009 17:11

Du musst das ordentlich programmieren.

.) die Variablen für das zu verfolgende Objekt und die Positionen der Kamera zum Objekt.
.) die Kamera erstellen.
.) das zu verfolgende Objekt der Kamera zuweisen.
.) die Nachstellungsschleife der Kamera zum zu verfolgenden Objekt.
.) die Kamera entfernen.

In diesem Beispiel verfolgt die Kamera 10 Sekunden ein Objekt.

Verfolgerkamera.sqs
Code:


;zu verfolgendes Objekt
_objekt = <hier Namen des zu verfolgenden Objekts anführen>

; Position der Kamera neben  dem Objekt
_Px =  0
; Position der Kamera hinter dem Objekt (negativer Wert)
_Py = -40
; Position der Kamera über  dem Objekt
_Pz =  2

               
;Kamera erstellen
ShowCinemaBorder false
_camera ="camera" camCreate [0,0,0]
_camera CameraEffect ["internal", "back"]
_camera camSetFOV 1


;von der Kamera zu verfolgendes Objekt festlegen
_camera camSetTarget _objekt;


_zeit = time + 10

;Schleife für die Dauer der Bedingung
#verfolgen

  ;Kamera dem Objekt nachstellen
  _camera camSetPos (_objekt modelToWorld [_Px,_Py,_Pz])
  _camera camCommit 0
  @camCommitted _camera

? time < _zeit : goto "verfolgen"


;Kamera entfernen
_camera CameraEffect ["terminate", "back"]
camDestroy _camera

Anstelle von Sinus und Cosinus wurde der Befehl "modelToWorld" verwendet!

Für eine weitere Verfolgung direkt nach der Schleife eine zweite Schleife einfügen. Es kann zuvor auch ein anderes zu verfolgendes Objekt angeführt werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:08 Uhr.

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias


SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119