Seite 1 von 1

Problem mit Entity Schatten

Verfasst: 16.10.2008 00:23
von IceDragon
Hi community... ich bin zwar neu hier im Board jedoch habe ich folgendes Problem:

Ich habe mir ein kleines aber feines Gebäude gebastelt (aus Entity's) und habe nun darin particleemitter und light's eingefügt... jetzt habe ich das Problem das ich keinen für mich erkennbaren schatten habe...

hier mal ein bild und der vollständige Code...

Bild

Code: Alles auswählen

If InitEngine3D() = 0
  MessageRequester("Fehler","Die Datei Engine3D.dll konnte nicht geladen werden")
EndIf

If InitSprite() = 0
  MessageRequester("Fehler","DirectX konnte nicht geladen werden, überprüfen Sie ihre DirectX Installation")
EndIf

If InitKeyboard() = 0
  MessageRequester("Fehler","Ihre Tastatur konnte nicht initialisiert werden")
EndIf

If InitMouse() = 0
  MessageRequester("Fehler","Ihre Maus konnte nicht initialisiert werden")
EndIf

#CameraSpeed = 15

If OpenScreen(1280,1024,32,"MicroTexx-Skybox-Test") = 0
  MessageRequester("Fehler","Programmfenster konnte nicht geöffnet werden")
EndIf

Add3DArchive("Data\", #PB_3DArchive_FileSystem)
Add3DArchive("Data\Texture\", #PB_3DArchive_FileSystem)
Add3DArchive("Data\Objects\", #PB_3DArchive_FileSystem)
Add3DArchive("Data\Texture\sky.mt", #PB_3DArchive_Zip)
Add3DArchive("Data\Texture\tempel.mt", #PB_3DArchive_Zip)
Add3DArchive("Data\Objects\tempel.mmt", #PB_3DArchive_Zip)

SkyBox("desert07.jpg")

LoadTexture(1,"0001.jpg")
LoadTexture(2,"0002.jpg")
LoadTexture(3,"0003.jpg")
LoadTexture(4,"0004.jpg")
LoadTexture(5,"0005.jpg")
LoadTexture(6,"0006.jpg")
LoadTexture(7,"0007.jpg")
LoadTexture(8,"0008.jpg")
LoadTexture(9,"0009.jpg")
LoadTexture(10,"0010.jpg")
LoadTexture(11, "Flare.png")

CreateMaterial(1,TextureID(1))
CreateMaterial(2,TextureID(2))
CreateMaterial(3,TextureID(3))
CreateMaterial(4,TextureID(4))
CreateMaterial(5,TextureID(5))
CreateMaterial(6,TextureID(6))
CreateMaterial(7,TextureID(7))
CreateMaterial(8,TextureID(8))
CreateMaterial(9,TextureID(9))
CreateMaterial(10,TextureID(10))
CreateMaterial(11,TextureID(11))

LoadMesh(1,"tempel0001.mesh")
LoadMesh(2,"tempel0002.mesh")
LoadMesh(3,"tempel0003.mesh")
LoadMesh(4,"tempel0004.mesh")
LoadMesh(5,"tempel0005.mesh")
LoadMesh(6,"tempel0006.mesh")
LoadMesh(7,"tempel0007.mesh")
LoadMesh(8,"tempel0008.mesh")
LoadMesh(9,"tempel0009.mesh")
LoadMesh(10,"tempel0010.mesh")

CreateEntity(1,MeshID(1),MaterialID(1))
CreateEntity(2,MeshID(2),MaterialID(2))
CreateEntity(3,MeshID(3),MaterialID(3))
CreateEntity(4,MeshID(4),MaterialID(4))
CreateEntity(5,MeshID(5),MaterialID(5))
CreateEntity(6,MeshID(6),MaterialID(6))
CreateEntity(7,MeshID(7),MaterialID(7))
CreateEntity(8,MeshID(8),MaterialID(8))
CreateEntity(9,MeshID(9),MaterialID(9))
CreateEntity(10,MeshID(10),MaterialID(10))

EntityRenderMode(1,#PB_Entity_CastShadow)
EntityRenderMode(2,#PB_Entity_CastShadow)
EntityRenderMode(3,#PB_Entity_CastShadow)
EntityRenderMode(4,#PB_Entity_CastShadow)
EntityRenderMode(5,#PB_Entity_CastShadow)
EntityRenderMode(6,#PB_Entity_CastShadow)
EntityRenderMode(7,#PB_Entity_CastShadow)
EntityRenderMode(8,#PB_Entity_CastShadow)
EntityRenderMode(9,#PB_Entity_CastShadow)
EntityRenderMode(10,#PB_Entity_CastShadow)

DisableMaterialLighting(11,1)

MaterialBlendingMode(11,#PB_Material_Add)

MaterialFilteringMode(1,#PB_Material_Trilinear)
MaterialFilteringMode(2,#PB_Material_Trilinear)
MaterialFilteringMode(3,#PB_Material_Trilinear)
MaterialFilteringMode(4,#PB_Material_Trilinear)
MaterialFilteringMode(5,#PB_Material_Trilinear)
MaterialFilteringMode(6,#PB_Material_Trilinear)
MaterialFilteringMode(7,#PB_Material_Trilinear)
MaterialFilteringMode(8,#PB_Material_Trilinear)
MaterialFilteringMode(9,#PB_Material_Trilinear)
MaterialFilteringMode(10,#PB_Material_Trilinear)

MaterialShadingMode(1,#PB_Material_Phong)
MaterialShadingMode(2,#PB_Material_Phong)
MaterialShadingMode(3,#PB_Material_Phong)
MaterialShadingMode(4,#PB_Material_Phong)
MaterialShadingMode(5,#PB_Material_Phong)
MaterialShadingMode(6,#PB_Material_Phong)
MaterialShadingMode(7,#PB_Material_Phong)
MaterialShadingMode(8,#PB_Material_Phong)
MaterialShadingMode(9,#PB_Material_Phong)
MaterialShadingMode(10,#PB_Material_Phong)

CreateParticleEmitter(1, 2, 2, 2, 0)
  ParticleMaterial    (1, MaterialID(11))
  ParticleTimeToLive  (1, 0.5, 1)
  ParticleEmissionRate(1, 30)
  ParticleSize        (1, 8, 8)
  ParticleColorRange  (1, RGB(255,0,0), RGB(255,100,0))

CreateParticleEmitter(2, 2, 2, 2, 0)
  ParticleMaterial    (2, MaterialID(11))
  ParticleTimeToLive  (2, 0.5, 1)
  ParticleEmissionRate(2, 30)
  ParticleSize        (2, 8, 8)
  ParticleColorRange  (2, RGB(255,0,0), RGB(255,100,0))
  
CreateParticleEmitter(3, 4, 4, 4, 0)
  ParticleMaterial    (3, MaterialID(11))
  ParticleTimeToLive  (3, 1, 1.5)
  ParticleEmissionRate(3, 20)
  ParticleSize        (3, 30, 30)
  ParticleColorRange  (3, RGB(0,50,255), RGB(0,100,255))
  
CreateParticleEmitter(4, 4, 4, 4, 0)
  ParticleMaterial    (4, MaterialID(11))
  ParticleTimeToLive  (4, 1, 1.5)
  ParticleEmissionRate(4, 20)
  ParticleSize        (4, 30, 30)
  ParticleColorRange  (4, RGB(0,50,255), RGB(0,100,255))

MoveParticleEmitter(1,528.0,222.5,298.0)
MoveParticleEmitter(2,528.0,222.5,-32.0)
MoveParticleEmitter(3,800.0,194.5,240.9)
MoveParticleEmitter(4,800.0,194.5,-15.1)

CreateLight(1,RGB(255,100,0),528.0,222.5,298.0)
CreateLight(2,RGB(255,100,0),528.0,222.5,-32.0)
CreateLight(3,RGB(0,100,255),800.0,194.5,240.9)
CreateLight(4,RGB(0,100,255),800.0,194.5,-15.1)

LightSpecularColor(1,RGB(255,255,255))
LightSpecularColor(2,RGB(255,255,255))

AmbientColor(RGB(0,0,0))

WorldShadows(#PB_Shadow_Additive)

CreateCamera(0,0,0,100,100)
CameraLocate(0,0,0,100)

Repeat
  ExamineKeyboard()
  ExamineMouse()
  
  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
  
  If KeyboardPushed(#PB_Key_Escape)
    End
  EndIf
  
  MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
  MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
  
  RotateCamera(0,MouseX,MouseY,RollZ)
  MoveCamera(0,KeyX,0,KeyY)
  
  RenderWorld()
  
  StartDrawing(ScreenOutput())
  DrawingMode(1)
  FrontColor(RGB(255,255,255))
  DrawText(0,40,""+Str(KeyX))
  DrawText(0,60,""+Str(KeyY))
  DrawText(0,20,""+StrF(Engine3DFrameRate(#PB_Engine3D_Current),1)+" FPS")
  StopDrawing()
  FlipBuffers()
ForEver
Ich hoffe ihr könnt mir da helfen... bitte keine vorschläge was die vereinfachung des codes angeht... ich möchte nur mein Problem mit dem Schatten lösen...

Auf schnelle und hilfreiche antworten freue ich mich...

MfG
IceDragon

PS: Rechnerconfig:
Intel Celeron D 3,33 GHz
1 GB DDR RAM
nVidia GeForce 8800 GTS

Ich nutze PureBasic Version 4.10

Verfasst: 16.10.2008 15:51
von kswb73
Das ist ein Bug von PureBasic. Bei Vollbild funktioniert Schatten nicht. Versuchs mal mit einem Windowed Screen.

Verfasst: 16.10.2008 18:51
von IceDragon
Das heist ich sollte ein fenster erstellen welches die Auflösung meines Desktops hat (wegen Vollbild) und dann dort nen windowedscreen raufknallen ja?

OK werde ich versuchen

Danke für die antwort

---EDIT---

Habe versucht was du gesagt hast... hier nochmal ein neues Bild und wiederrum den Code...

Bild

Ich würde sagen das sieht genau so aus wir vorher mit openscreen... hmmm

Code: Alles auswählen

If InitEngine3D() = 0
  MessageRequester("Fehler","Die Datei Engine3D.dll konnte nicht geladen werden")
EndIf

If InitSprite() = 0
  MessageRequester("Fehler","DirectX konnte nicht geladen werden, überprüfen Sie ihre DirectX Installation")
EndIf

If InitKeyboard() = 0
  MessageRequester("Fehler","Ihre Tastatur konnte nicht initialisiert werden")
EndIf

If InitMouse() = 0
  MessageRequester("Fehler","Ihre Maus konnte nicht initialisiert werden")
EndIf

#CameraSpeed = 15

If OpenWindow(0,0,0,1280,1024,"MicroTexx-Tempelscene",#PB_Window_BorderLess) = 0
  MessageRequester("Fehler","Programmfenster konnte nicht geöffnet werden")
  End
EndIf

If OpenWindowedScreen(WindowID(0),0,0,1028,1024,1,0,0) = 0
  MessageRequester("Fehler","Screen konnte nicht geöffnet werden")
  End
EndIf

Add3DArchive("Data\", #PB_3DArchive_FileSystem)
Add3DArchive("Data\Texture\", #PB_3DArchive_FileSystem)
Add3DArchive("Data\Objects\", #PB_3DArchive_FileSystem)
Add3DArchive("Data\Texture\sky.mt", #PB_3DArchive_Zip)
Add3DArchive("Data\Texture\tempel.mt", #PB_3DArchive_Zip)
Add3DArchive("Data\Objects\tempel.mmt", #PB_3DArchive_Zip)

SkyBox("desert07.jpg")

LoadTexture(1,"0001.jpg")
LoadTexture(2,"0002.jpg")
LoadTexture(3,"0003.jpg")
LoadTexture(4,"0004.jpg")
LoadTexture(5,"0005.jpg")
LoadTexture(6,"0006.jpg")
LoadTexture(7,"0007.jpg")
LoadTexture(8,"0008.jpg")
LoadTexture(9,"0009.jpg")
LoadTexture(10,"0010.jpg")
LoadTexture(11, "Flare.png")

CreateMaterial(1,TextureID(1))
CreateMaterial(2,TextureID(2))
CreateMaterial(3,TextureID(3))
CreateMaterial(4,TextureID(4))
CreateMaterial(5,TextureID(5))
CreateMaterial(6,TextureID(6))
CreateMaterial(7,TextureID(7))
CreateMaterial(8,TextureID(8))
CreateMaterial(9,TextureID(9))
CreateMaterial(10,TextureID(10))
CreateMaterial(11,TextureID(11))

LoadMesh(1,"tempel0001.mesh")
LoadMesh(2,"tempel0002.mesh")
LoadMesh(3,"tempel0003.mesh")
LoadMesh(4,"tempel0004.mesh")
LoadMesh(5,"tempel0005.mesh")
LoadMesh(6,"tempel0006.mesh")
LoadMesh(7,"tempel0007.mesh")
LoadMesh(8,"tempel0008.mesh")
LoadMesh(9,"tempel0009.mesh")
LoadMesh(10,"tempel0010.mesh")

CreateEntity(1,MeshID(1),MaterialID(1))
CreateEntity(2,MeshID(2),MaterialID(2))
CreateEntity(3,MeshID(3),MaterialID(3))
CreateEntity(4,MeshID(4),MaterialID(4))
CreateEntity(5,MeshID(5),MaterialID(5))
CreateEntity(6,MeshID(6),MaterialID(6))
CreateEntity(7,MeshID(7),MaterialID(7))
CreateEntity(8,MeshID(8),MaterialID(8))
CreateEntity(9,MeshID(9),MaterialID(9))
CreateEntity(10,MeshID(10),MaterialID(10))

EntityRenderMode(1,#PB_Entity_CastShadow)
EntityRenderMode(2,#PB_Entity_CastShadow)
EntityRenderMode(3,#PB_Entity_CastShadow)
EntityRenderMode(4,#PB_Entity_CastShadow)
EntityRenderMode(5,#PB_Entity_CastShadow)
EntityRenderMode(6,#PB_Entity_CastShadow)
EntityRenderMode(7,#PB_Entity_CastShadow)
EntityRenderMode(8,#PB_Entity_CastShadow)
EntityRenderMode(9,#PB_Entity_CastShadow)
EntityRenderMode(10,#PB_Entity_CastShadow)

DisableMaterialLighting(11,1)

MaterialBlendingMode(11,#PB_Material_Add)

MaterialFilteringMode(1,#PB_Material_Trilinear)
MaterialFilteringMode(2,#PB_Material_Trilinear)
MaterialFilteringMode(3,#PB_Material_Trilinear)
MaterialFilteringMode(4,#PB_Material_Trilinear)
MaterialFilteringMode(5,#PB_Material_Trilinear)
MaterialFilteringMode(6,#PB_Material_Trilinear)
MaterialFilteringMode(7,#PB_Material_Trilinear)
MaterialFilteringMode(8,#PB_Material_Trilinear)
MaterialFilteringMode(9,#PB_Material_Trilinear)
MaterialFilteringMode(10,#PB_Material_Trilinear)

MaterialShadingMode(1,#PB_Material_Phong)
MaterialShadingMode(2,#PB_Material_Phong)
MaterialShadingMode(3,#PB_Material_Phong)
MaterialShadingMode(4,#PB_Material_Phong)
MaterialShadingMode(5,#PB_Material_Phong)
MaterialShadingMode(6,#PB_Material_Phong)
MaterialShadingMode(7,#PB_Material_Phong)
MaterialShadingMode(8,#PB_Material_Phong)
MaterialShadingMode(9,#PB_Material_Phong)
MaterialShadingMode(10,#PB_Material_Phong)

CreateParticleEmitter(1, 2, 2, 2, 0)
  ParticleMaterial    (1, MaterialID(11))
  ParticleTimeToLive  (1, 0.5, 1)
  ParticleEmissionRate(1, 30)
  ParticleSize        (1, 8, 8)
  ParticleColorRange  (1, RGB(255,0,0), RGB(255,100,0))

CreateParticleEmitter(2, 2, 2, 2, 0)
  ParticleMaterial    (2, MaterialID(11))
  ParticleTimeToLive  (2, 0.5, 1)
  ParticleEmissionRate(2, 30)
  ParticleSize        (2, 8, 8)
  ParticleColorRange  (2, RGB(255,0,0), RGB(255,100,0))
  
CreateParticleEmitter(3, 4, 4, 4, 0)
  ParticleMaterial    (3, MaterialID(11))
  ParticleTimeToLive  (3, 1, 1.5)
  ParticleEmissionRate(3, 20)
  ParticleSize        (3, 30, 30)
  ParticleColorRange  (3, RGB(0,50,255), RGB(0,100,255))
  
CreateParticleEmitter(4, 4, 4, 4, 0)
  ParticleMaterial    (4, MaterialID(11))
  ParticleTimeToLive  (4, 1, 1.5)
  ParticleEmissionRate(4, 20)
  ParticleSize        (4, 30, 30)
  ParticleColorRange  (4, RGB(0,50,255), RGB(0,100,255))

MoveParticleEmitter(1,528.0,222.5,298.0)
MoveParticleEmitter(2,528.0,222.5,-32.0)
MoveParticleEmitter(3,800.0,194.5,240.9)
MoveParticleEmitter(4,800.0,194.5,-15.1)

CreateLight(1,RGB(255,100,0),528.0,222.5,298.0)
CreateLight(2,RGB(255,100,0),528.0,222.5,-32.0)
CreateLight(3,RGB(0,100,255),800.0,194.5,240.9)
CreateLight(4,RGB(0,100,255),800.0,194.5,-15.1)

LightSpecularColor(1,RGB(255,255,255))
LightSpecularColor(2,RGB(255,255,255))

AmbientColor(RGB(0,0,0))

WorldShadows(#PB_Shadow_Additive)

CreateCamera(0,0,0,100,100)
CameraLocate(0,0,0,100)

Repeat
  EventID = WaitWindowEvent()
  
  If EventID = #PB_Event_CloseWindow
      Quit = 1
  EndIf

  ExamineKeyboard()
  ExamineMouse()
  
  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
  
  If KeyboardPushed(#PB_Key_Escape)
    End
  EndIf
  
  MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
  MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
  
  RotateCamera(0,MouseX,MouseY,RollZ)
  MoveCamera(0,KeyX,0,KeyY)
  
  RenderWorld()
  
  StartDrawing(ScreenOutput())
  DrawingMode(1)
  FrontColor(RGB(255,255,255))
  DrawText(0,40,""+Str(KeyX))
  DrawText(0,60,""+Str(KeyY))
  DrawText(0,20,""+StrF(Engine3DFrameRate(#PB_Engine3D_Current),1)+" FPS")
  StopDrawing()
  FlipBuffers()
ForEver
Vielen Dank schonmal für viele neue ideen...

MfG
IceDragon

Verfasst: 17.10.2008 16:15
von xperience2003
wenn es statischer schatten ist , dann render den einfach innem lightmapper und papp die lightmap als 2. texture drauf (multiple blending)

..dann klappts auch mit dem fullscreen ^^

edit

...erm ..musste man nicht bei

Code: Alles auswählen

InitEngine3D() 
shadow und physic einschalten
..war da nich mal was, oder is das jetz automatisch alles an

Verfasst: 17.10.2008 17:34
von Kaeru Gaman
... ich seh in dem code nirgens WorldShadows() mit #PB_Shadow_Modulative oder #PB_Shadow_Additive, standard ist nämlich #PB_Shadow_None, also wäre das Ergebnis ganz korrekt...

Verfasst: 17.10.2008 20:29
von IceDragon
Doch WorldShadows sollten aktiv sein... es sei denn es muss woanders eingefügt werden...

Code: Alles auswählen

...
CreateLight(3,RGB(0,100,255),800.0,194.5,240.9)
CreateLight(4,RGB(0,100,255),800.0,194.5,-15.1)

LightSpecularColor(1,RGB(255,255,255))
LightSpecularColor(2,RGB(255,255,255))

AmbientColor(RGB(0,0,0))

WorldShadows(#PB_Shadow_Additive)

CreateCamera(0,0,0,100,100)
CameraLocate(0,0,0,100)

Repeat
  EventID = WaitWindowEvent()
 
  If EventID = #PB_Event_CloseWindow
      Quit = 1
  EndIf
...
@experience2003: Du sagtest ich könnte ja eine lightmap rüberlegen... ok... aber wie geht das... ich habe keine ahnung wie ich ne 2te Texture sag ich mal über ne andere lege... *dumm guck*

mfg
IceDragon

Verfasst: 27.10.2008 11:41
von dllfreak2001
Spiel mal mit den befehlen rum, habe festegestellt, dass auch die
Reihenfolge wie sie im Code kommen auswirkung auf das ergebniss hat.

mach mal worldshadows() über Creatlight oder Createmesh...
Außerdem kann man glaub ich auch noch für jedes Entity castshadow oder so aktivieren....