Kamerasteuerung im 3D-Bereich
Übersicht BlitzBasic Blitz3D
CrowSmithehemals "Fleisch"Betreff: Kamerasteuerung im 3D-Bereich |
Sa, Nov 12, 2011 20:09 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 |
Sa, Nov 12, 2011 20:12 Antworten mit Zitat |
|
---|---|---|
MoveEntity zum Bewegen nach Blickrichtung. TurnEntity zum relativen Drehen.
ZEVS |
||
AnaBetreff: Re: Kamerasteuerung im 3D-Bereich |
Sa, Nov 12, 2011 20:17 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´ |
Sa, Nov 12, 2011 20:24 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, MouseXSpeed, MouseYSpeed, MoveEntity und vielleicht TranslateEntity, um eine absolute Verschiebung zu errreichen. |
||
CrowSmithehemals "Fleisch" |
Sa, Nov 12, 2011 20:40 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 Tut mir leid Jungs |
||
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" |
Sa, Nov 12, 2011 22:03 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 |
So, Nov 13, 2011 11:38 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 |
So, Nov 13, 2011 14:02 Antworten mit Zitat |
|
---|---|---|
Modellbeispiel?
Ganz einfach. Wenn du eine Art Spielerfigur hast die unter dem Einfluss von Gravitation steht... Erstelle einen Pivot CreatePivot und nutze diesen um folgendes zu machen: - 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 an. 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 anwenden solltest und dann die Komponenten positionierst und rotierst. Ebenso immer zuerst positionieren und dann rotieren, sonst kann es passieren dass du das Objekt in Abhängigkeit seiner Rotation bewegst. MfG. |
||
CrowSmithehemals "Fleisch" |
So, Nov 13, 2011 14:47 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 |
So, Nov 13, 2011 16:21 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" |
So, Nov 13, 2011 17:28 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 BlitzBasic Blitz3D
Powered by phpBB © 2001 - 2006, phpBB Group