Kleine Frage zur darstellung einer Kugel!

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Blitzkrieg Bop

Betreff: Kleine Frage zur darstellung einer Kugel!

BeitragSa, Mai 21, 2005 23:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ich sitze gerade an folgendem kleinen Problem:
Ich will eine Kugel erstellen, die aus der Vogelperspektive zu betrachten ist. Allerdings soll die Kugel auch ständig gleich aussehen, nicht wie in folgendem Beispiel, wenn man sie nach links und rechts steuert:
BlitzBasic: [AUSKLAPPEN]

Graphics3D 640,480,16,2

cam = CreateCamera()
PositionEntity cam,0,0,-200

tex = CreateTexture(128,128)
SetBuffer TextureBuffer(tex)
ClsColor 255,0,0
Cls

SetBuffer BackBuffer()

ent = CreateSphere()
;ScaleEntity ent,40,40,0.01
ScaleEntity ent,40,40,40
EntityColor ent,255,255,0

pitch# = 0.0
x = 0

Repeat
Cls

WireFrame 1

If KeyDown(200) pitch = pitch + 1.5
If KeyDown(208) pitch = pitch - 1.5
If KeyDown(203) x = x - 1
If KeyDown(205) x = x + 1

PositionEntity ent,x,y,0
RotateEntity ent,pitch,0,0

UpdateWorld()
RenderWorld()

Flip
Until KeyHit(1):End


Lenkt man z.B nach links, wirkt die Kugel tiefer. Das soll vermieden werden. Damit man das so erreicht, kann man das Objekt anders skalieren, wie oben in dem Beispiel, einfach die ScaleEntity's austauschen.
Doch das Problem ist dann, das wenn ich RotateEntity nutze, nur "die Scheibe" gedreht wird, das soll aber ja die Kugel sein ... Confused

Also was kann ich tun, damit die kugel immer aussieht, wie bei
ScaleEntity ent,40,40,0.01
und ich dennoch RotateEntity nutzen kann und das es dann so aussieht als drehe ich die Kugel?
Ist bestimmt nur ne Kleinigkeit!

MFG
~ Hey Ho Let's Go ~

Mr.Keks

BeitragSo, Mai 22, 2005 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
tiefe wirst du durch ql:cameraprojmode los. du kannst aber auch die kamera an z skalieren bzw. den kamerazoom senken, was allerdings nicht sinnvoll ein dürfte.

viele spiele nehmen für kugeln übrigens sprites. da du sie unbedingt drehen willst, geht das natrürlich nicht. vielleicht kannst du auch die kugel in eine spritetexture rendern.
MrKeks.net
 

Blitzkrieg Bop

BeitragSo, Mai 22, 2005 1:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, danke auf den Befehl bin ich nicht gekommen!
Ich habs auch gleich ausprobiert und theoretisch klappt es auch, nur ich habe da ne frage. Und zwar weiß ich nicht genau, wie ich nun mit meinen Objekten umgehen muss, denn vorher, ohne CameraProjMode 2 habe ich einfach z.B auf 40,40,40 bzw. 40,40,0.01 skaliert und nun müsste es ca.
0.1,0.1,0.1 sein ! Außerdem ist, wie im Bsp. Code zu erkenne, das Objekt kaum lenkbar! Was genau kann ich da noch verbessern und wie stelle ich es an, das das Objekt genau auf 40,40,40 skaliert wird ?
Confused

BlitzBasic: [AUSKLAPPEN]

Graphics3D 640,480,16,2

cam = CreateCamera()
PositionEntity cam,0,0,-200
CameraProjMode cam,2

tex = CreateTexture(128,128)
SetBuffer TextureBuffer(tex)
ClsColor 255,0,0
Cls

SetBuffer BackBuffer()

ent = CreateSphere()
;ScaleEntity ent,40,40,0.01
ScaleEntity ent,.1,.1,.1
;ScaleEntity ent,40,40,40
EntityColor ent,255,255,0

pitch# = 0.0
x# = 0

WireFrame 1

Repeat
Cls

If KeyDown(200) pitch = pitch + 1.5
If KeyDown(208) pitch = pitch - 1.5
If KeyDown(203) x = x - 1
If KeyDown(205) x = x + 1

PositionEntity ent,x,y,0
RotateEntity ent,pitch,0,0

UpdateWorld()
RenderWorld()

Flip
Until KeyHit(1):End
~ Hey Ho Let's Go ~

Mr.Keks

BeitragSo, Mai 22, 2005 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
bei cameraprojmode2 hängt die größe eines objektes nicht mehr von der entfernung ab, da nicht mehr perspektivisch verzerrt, also durch die entfernung dividiert, wird. allerdings wirkt sich der camerazoom-faktor immernoch aus. du musst also einen sehr geringen camerazoom wählen, wenn du alles kleiner haben willst.


BlitzBasic: [AUSKLAPPEN]
Graphics3D 640,480,16,2 

cam = CreateCamera()
PositionEntity cam,0,0,-200
CameraProjMode cam,2
CameraZoom cam,1.0/320.0 ; <--------------------------------------------

tex = CreateTexture(128,128)
SetBuffer TextureBuffer(tex)
ClsColor 255,0,0
Cls

SetBuffer BackBuffer()

ent = CreateSphere()
;ScaleEntity ent,40,40,0.01
;ScaleEntity ent,.1,.1,.1
ScaleEntity ent,40,40,40
EntityColor ent,255,255,0

pitch# = 0.0
x# = 0

WireFrame 1

Repeat
Cls

If KeyDown(200) pitch = pitch + 1.5
If KeyDown(208) pitch = pitch - 1.5
If KeyDown(203) x = x - 1
If KeyDown(205) x = x + 1

PositionEntity ent,x,y,0
RotateEntity ent,pitch,0,0

UpdateWorld()
RenderWorld()

Flip
Until KeyHit(1):End
MrKeks.net
 

Blitzkrieg Bop

BeitragSo, Mai 22, 2005 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Juhu Inarie, danke!
Das leuchtet ein und es klappt auch Smile
Besten Dank!! Very Happy Razz

BTW: Man braucht ja einfach bei CameraZoom durch die X-Auflösung dividieren und dann einfach mit dem gewünschten Wert, hier:
40,40,40 skalieren und die Kugel ist 40*40 groß Smile
~ Hey Ho Let's Go ~

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group