RotateEntity - Turnentity

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Propagandaminister

Betreff: RotateEntity - Turnentity

BeitragDo, Dez 11, 2008 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht eine dumme Frage aber ich durchschaue das einfach nicht...
Wieso werden beim folgenden Programm die Würfel nicht gleich rotiert? Es sollte doch keinen Unterschied machen ob ich das Objekt mit turnentity um 1 rotiere oder denn Winkel für rotateentity per variable verändere...

Code: [AUSKLAPPEN]

a=a+1
b=b+1
c=c+1
TurnEntity cube,1,1,1,1
RotateEntity cube1,a,b,c,1



hier noch das ganze programm


Code: [AUSKLAPPEN]
Graphics3D 1280,1024,32,2
SetBuffer BackBuffer()
Dim kugel#(8,3,2)
;Kamera erstellen
Local camera
camera = CreateCamera()

Local takt=CreateTimer(100)

PositionEntity camera,0,0,-50
;Licht erstellen
Local light                                                   
light = CreateLight(2)
PositionEntity light,100,100,100
RotateEntity light,90,0,0

Local bodentextur = LoadTexture("materialien\bodentextur.png")
ScaleTexture bodentextur,0.05,0.05
Local boden
boden = CreateCube()
PositionEntity    boden,0,-9,0
ScaleEntity    boden,200,1,200
EntityTexture   boden,bodentextur

Local yawcamera# = 0
Local pitchcamera# = 0

cube = CreateCube()
ScaleEntity cube,8,8,8
PositionEntity cube,10,10,10
cube1 = CreateCube()
ScaleEntity cube1,8,8,8
PositionEntity cube1,10,10,10

Repeat
   a=a+1
   b=b+1
   c=c+1
   TurnEntity cube,1,1,1,1
   RotateEntity cube1,a,b,c,1
   
   


If KeyDown(200) Then MoveEntity camera,0,0,1
If KeyDown(208) Then MoveEntity camera,0,0,-1
If KeyDown(203) Then MoveEntity camera,-1,0,0
If KeyDown(205) Then MoveEntity camera,1,0,0
MoveEntity camera,0,MouseZSpeed(),0

If MouseDown(3) Then
   If MouseHit(3) Then MoveMouse 640,512
   yawcamera#= yawcamera#-MouseXSpeed()
   pitchcamera#=pitchcamera# -MouseYSpeed()
   RotateEntity camera,pitchcamera#,yawcamera#,0
EndIf
RenderWorld
FlushMouse()
WaitTimer(takt)   

Flip
Until KeyHit(1)

End


Vielen Danke für alle Antworten[/code]

Der Eisvogel

BeitragDo, Dez 11, 2008 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit RotateMesh geht es.
Ich bin jetzt zwar kein 3D, aber mein logisches denken beheuptet:
Wenn du das Objekt mit TurnEntity drehst, dann dreht er es immer weiter.
Bei RotateEntity, wird es vorher, quasi wieder auf 0,0,0 zurück gestellt.
Also ich kann das jetzt nicht richtig erklären, ve4rsuch mal das, das erklärt es hoffentlich:
Code: [AUSKLAPPEN]
a=a+1
b=b+1
c=c+1
RotateEntity cube,0,0,0
TurnEntity cube,a,b,c,1
RotateEntity cube1,a,b,c,1


MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

Propagandaminister

BeitragDo, Dez 11, 2008 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Fanke für die Antwort
Es Funktioniert so tatsächlich... Aber wieso funktioniert meine Version nicht? Es wird ja bei jedem Durchgang die Winkel a,b,c um 1 erhöht, was eine drehung des Würfels der mit RotateEntity gedreht wird um 1 bewirkt... Dasselbe geschieht doch auch mit dem TurnEntity-Befehl...
 

Tigerkev

BeitragDo, Dez 11, 2008 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau ma hier
TurnEntity
und hier
RotateEntity
Dann weiste bestimmt den unterschied ^^

Der Eisvogel

BeitragDo, Dez 11, 2008 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, wenn du den Würfel mit TurnEntity drehst, dann drehst du nur das Mesh und nicht das Objekt(Entity) und somit sind die Ergebnisse unterschiedlich.
Also, im Klartext:
Das Entity wird gedreht, aber die Achsen werden danach direkt in den Ursprungzustand zurückgesetzt.

Also ich hoffe, das ich es nix falsches gesagt habe, aber ich hoffe das man es so halbwegs verstehen kann was ich meine.

EDIT: Nach meiner obigen Erklärung sollte TrunEntity -> TurnMesh heißen.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

SYSThern

BeitragDo, Dez 11, 2008 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

in der hilfe ist es erklärt:

RotateEntity

Die Anweisung RotateEntity dreht ein Objekt (entity) auf einen bestimmten absoluten Winkel.



TurnEntity

Die Anweisung TurnEntity dreht ein Objekt (entity) um einen bestimmten relativen Winkel.
Tools and Programms
--------------------
www.systhern.de

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group