Problem mit Entity Schatten

Probleme beim Erstellen von 3D-Modellen und Texturen, keine Ahnung womit man Musik macht? Dies ist dein Forum.
IceDragon
Beiträge: 3
Registriert: 16.10.2008 00:10

Problem mit Entity Schatten

Beitrag 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
Benutzeravatar
kswb73
Beiträge: 319
Registriert: 04.02.2008 16:51
Kontaktdaten:

Beitrag von kswb73 »

Das ist ein Bug von PureBasic. Bei Vollbild funktioniert Schatten nicht. Versuchs mal mit einem Windowed Screen.
Windows XP: PB 4.31, PB 4.4, PB 4.51
Open Suse 11.2: PB 4.4
IceDragon
Beiträge: 3
Registriert: 16.10.2008 00:10

Beitrag 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
xperience2003
Beiträge: 972
Registriert: 04.10.2004 18:42
Computerausstattung: Amiga, LinuxMint, Windows7
Wohnort: gotha
Kontaktdaten:

Beitrag 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
amiga rulez...
Rebirth Software
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
IceDragon
Beiträge: 3
Registriert: 16.10.2008 00:10

Beitrag 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
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag 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....
I´a dllfreak2001
Antworten