Cube Map Help!
Blitz3D Forums/Blitz3D Programming/Cube Map Help!
| ||
Graphics3D 800,600,16,2 SetBuffer BackBuffer() ;variables for grid size Const Gridsize = 32 Global waterheight# = 5 ;array for gridsize Dim WaterY(Gridsize+1,Gridsize+1) For i=0 To Gridsize For j=0 To Gridsize WaterY(i,j) = Rnd(0,360) Next Next visual = CreateCamera() PositionEntity visual, 0,5,-15 cubecam = CreateCamera() HideEntity cubecam light = CreateLight() PositionEntity light,0,0,15 RotateEntity light,0,0,0 AmbientLight 200,200,200 ;Create my Sky sky = CreateSphere() skytex = LoadTexture("clouds.jpg") EntityTexture sky,skytex ScaleTexture skytex,.1,.1 ScaleEntity sky,15,15,15 FlipMesh sky EntityOrder sky,1 EntityFX sky,1 ;Create a floor bottom = CreatePlane() bottex = LoadTexture("oceanfloor.bmp") EntityTexture bottom,bottex ScaleTexture bottex,7,7 PositionEntity bottom,0,-7,0 ;Create my Water water = CreateTerrain(Gridsize) TerrainShading water,True TerrainDetail water,2000,True PositionEntity water,-15,-5,-5 ScaleEntity water,4,5,4 EntityAlpha water,.8 cube = CreateCube() matrix = LoadTexture("test.jpg") EntityTexture cube,matrix ScaleTexture matrix,3,3 PositionEntity cube, 35,5,35 ScaleEntity cube,5,5,5 cubemap = CreateTexture(256,256,1+128+256) EntityTexture water,cubemap SetCubeMode cubemap, 1 While Not KeyHit(1) PositionEntity sky,EntityX(visual),EntityY(visual),EntityZ(visual) If KeyDown(200) Then MoveEntity visual,0,0,0.3 If KeyDown(208) Then MoveEntity visual,0,0,-0.3 If KeyDown(203) Then TurnEntity visual,0,0.2,0 If KeyDown(205) Then TurnEntity visual,0,-0.2,0 TurnEntity cube,0.1,0.2,0.3 ;waves ;For z=0 To Gridsize-1 ; For x=0 To Gridsize-1 ; height# = Sin(WaterY(z,x)) ; ModifyTerrain water,x,z,Abs(height#/4),False ; WaterY(z,x) = WaterY(z,x)+1 ; Next ;Next UpdateCubeMap(cubemap,cubecam,water) RenderWorld UpdateWorld Flip Wend End Function UpdateCubeMap(cubemap,camera,entity) tex_sz=TextureWidth(cubemap) ShowEntity camera HideEntity entity PositionEntity camera,EntityX#(entity),EntityY#(entity),EntityZ#(entity) CameraClsMode camera,False,True CameraViewport camera,0,0,tex_sz,tex_sz ;Update Cubemap ; do left view SetCubeFace cubemap,0 RotateEntity camera,0,90,0 RenderWorld CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(cubemap) ; do forward view SetCubeFace cubemap,1 RotateEntity camera,0,0,0 RenderWorld CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(cubemap) ; do right view SetCubeFace cubemap,2 RotateEntity camera,0,-90,0 RenderWorld CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(cubemap) ; do backward view SetCubeFace cubemap,3 RotateEntity camera,0,180,0 RenderWorld CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(cubemap) ; do up view SetCubeFace cubemap,4 RotateEntity camera,-90,0,0 RenderWorld CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(cubemap) ; do down view SetCubeFace cubemap,5 RotateEntity camera,90,0,0 RenderWorld CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(cubemap) ; Show entity again ShowEntity entity ; Hide the cubemap camera HideEntity camera End Function Here is my code, my problem is that i can't get the cube map camera to align up so everything looks good. The reflection (off the water) is just all funny lookin... Can someone help me :-( |
| ||
The arrow keys are to move, and whenever u look at the cube map and move not only do the locations change but it's all distorted and ugly looking on the edge of the plane... :-( |
| ||
i posted a cube mapped water thingy on my website a while ago, you can take a look, mabe itl help. unfortunately it goes a bit mad for objects below the water tho. www.d-grafix.com/software.html |
| ||
lol is it alright to use for commercial games :-D ? |
| ||
sure, a mention in the creds would be nice tho ;) btw: in your code try: updateworld updatecubemaps renderworld flip this may fix it Also i tried using sin/cos to adjust my waves but i found the slihgt angles between vertices effect the mapping of the cubemap and looks all distorted and crap. |
| ||
I'll just use your source, and of course a credit mention! though i did switch around those commands like you stated and that still did not work :-( O'Well, your code works great Thank You! |