Cubemapping

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Goldini

Betreff: Cubemapping

BeitragDo, Jan 25, 2007 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Ich brauch mal Hilfe... hier das problem:
user posted image
hier der Code: [AUSKLAPPEN]

Global watermesh=LoadMesh("100x100.b3d") RotateMesh watermesh,90,0,0 : RotateEntity watermesh,-90,0,0
PositionEntity watermesh,0,0,15
ScaleEntity watermesh,50,50,10
EntityAlpha watermesh,.7

Global surface=CountSurfaces(watermesh)
surface=GetSurface(watermesh,1)

Global VertexCount=CountVertices(surface)



Dim Vertex.Vertices(VertexCount)

For A=0 To VertexCount-1
Vertex(a) = New Vertices
Vertex(a)\x#=VertexX#(surface,a)
Vertex(a)\y#=VertexY#(surface,a)
Vertex(a)\z#=VertexZ#(surface,a)
Next

watertexture=LoadAnimTexture("wateranim.jpg",256,124,124,0,25)
EntityTexture watermesh,watertexture,0,1
ScaleTexture watertexture,.01,.01
EntityShininess watermesh,0.2

Global cube_cam=CreateCamera()
Global tex=CreateTexture(256,256,1+128+256)
EntityTexture watermesh,tex,0,1

while not keyhit(1)

d=d+1
If d=4 Then UpdateCubemap(tex,cube_cam,watermesh) : d=0
EntityTexture watermesh,watertexture,frame,0
EntityTexture watermesh,tex,0,1
frame=frame+1
If frame=22 Then frame=0

UpdateWater()

RenderWorld
UpdateWorld
Flip
Wend

Function UpdateCubemap(tex,camera,entity)
tex_sz=TextureWidth(tex)
ShowEntity camera
HideEntity entity
PositionEntity camera,EntityX#(entity),EntityY#(entity)-100,EntityZ#(entity)
CameraClsMode camera,False,True
CameraViewport camera,0,0,tex_sz,tex_sz

SetCubeFace tex,4
RotateEntity camera,-90,0,0
RenderWorld
CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex)

ShowEntity entity
HideEntity camera
End Function


Function UpdateWater()

For a=0 To VertexCount-1
Freq#=MilliSecs()/10
Vertex(a)\z#=Sin(freq+Vertex(a)\x#*300+Vertex(a)\y#*400)*0.6
VertexCoords surface,a,Vertex(a)\x#,Vertex(a)\y#,Vertex(a)\z#
Next


UpdateNormals watermesh

End Function

könnt ihr mir helfen???

Mfg
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! Very Happy

5k41

BeitragDo, Jan 25, 2007 14:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Guck dir mal bitte das Beispiel in der OH an! Irgendwas scheinst du falsch verstanden zu haben, Cubemapping funktioniert indem man auf jede Cubeface eine Kamera perspektive rendert, woraus dann eine Spiegelung berechnet werden kann.

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Goldini

BeitragDo, Jan 25, 2007 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mir die OH angesehen und mein Mesh hat nur eine steite und zwar
oben!!!
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! Very Happy

5k41

BeitragDo, Jan 25, 2007 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
darum gehts nicht, es geht darum, dass für eine realistische spiegelung alle 6 bilder benötigt werden, um daraus dann das leztendliche spiegelbild zu berechnen!

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Goldini

BeitragDo, Jan 25, 2007 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Neues Problem:

user posted image

Neuer UpdateCubemap Code: [AUSKLAPPEN]


Function UpdateCubemap(tex,camera,entity)
tex_sz=TextureWidth(tex)
ShowEntity camera
HideEntity entity
PositionEntity camera,EntityX#(entity),EntityY#(entity)-100,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
HideEntity camera
End Function
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! Very Happy

5k41

BeitragDo, Jan 25, 2007 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
und was ist daran das Problem? Sorry, aber ich erkenne auf dem Screen weder das Wasser, noch die Objekte die gespiegelt werden sollen...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Goldini

BeitragDo, Jan 25, 2007 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
So jetzt ist es UNÜBERSHEBAR! Rolling Eyes

user posted image
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! Very Happy

NightPhoenix

BeitragDo, Jan 25, 2007 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
das problem hatte ich auch schonmal ^^
bevor du mich fragst wie ich es gelöst hab:
habe ich nicht... hab nochmal neu angefangen, dann hats gefunzt Rolling Eyes
poste mal den ganzen code bitte... zum cubemapping gehört nicht nur eine function am ende des codes
MfG.

Goldini

BeitragDo, Jan 25, 2007 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Äh das mit dem ganzen Code halt ich für nicht so ne gute Idee (das sind 945 Zeilen)
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! Very Happy

NightPhoenix

BeitragDo, Jan 25, 2007 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Filter alles raus was mit Cubemapping zu tun haben könnte....

Kamera
CubeKamera
CubemapSettings
Function UpdateCubemap
Steuerung des Spiels

dann poste das hier rein Wink

Goldini

BeitragDo, Jan 25, 2007 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
OK. dann mal los hier ist der gefilterte Code: [AUSKLAPPEN]


Global camp=CreateSphere(2)PositionEntity camp,set_x,set_y,set_z
EntityAlpha camp,0
EntityType camp,PLAYER
EntityRadius camp,3
TurnEntity camp,0,set_yaw,0

Global cam=CreateCamera()PositionEntity cam,EntityX(camp),EntityY(camp)+7,EntityZ(camp)
CameraClsColor cam,50,50,50
CameraRange cam,1,100000
CameraFogMode cam,1
CameraFogRange cam,1,5000

Global watermesh=LoadMesh("100x100.b3d") RotateMesh watermesh,90,0,0 : RotateEntity watermesh,-90,0,0
PositionEntity watermesh,0,0,15
ScaleEntity watermesh,50,50,10
EntityAlpha watermesh,.7

Global surface=CountSurfaces(watermesh)
surface=GetSurface(watermesh,1)

Global VertexCount=CountVertices(surface)



Dim Vertex.Vertices(VertexCount)

For A=0 To VertexCount-1
Vertex(a) = New Vertices
Vertex(a)\x#=VertexX#(surface,a)
Vertex(a)\y#=VertexY#(surface,a)
Vertex(a)\z#=VertexZ#(surface,a)
Next

watertexture=LoadAnimTexture("wateranim.jpg",256,124,124,0,25)
EntityTexture watermesh,watertexture,0,1
ScaleTexture watertexture,.01,.01
EntityShininess watermesh,0.2

Global cube_cam=CreateCamera()
Global tex=CreateTexture(256,256,1+128+256)
EntityTexture watermesh,tex,0,1

While Not KeyHit(1)

EntityParent cam,camp

If KeyDown(200) Then MoveEntity camp,0,0,1.5
If KeyDown(208) Then MoveEntity camp,0,0,-1.5

RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),0,0
RotateEntity camp,0,EntityYaw(camp)-MouseXSpeed(),0
MoveMouse 512,384

d=d+1
If d=6 Then UpdateCubemap(tex,cube_cam,watermesh) : d=0
EntityTexture watermesh,watertexture,frame,0
EntityTexture watermesh,tex,0,0
frame=frame+1
If frame=22 Then frame=0

UpdateWater()
TurnEntity cam,0,EntityYaw(camp),0
;CameraViewport cam,0,0,640,512

updateworld
renderworld
flip
wend

Function UpdateCubemap(tex,camera,entity)
tex_sz=TextureWidth(tex)
ShowEntity camera
HideEntity entity
PositionEntity camera,EntityX#(entity),EntityY#(entity)-100,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
HideEntity camera
End Function

Function UpdateWater()
; Create a wave effect by moving all the vertices in the mesh up and down using Sin
; Try editing:
; Freq#=MilliSecs()/10
;                   ^ The Bigger the divide, the slower the water moves
; Vertex(a)\z#=Sin(freq+Vertex(a)\x#*300+Vertex(a)\y#*400)*1.125
;                                                         ^ The Bigger the Multiply The Higher
;                                                           the waves will be, lower = smaller

For a=0 To VertexCount-1
Freq#=MilliSecs()/10
Vertex(a)\z#=Sin(freq+Vertex(a)\x#*300+Vertex(a)\y#*400)*0.6
VertexCoords surface,a,Vertex(a)\x#,Vertex(a)\y#,Vertex(a)\z#
Next


UpdateNormals watermesh

End Function

clearworld
end


So das war's
Mit diesen Zeilen danke ich einer Person, die mich für so wichtig hält, dass sie sogar einen Club nach mir benannt hat!
Danke! Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group