Spiegel Fake von ??? |
Hier ein kleiner Fake mit dem man den Eindruck eines spiegelnden Objects erzeugen kann. Das Paket mit dem Quellcode, der ausführbaren Datei und einer Textur könnt Ihr Euch [url=http://home.arcor.de/bruzard/spiegel.zip]hier herunterladen.[/url] Hier der Code: [code:1:94b08963f8] Graphics3D 800,600,16,1 SetBuffer BackBuffer() ; Spielerkamera erzeugen piv=CreatePivot() cam=CreateCamera(piv) PositionEntity cam,0,0,-4 ; Raum erzeugen room=CreateCube() room_tex=LoadTexture("bricks.jpg") EntityTexture room,room_tex FlipMesh room ScaleMesh room,5,5,5 ; zwei nette Lichter light=CreateLight(2) PositionEntity light,-2.5,2.5,0 LightRange light,1 light2=CreateLight(2) PositionEntity light2,2.5,-2.5,0 LightRange light2,1 ; Spiegeltexture tex=CreateTexture(128,128,64+256) TextureBlend tex,3 ; Spiegelkugel erzeugen cyl=CreateCylinder(32) EntityTexture cyl,tex EntityShininess cyl,0.6 ; Kamera der Kugel cylcam=CreateCamera(cyl) CameraZoom cylcam,0.2 PositionEntity cyl,0,0,0 HideEntity cylcam ; ein bisschen Zeit messen temp_fps=0 fps=0 t=MilliSecs() ; Mainloop Repeat msx#=MouseXSpeed() msy#=MouseYSpeed() If KeyHit(1) Then End If msx Then TurnEntity cam,0,-(msx*0.1),0 If msy Then TurnEntity piv,msy*0.1,0,0 MoveMouse 400,300 Mirror(cyl,cylcam,cam,tex) TurnEntity cyl,1,1,1 UpdateWorld : RenderWorld temp_fps=temp_fps+1 If MilliSecs()-t>1000 fps=temp_fps t=MilliSecs() temp_fps=0 EndIf Text 0,0,fps+" frames per second",0,0 Flip Forever ; Spiegel faken Function Mirror(obj,mirrorcam,camera,texture) ShowEntity mirrorcam PointEntity mirrorcam,camera HideEntity camera RenderWorld CopyRect 0,0,256,256,0,0,0,TextureBuffer(texture) HideEntity mirrorcam ShowEntity camera EntityTexture obj,texture End Function [/code:1:94b08963f8] Das funktioniert mit jedem Objekt. Wollt Ihr den Effekt auf Objekte anwenden die Ihr mit einem externen Programm (Milkshape, 3DSMax, Lightwave etc.) erstellt habt, sieht es am besten aus wenn dieses Objekt mit einem spherischen Mapping versehen ist. Noch besser sieht es aus wenn die Spiegeltextur als zweiter Layer auf das Object gelegt wird und der erste Layer das Grundmaterial des Objects beinhaltet ... so können z.B. Kratzer oder Rost dargestellt werden. |
von ??? |
Hi! sieht sehr gut aus! http://mitglied.lycos.de/the_darkfuture/Reflektion.zip habe das ganze mal mit eine "komplexen" model + skybox gemacht. Alles nach Deiner Methode mfg olli |
von ??? |
Yap, sauber ... man kann das noch erweitern indem man 6 Ansichten rendert und somit ein cubisches Mapping erreicht... |
von ??? |
juhu, cube mapping |