Drehung von licht (LightYaw und RotateLight)

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
xdes
Beiträge: 57
Registriert: 13.08.2016 12:53

Drehung von licht (LightYaw und RotateLight)

Beitrag von xdes »

Moin,
ich versuche grade mittels LightYaw und RotateLight

ein licht um 360Grad zu drehen (LightYaw+1) nur leider geht das nur bis LightYaw 90.0 zurück gibt ....
wodran kann das liegen ( ich experimentiere grad mit dem purebasic beispiel Code aus der Hilfe)

ich vermute das der Rückgabe wert von LightYaw keine grad sind und ich deswegen Probleme bekomme...

ich bin auch der Meinung das purebasic die Umwandlung auch irgendwie schon vorgefertigt hat nur ich weis nicht mehr wie das Heist und zu allen meine versuche habe ich nix passenden über googel und die Forums suche gefunden ... vielleicht hilft das schon...

(ich hoffe das ist oki das ich den Code hier so poste... )

Code: Alles auswählen

#PB_Material_SpecularColor = 1
#PB_Material_AmbientColor  = 2

; IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY

#CameraSpeed  = 1
#RobotMesh    = 0
#RobotTexture = 0
#Robot        = 0
  
If InitEngine3D()

  Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
  Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Models", #PB_3DArchive_FileSystem)
   
  InitSprite()
  InitKeyboard()
  InitMouse()
  
;   If Screen3DRequester()
    OpenScreen(1920, 1080, 32, "Sprite")
    LoadMesh   (#RobotMesh   , "robot.mesh")
    LoadTexture(#RobotTexture, "clouds.jpg")
    
    CreateMaterial(0, TextureID(#RobotTexture))
    
    CreateEntity(#Robot, MeshID(#RobotMesh), MaterialID(0))
    SetEntityMaterial(#Robot, MaterialID(0))
    
;     StartEntityAnimation(#Robot, "Walk")
    
    DisableMaterialLighting(0, 0)
    
     SetMaterialColor(0, #PB_Material_AmbientColor, RGB(0, 0, 0))
     SetMaterialColor(0, #PB_Material_SpecularColor, RGB(0, 0, 0))
    SetMaterialColor(0,#PB_Material_SelfIlluminationColor, RGB(0, 0, 0))
    ScrollMaterial(0, 0.15, 0, 1)
        
    CreateLight(0, RGB(255,255,255),0, 0, 100,#PB_Light_Spot )
    SpotLightRange(0, 30, 35)
     RotateLight(0, 90, 0, 0, #PB_Relative )
;     SetLightColor(0, #PB_Light_SpecularColor, RGBA(255, 255, 255,255))
    
    CreateCamera(0, 0, 0, 100, 100)
    MoveCamera(0, 0, 40, 150)
;     CameraBackColor(0, RGB(0, 0, 128))
      
    Repeat
;       Screen3DEvents()
      
      If ExamineMouse()
        MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
        MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
      EndIf
      
      If ExamineKeyboard()
      
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed
        Else
          KeyX = 0
        EndIf
        
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed
        Else
          KeyY = 0
        EndIf
        
      EndIf
         
      RotateEntity(#Robot, 0, 1, 0, #PB_Relative)
      Debug LightYaw(0, #True)
      ;        RotateLight(0, LightPitch(0, #False),  LightYaw(0, #False)-1, LightRoll(0, #False))
      RotateLight(0, LightPitch(0, #False),  LightYaw(0, #False)+1, LightRoll(0, #False))

       RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
      MoveCamera  (0, KeyX, 0, KeyY)
      
      RenderWorld()
;       Screen3DStats()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
    
; Else
;   MessageRequester("Error", "The 3D Engine can't be initialized", 0)
; EndIf
  
End
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

Re: Drehung von licht (LightYaw und RotateLight)

Beitrag von man-in-black »

Hi,

kann gerade nicht wirklich nachgucken, aber idR wird bei Programmiersprachen
auf das Bogenmaß zurückgegriffen (0 bis 2pi statt 0 bis 360deg).

edit: in dem Fall wird jedoch deg genutzt (musste jetzt doch nachsehen :D). nvm ...

edit2:

Das was du suchst, sind die Eulerwinkel:
http://wiki.ogre3d.org/Euler+Angle+Class
http://planning.cs.uiuc.edu/node102.html


MFG
MIB
(hab alles, kann alles, weiß alles!!^^)

Bild
xdes
Beiträge: 57
Registriert: 13.08.2016 12:53

Re: Drehung von licht (LightYaw und RotateLight)

Beitrag von xdes »

vielen vielen dank man-in-black

in der Hoffnung das ich das richtig verstanden habe ...


+/-90grad und eine andere Achse mit +/-90grad =360grad

da man bei 180 grad ja genau die Rückseite hat ... und somit die anderen 180 grad ...


vielen dank nochmal man-in-black

ps: es wäre schon wenn so was in der Hilfe von pb stehen würde (mit evtl besser Beschreibung als ich das...)... kann man so was irgendwie dafür vorschlagen ?
Antworten