Unebene Flächen+CubeMap = Ebene Reflektion
Übersicht

![]() |
Devils ChildBetreff: Unebene Flächen+CubeMap = Ebene Reflektion |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi blitzer!
Ich hab hier mal n'prob: ich hab ein water-terrain und ne cubemap, die reflektionen sehen aus wie von einem flchen spiegel, obwohl das wasser volkommen uneben ist Code: [AUSKLAPPEN] Graphics3D 800, 600, 32, 2
[/syntax]
SetBuffer BackBuffer() ;Camera Cam = CreateCamera() CameraRange Cam, .1, 1000000 CameraClsColor Cam, 255, 255, 0 ;SkyBox Mesh = CreateMesh() s = CreateSurface(Mesh, LoadBrush("Sky_FT.bmp", 49)): AddVertex s, -1, 1, -1, 0, 0: AddVertex s, 1, 1, -1, 1, 0: AddVertex s, 1, -1, -1, 1, 1: AddVertex s, -1, -1, -1, 0, 1: AddTriangle s, 0, 1, 2: AddTriangle s, 0, 2, 3 s = CreateSurface(Mesh, LoadBrush("Sky_BK.bmp", 49)): AddVertex s, 1, 1, 1, 0, 0: AddVertex s, -1, 1, 1, 1, 0: AddVertex s, -1, -1, 1, 1, 1: AddVertex s, 1, -1, 1, 0, 1: AddTriangle s, 0, 1, 2: AddTriangle s, 0, 2, 3 s = CreateSurface(Mesh, LoadBrush("Sky_LF.bmp", 49)): AddVertex s, 1, 1, -1, 0, 0: AddVertex s, 1, 1, 1, 1, 0: AddVertex s, 1, -1, 1, 1, 1: AddVertex s, 1, -1, -1, 0, 1: AddTriangle s, 0, 1, 2: AddTriangle s, 0, 2, 3 s = CreateSurface(Mesh, LoadBrush("Sky_RT.bmp", 49)): AddVertex s, -1, 1, 1, 0, 0: AddVertex s, -1, 1, -1, 1, 0: AddVertex s, -1, -1, -1, 1, 1: AddVertex s, -1, -1, 1, 0, 1: AddTriangle s, 0, 1, 2: AddTriangle s, 0, 2, 3 s = CreateSurface(Mesh, LoadBrush("Sky_UP.bmp", 49)): AddVertex s, -1, 1, 1, 0, 1: AddVertex s, 1, 1, 1, 0, 0: AddVertex s, 1, 1, -1, 1, 0: AddVertex s, -1, 1, -1, 1, 1: AddTriangle s, 0, 1, 2: AddTriangle s, 0, 2, 3 s = CreateSurface(Mesh, LoadBrush("Sky_DN.bmp", 49)): AddVertex s, -1, -1, -1, 1, 0: AddVertex s, 1, -1, -1, 1, 1: AddVertex s, 1, -1, 1, 0, 1: AddVertex s, -1, -1, 1, 0, 0: AddTriangle s, 0, 1, 2: AddTriangle s, 0, 2, 3 ScaleMesh Mesh, 1000, 1000, 1000 FlipMesh Mesh EntityFX Mesh, 1 ;Water Dim height#(1024, 1024), hcnt#(1024, 1024) WaterGridSize = 64 Water = CreateTerrain(WaterGridSize) TerrainDetail Water, 10000 For x = 1 To WaterGridSize For z = 1 To WaterGridSize height#(x, z) = Rand(-100, 100) height#(x, z) = height#(x, z) / 100 Next Next ;Water Reflections RefCam2 = CreateCamera() CameraRange RefCam2, 1, 1000000 RefTex2 = CreateTexture(256, 256, 385) EntityTexture Water, RefTex2 ;Configuration Cfg_Speed# = .5 Cfg_MouseSmooth# = 15 fps = 1000 While Not KeyHit(1) If KeyDown(28) Then SaveBuffer(BackBuffer(), Str$(Rand(1, 10000000))) Cls ;Camera bewegung For i = 1 To Int(100 / fps) If KeyDown(17) Or KeyDown(200) Then MoveEntity Cam, 0, 0, Cfg_Speed: If KeyDown(42) Then MoveEntity Cam, 0, 0, Cfg_Speed If KeyDown(31) Or KeyDown(208) Then MoveEntity Cam, 0, 0, -Cfg_Speed: If KeyDown(42) Then MoveEntity Cam, 0, 0, -Cfg_Speed If KeyDown(30) Or KeyDown(203) Then MoveEntity Cam, -Cfg_Speed, 0, 0: If KeyDown(42) Then MoveEntity Cam, -Cfg_Speed, 0, 0 If KeyDown(32) Or KeyDown(205) Then MoveEntity Cam, Cfg_Speed, 0, 0: If KeyDown(42) Then MoveEntity Cam, Cfg_Speed, 0, 0 ;Mausbewegung xs# = (MouseXSpeed() - xs#) / 7 + xs# ys# = (MouseYSpeed() - ys#) / 7 + ys# TurnEntity Cam, ys#, 0, 0, 0 TurnEntity Cam, 0, -xs#, 0, 1 If EntityPitch(Cam) + y_speed# < -85 pitch = -85 flipped = True ElseIf EntityPitch(Cam) + y_speed# > 85 pitch = 85 fliped = True Else pitch = EntityPitch(Cam) + myspeed flipped = False EndIf If flipped Then RotateEntity Cam, pitch, EntityYaw(Cam) - MouseXSpeed(), 0 MoveMouse GraphicsWidth() / 2, GraphicsHeight() / 2 RotateEntity Cam, EntityPitch(Cam), EntityYaw(Cam), 0 ;Wireframe If KeyHit(57) Then wf = Not(wf) WireFrame wf EndIf Next ;FPS time# = MilliSecs() If time# - oldtime# <> 0 Then fps = Int(1 / (time# - oldtime#) * 1000) If fps = 0 Then fps = 1 oldtime# = MilliSecs() Gosub UpdateWater UpdateReflections(RefTex2, RefCam2, Water) ;Render-System UpdateWorld RenderWorld Flip Wend End .UpdateWater size = TerrainSize(Water) For x = 1 To size For z = 1 To size hcnt#(x, z) = hcnt#(x, z) + 1 height#(x, z) = Sin((x * z) + hcnt#(x, z)) ModifyTerrain Water, x, z, height#(x, z) Next Next Return Function UpdateReflections(tex, Camera, Entity) tex_sz = TextureWidth(tex) CameraProjMode Camera, 1 HideEntity Entity PositionEntity Camera, EntityX#(Entity), EntityY#(Entity), EntityZ#(Entity) CameraClsMode Camera, False, True CameraViewport Camera, 0, 0, tex_sz, tex_sz SetCubeFace tex, 0: RotateEntity Camera, 0, 90, 0: RenderWorld: CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(tex) SetCubeFace tex, 1: RotateEntity Camera, 0, 0, 0: RenderWorld: CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(tex) SetCubeFace tex, 2: RotateEntity Camera, 0, -90, 0: RenderWorld: CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(tex) SetCubeFace tex, 3: RotateEntity Camera, 0, 180, 0: RenderWorld: CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(tex) SetCubeFace tex, 4: RotateEntity Camera, -90, 0, 0: RenderWorld: CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(tex) SetCubeFace tex, 5: RotateEntity Camera, 90, 0, 0: RenderWorld: CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(tex) ShowEntity Entity CameraProjMode Camera, 0 End Function was tun? |
||
*X-Ware Member*
Mission to Hell[Ego-Shooter] Hier Vollversion runterladen: http://patrick-sch.de/spiele/m...ersion.zip ich antworte auf jede PN |
![]() |
Devils ChildBetreff: Re: Unebene Flächen+CubeMap = Ebene Reflektion |
![]() Antworten mit Zitat ![]() |
---|---|---|
entschuldigt für den doppelpost, aber ich hab mal ne waterengine gesehen, wo
die reflectionen funktionieren, woran liegt das? |
||
*X-Ware Member*
Mission to Hell[Ego-Shooter] Hier Vollversion runterladen: http://patrick-sch.de/spiele/m...ersion.zip ich antworte auf jede PN |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
woah, bist wohl der erste, der so etwas mit einem blitzterrain macht!
naja, du musst vermutlich ql:terrainshading aktivieren, damit blitz dem terrains auch normals zuweist. die werden für cubemapping benötigt. habe jetzt allerdings deinen code nicht genau gelesen... vielleicht auch mal mit ql:setcubemode rumprobieren. |
||
MrKeks.net |
![]() |
Devils Child |
![]() Antworten mit Zitat ![]() |
---|---|---|
wow, mit terrainshaddin funtzt es wunderbar! DANKE ![]() |
||
*X-Ware Member*
Mission to Hell[Ego-Shooter] Hier Vollversion runterladen: http://patrick-sch.de/spiele/m...ersion.zip ich antworte auf jede PN |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group