Camera bewegung in 3D?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

bruce85

Betreff: Camera bewegung in 3D?

BeitragFr, Jan 12, 2007 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich möchte gerne in 3D etwas probieren, also ihr sieht doch in manchen Game wie die Camera alles zeigt, also vom Welt wo die Camera sich bewegt und die sich dann etwas dreht u.s.w.
Wisst ihr vieleicht wie ich solche Puckte machen kann, bis wo die Camera gerade aus bewegt und ab bestimmte Punk sich die Camera etwas dreht und sich weiter nach vorne bewegt?
Es wäre sehr nett, wenn mir einer ein beispiel posten könnt.

Vielen Dank schonmal.

MfG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jan 12, 2007 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du es besonders schön machen willst, so kannst du dich mit Bezierkurven beschäftigen. Diese würde dir äusserst schöne übergänge zu Drehungen und Bewegungen der Kamera etc. ermöglichen...

Einfach währe es allerdings nicht besonders.
 

bruce85

BeitragFr, Jan 12, 2007 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir,
wie macht man eigentlich sowas, gibt es vieleicht Tutorials darüber?

Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jan 12, 2007 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Erklärung wie Bezierkurven funktionieren, findest du unter http://www.robsite.de/bbkurs2/index.htm

Ansonsten hier ein Ausschnitt dessen:

Code: [AUSKLAPPEN]
; Rob´s BB-Kurs 2
; Robert Gerlach 11.2001
;
; Bezier
; ----------------------------------------------
; Zeichnet eine Bezierkurve die man mit der Maus steuern kann.
; Maussteuerung von mir.
;
; Original von: TheShadow
;               www.blitzbase.de
;
;





Graphics 640, 480, 16, 2
SetBuffer BackBuffer()




;Beispiel
x1=50:  y1=150
x4=100: y4=50
x2=150: y2=250
x3=200: y3=150


Repeat
Cls

x3 = MouseX()
y3 = MouseY()

Bezier x1,y1, x4,y4, x2,y2, x3, y3
Oval x1-5,y1-5,10,10,0
Oval x4-5,y4-5,10,10,0
Oval x2-5,y2-5,10,10,0
Oval x3-5,y3-5,10,10,0
Text 0,0,"Bezier-Demo"


Flip
Until KeyHit(1)
End




;------------------------------------------------------------------
;Diese Grafikfunktion zeichnet eine Kurve, die nur an den Start-
;und Endpunkten berührt wird.
;
;x1 = horizontale Startkoordinate
;y1 = vertikale   Startkoordinate
;x2 = horizontale Ablenkkoordinate 1
;y2 = vertikale   Ablenkkoordinate 1
;x3 = horizontale Ablenkkoordinate 2
;y3 = vertikale   Ablenkkoordinate 2
;x4 = horizontale Endkoordinate
;y4 = vertikale   Endkoordinate
;------------------------------------------------------------------
Function Bezier (x1, y1, x2, y2, x3, y3, x4, y4)
   cx# = 3 * (x2 - x1)
   bx# = 3 * (x3 - x2) - cx#
   ax# = x4 - x1 - cx# - bx#
   cy# = 3 * (y2 - y1)
   by# = 3 * (y3 - y2) - cy#
   ay# = y4 - y1 - cy# - by#
   For i# = 0 To 1.05 Step .05
      x = ((ax# * i# + bx#) * i# + cx#) * i# + x1
      y = ((ay# * i# + by#) * i# + cy#) * i# + y1
      If i#>0 Then Line oldx,oldy,x,y
      oldx=x
      oldy=y
   Next
End Function
 

bruce85

BeitragFr, Jan 12, 2007 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir,
das kann man aber nicht in 3D verwenden, da die Camera ja bewegt werden soll mit kurven u.s.w.
in Robsite finde ich nix dazu...
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Jan 12, 2007 23:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Um die Funktion von Bezier mal kurz zu erläutern:

In der Funktion steht u.a.Code: [AUSKLAPPEN]
   For i# = 0 To 1.05 Step .05

was bedeutet, dass zwischen 0 und 1 eine gesammte Animationssequenz besteht. Wenn man nun in der 3D-Welt eine Abfrage macht alá MilliSecs()/1000 == Animationssequenz, dann hat man bereits das, was man haben will. Ist eine Animationssequenz aus dem Bereich verlassen worden, so muß die nächste mit 'Wertüberlauf' (zB Anim1 = 500ms, 650ms, 800ms, 950ms, 1050ms = > 1000 also Anim2 = 1050-1000 = 50ms, 200ms etc...) übernommen werden.

Im Netz gibt es auch 3D-Bezierkurven, aber auch diese lässt sich für die 3D-Welt anwenden. zB Bezier1 X und Z -Achse, Bezier2 Y Achse und X Drehachse - als Beispiel.

edit1: Ich sagte ja, dass es nicht grad einfach sei. Eventuell gibt es auch andere Möglichkeiten.

biggicekey

BeitragSa, Jan 13, 2007 0:29
Antworten mit Zitat
Benutzer-Profile anzeigen
waypoints

am besten denk ich mal mit types in denen gewünschte position und drehung der kamera an entsprechendem punkt gespeichert sind.

und dann selbst ne funktionmachen die von einem zum anderen punkt nen sanften überganz macht.

wie man ne camera/entity steuert solltest du wissen. und YAW,PITCH und ROLL auch kennen.
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group