Kamerasteuerung im 3D-Bereich
Übersicht

![]() |
CrowSmithehemals "Fleisch"Betreff: Kamerasteuerung im 3D-Bereich |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo.
Bin gerade dabei, die Kamera meines aktuellen Projektes mobil zu machen. Dabei stoße ich allerdings immer wieder auf Probleme. Im 2D Bereich habe ich gelernt die Flugbahn eines Objektes mit Sin und Cos zu bestimmen, sodass es eben nicht nur starr in die vier Grundrichtungen bewegt werden kann. Muss ich das gleiche Prinzip auch auf die dritte Dimension anwenden? Möchte eine umherfliegende Kamera, die immer in DIE Richtung fliegt, in die sie schaut. WASD = Bewegung in die vier Grundrichtungen, also S = Bewegt sich entgegengesetzt der Blickrichtung. A und D = Bewegt sich jeweils horizontal orthogonal zur Blickrichtung. Leertaste = Y-Achse auf Strg = Y-Achse ab Maus auf/ab = Blickwinkel auf/ab Maus links/rechts = Blickwinkel links/rechts mehr muss es erstmal nicht sein denke ich. WASD,Leertaste und Strg sind ja auch kein Problem, aber: 1. Ich habe Probleme bei der Kameradrehung (auf/ab/links/rechts) 2. Ich weiss nicht, wie ich es bewerkstelligen soll, die Kamera in die Blickrichtung zu bewegen... Kann mir da Jemand behilflich sein? Danke, mfG, CrowSmith |
||
Worklogs: TotalWar2D
Wbsites: Privat / Entwicklerstudio / Gewerbe (Folgen bald) Smartphones: Samsung Galaxy S I9000 / Samsung Galaxy S2 I9100 / Samsung Galaxy S3 (Kommt 2012) Notebook 1: HP Pavillion DV6700 (AMD 64 X2 TL-60 @ 2.00GHz, 4GB DDR3 1333MHz, Nvidia GeFroce 8400M GS, Win Vista Home Premium 32Bit) Notebook 2: HP Pavillion DV6t Quad Edition (KOMMT BALD =] ) Notebook 3: Clevo X7200 (KOMMT BALD =] ) Desktop: (KOMMT BALD =] ) |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
MoveEntity![]() ![]() ZEVS |
||
![]() |
AnaBetreff: Re: Kamerasteuerung im 3D-Bereich |
![]() Antworten mit Zitat ![]() |
---|---|---|
CrowSmith hat Folgendes geschrieben: Möchte eine umherfliegende Kamera, die immer in DIE Richtung fliegt, in die sie schaut
Moveentity ist der Befehl dafür. Ansonsten muss du bei mehr als 2 Dimensionen dich fürchte ich auf die Vektorrechnung einlassen. Dafür brauchst du Start und Richtung/Ziel. Dann ermittelst du die Länge deines Vektors und teilst die Richtungen durch Länge, damit erhälst du die Anteile jeder Richtung und insgesamt ergeben sie 1. Wenn du nun jeder mit der Geschwindigkeit multiplizierst dann hast du deine Bewegung. Aber solange du relativ zur objektrichtung dich bewegst nimm einfach Move oder TurnEntity |
||
Don't only practice your art,
but force your way into its secrets, for it and knowledge can raise human to divine |
![]() |
Johannes´ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest dir angewöhnen, die Suche benutzen. "Maussteuerung" sollte da schon das Passende liefern.
Wenn du die Kamera drehst, dreht sich das Koordinatensystem der Kamera auch. Das heißt Code: [AUSKLAPPEN] MoveEntity kamera,0,0,1
bewegt die Kamera immer in die Richtung, in die sie schaut bzw. gedreht ist. Ansonsten: TurnEntity ![]() ![]() ![]() ![]() ![]() |
||
![]() |
CrowSmithehemals "Fleisch" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke euch, das war der Wink mit dem Zaunpfahl ![]() Ich werd mir mal angewöhnen nicht mehr parallel zu fragen und in die Hilfe zu schauen sondern VORHER in die Hilfe zu schauen ![]() ![]() |
||
Worklogs: TotalWar2D
Wbsites: Privat / Entwicklerstudio / Gewerbe (Folgen bald) Smartphones: Samsung Galaxy S I9000 / Samsung Galaxy S2 I9100 / Samsung Galaxy S3 (Kommt 2012) Notebook 1: HP Pavillion DV6700 (AMD 64 X2 TL-60 @ 2.00GHz, 4GB DDR3 1333MHz, Nvidia GeFroce 8400M GS, Win Vista Home Premium 32Bit) Notebook 2: HP Pavillion DV6t Quad Edition (KOMMT BALD =] ) Notebook 3: Clevo X7200 (KOMMT BALD =] ) Desktop: (KOMMT BALD =] ) |
![]() |
CrowSmithehemals "Fleisch" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Neuer Post weil neues Problem...
bin frustriert... finde NICHTS im Forum was mir weiterhelfen würde... habe dashier gefunden Code: [AUSKLAPPEN] If EntityPitch(camera)>80 RotateEntity camera,89,0,0 If EntityPitch(camera)<-80 RotateEntity camera,-89,0,0 aber das erzeugt neue Probleme.... Ich möchte mit der Kamera auf und ab schauen und mittels Begrenzung verhindern, dass die kamera sich "überschlägt". Mit dem oben geposteten Code (Habe ich aus dem Forum) funktioniert das zwar, aber ich bleibe ab und an hängen und komme nicht mehr vom 80er Winkel weg. Plötzlich fliegt mir dann aber die Kamera um die Ohren wenn ich die Maus etwas intensiver bewege, um wieder wegzukommen. Außerdem habe ich ein Problem mit gleichzeitigem Drehen um die X- und um die Y-Achse... irgendwie sehe ich das "Terrain" dann am Ende immer "schräg" und komme nicht wieder in die gewünschte Lage der Kamera... Dazu kommt noch, dass ich die Drehungen (Sowohl die horizontale als auch die vertikale) nicht allein vom mousexspeed und mouseyspeed abhängig machen will, denn wenn ich die Maus minimal zu schnell bewege rastet die Drehung direkt abnormal aus... Ich benötige eine Erläuterung... Die horizontale Drehung habe ich jetzt wieder rausgenommen (Grund dafür oben erklärt). Die vertikale Drehung habe ich natürlich mit EDIT: Sorry habe den Code nicht korrekt eingefügt :S Jetzt ist er da Code: [AUSKLAPPEN] TurnEntity camera,MouseYSpeed()*1,0,0 umgesetzt... Kann mir bitte Jemand weiterhelfen? Ich bräuchte mal einen Modellcode der mir anschaulich zeigt, wie ich das mit der Kamera angehen muss. Ich möchte die Kamera ganz "normal" bewegen können, eben wie z.B. in einem Egoshooter oder first person RPG... Das fortbewegen der Kamera haut super hin aber eben das mit den Drehungen nicht... Fehler sind oben beschrieben... DAS frustiret mich jetzt... |
||
Worklogs: TotalWar2D
Wbsites: Privat / Entwicklerstudio / Gewerbe (Folgen bald) Smartphones: Samsung Galaxy S I9000 / Samsung Galaxy S2 I9100 / Samsung Galaxy S3 (Kommt 2012) Notebook 1: HP Pavillion DV6700 (AMD 64 X2 TL-60 @ 2.00GHz, 4GB DDR3 1333MHz, Nvidia GeFroce 8400M GS, Win Vista Home Premium 32Bit) Notebook 2: HP Pavillion DV6t Quad Edition (KOMMT BALD =] ) Notebook 3: Clevo X7200 (KOMMT BALD =] ) Desktop: (KOMMT BALD =] ) |
- Zuletzt bearbeitet von CrowSmith am So, Nov 13, 2011 14:43, insgesamt einmal bearbeitet
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
edit: Bitte bis nach dem Zitat ignorieren
Sag mal, liest du dir eigentlich durch, was du da schreibst? Zitat: Das Problem an deinem Beispiel-Code ist, dass du, wenn die Kamera zu weit geht, sie außerhalb des gewünschten Bereiches absetzt. Das solltest du ändern. ZEVS |
||
- Zuletzt bearbeitet von ZEVS am So, Nov 13, 2011 16:22, insgesamt einmal bearbeitet
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Modellbeispiel?
Ganz einfach. Wenn du eine Art Spielerfigur hast die unter dem Einfluss von Gravitation steht... Erstelle einen Pivot CreatePivot ![]() - Sprünge in die Höhe (Y-Achse) - Drehung des Pivots (Y-Achse) Hänge dort deine Spielfigur (falls verfügbar) und die Kamera via EntityParent ![]() Jetzt dreht sich die Kamera und Spielfigur immer mit der Drehung des Pivots mit. Das nach oben bzw. unten schauen realisierst du durch... - Drehung der Kamera (X-Achse) So wird nix schief und krumm und du hast gleich sinnvolle Komponenten um darauf mal ein funktionierendes Bewegungssystem mit Spielfigur aufzubauen. Der besagte Pivot könnte dein Fuß sein, die Kamera die Augen (Also setze die Kamera etwas höher als den Pivot). Beachte, dass du zuerst EntityParent ![]() ![]() MfG. |
||
![]() |
CrowSmithehemals "Fleisch" |
![]() Antworten mit Zitat ![]() |
---|---|---|
@NightPhoenix: Danke Dir, das klingt vernünftig. Werde das gleich mal umsetzen.
@ZEVS: Tut mir echt leid, habe da wohl beim Einfügen des Codes was falsch gemacht :S Habe es korrigiert. |
||
Worklogs: TotalWar2D
Wbsites: Privat / Entwicklerstudio / Gewerbe (Folgen bald) Smartphones: Samsung Galaxy S I9000 / Samsung Galaxy S2 I9100 / Samsung Galaxy S3 (Kommt 2012) Notebook 1: HP Pavillion DV6700 (AMD 64 X2 TL-60 @ 2.00GHz, 4GB DDR3 1333MHz, Nvidia GeFroce 8400M GS, Win Vista Home Premium 32Bit) Notebook 2: HP Pavillion DV6t Quad Edition (KOMMT BALD =] ) Notebook 3: Clevo X7200 (KOMMT BALD =] ) Desktop: (KOMMT BALD =] ) |
bjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
versuch doch einfach den yaw- oder roll-winkel zu verwenden:
if entityyaw(objekt)=180 rotateentity objekt,90,0,0 ich weiß nicht ob das richtig ist. musst selber testen. |
||
![]() |
CrowSmithehemals "Fleisch" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok habe es jetzt hinbekommen. Pivot erstellt, Kamera drangeklatscht, Pivot übernimmt jedliche Bewebung AUSSER eben die Auf/Auf-Drehung, die überlasse ich weiterhin der Kamera. So funktioniert es einwandfrei!
Danke Euch! Gruß, der CrowSmith |
||
Worklogs: TotalWar2D
Wbsites: Privat / Entwicklerstudio / Gewerbe (Folgen bald) Smartphones: Samsung Galaxy S I9000 / Samsung Galaxy S2 I9100 / Samsung Galaxy S3 (Kommt 2012) Notebook 1: HP Pavillion DV6700 (AMD 64 X2 TL-60 @ 2.00GHz, 4GB DDR3 1333MHz, Nvidia GeFroce 8400M GS, Win Vista Home Premium 32Bit) Notebook 2: HP Pavillion DV6t Quad Edition (KOMMT BALD =] ) Notebook 3: Clevo X7200 (KOMMT BALD =] ) Desktop: (KOMMT BALD =] ) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group