Schatten haben einen Schatten

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Preludian
Beiträge: 52
Registriert: 25.04.2006 09:21

Schatten haben einen Schatten

Beitrag von Preludian »

also ehrlich, nicht nur, dass Terrains keinen Schatten abkriegen können, nein, wenn ich in der shadow.pb die Projektion umstelle auf perpective, dann ist der Schatten auf der Plane wech, zack bumm, nur bei Ortho geht es???

Bitte um eine vernünftige Erklärung, oder isses voodoo? :freak:
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Also ich sag ja immer: Man soll doch auch mal über seinen eigenen Schatten springen! :lol:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

was ist shadow.pb ???
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Preludian
Beiträge: 52
Registriert: 25.04.2006 09:21

Beitrag von Preludian »

Shadow on the wall :twisted:

shadow.pb ist eine Demo, die Fred mal gemacht hat um zu zeigen wie das in der PB4 geht. Geht ja, auch, solange nicht auf Perspective umgeschaltet wird. Zeile 49 CameraProjection(0, #PB_Camera_Orthographic)

Code: Alles auswählen

#CameraSpeed = 10

IncludeFile "Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D()

  Add3DArchive("Data\", #PB_3DArchive_FileSystem)
 
  InitSprite()
  InitKeyboard()
  InitMouse()
 
  If Screen3DRequester()
   
    WorldShadows(#PB_Shadow_Additive) ; Set the shadow mode for the world
   
    AmbientColor(RGB(128,128,128))
   
    ; Create a plan, manually
    ;
    CreateMesh(1,100)
    SetMeshData(1, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?PlanVertices, 4)
    SetMeshData(1, #PB_Mesh_Face, ?PlanFaces, 2)
   
    LoadMesh   (0, "Robot.mesh")
    LoadTexture(0, "r2skin.jpg")
   
    CreateEntity (0, MeshID(0), CreateMaterial(0, TextureID(0)))
    AnimateEntity(0, "Walk")

    CreateMaterial(1, LoadTexture(1, "clouds.jpg"))
    CreateEntity (1, MeshID(1), MaterialID(1))
   
    EntityRenderMode(1, 0) ; Disable shadow casting for this entity as it's our plan
    ScaleEntity(1, 1000, 1, 1000)
    MoveEntity(1, -500, 0, -500)
    DisableMaterialLighting(1, #False)
   
    CreateLight(0, RGB(255,255,255))
   
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, 2000, 2000, 2000) ; 3D iso view
    CameraLookAt(0, 0, 0, 0)
   
    ResizeEntity(0, 4, 4, 4)
   
    CameraProjection(0, #PB_Camera_Orthographic)
   
    LightLocate(0, CameraX(0), CameraY(0), CameraZ(0))
     
    Repeat
      Screen3DEvents()
     
      ClearScreen(RGB(0, 0, 0))
           
      If ExamineKeyboard()
       
        If KeyboardPushed(#PB_Key_Up)
          EntityLocate(0, ex, 0, 0)
          ex+3
        EndIf
       
        If KeyboardPushed(#PB_Key_Down)
          EntityLocate(0, ex, 0, 0)
          ex-3
        EndIf


      EndIf
     
      If ExamineMouse()
        ;MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
        ;MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
      EndIf
           
      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

DataSection

  PlanVertices:
   
    ; Note normals are important component to allow correct light support (and therefore shadow)
    ;
    Data.f 0, 0, 0    ; Vertex 0
    Data.f 1, 1, 1    ; Normals (perpendicular to the plan)
    Data.f 0   , 0.33 ; UVCoordinate
   
    Data.f 1, 0, 0    ; Vertex 1
    Data.f 1,1,1      ; Normals
    Data.f 0.33, 0.33 ; UVCoordinate
   
    Data.f 1, 0, 1    ; Vertex 2
    Data.f 1,1,1      ; Normals
    Data.f 0.33, 0    ; UVCoordinate
   
    Data.f 0, 0, 1    ; Vertex 3
    Data.f 1,1,1      ; Normals
    Data.f 0,    0    ; UVCoordinate

  PlanFaces:
    Data.w 2, 1, 0 ; bottom face (clockwise as it's reversed...)
    Data.w 0, 3, 2

EndDataSection
Antworten