Wie mache ich eine Skybox?
Übersicht

sven123Betreff: Wie mache ich eine Skybox? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nun ist jetzt zwar ne absolute Nooby Frage aber es muss sein!Das ihr seht das ich hier nicht nur um Ideen schnorre,ich habe mir schon einige gedanken zu diesem Thema gemacht,doch sieht das ergebnis nicht so wirklich gut aus.Ich habe eine große Flache Kugel erzeugt zum Test mit den Haustexturen belegt un sie über das Terrain gestellt.Das Problem!Am Horizont sieht man keinen Himmel das ist unrealistisch,wie schaffe ich es das auch noch mein Horizont ne Himmel Textur hat.Hier mal der bisherige Code:Auserdem funktioniert noch immer nicht die Kollision zwischen Terrain und Flieger aber ich weis nicht warum?Code: [AUSKLAPPEN] SetBuffer BackBuffer() ;Laden der Texturen und Meshs terrain=LoadTerrain("f:\newheightmap.bmp") text1=LoadTexture("C:\Programme\Blitz 3D\Tools\Textures\Urban\Urb009.bmp") haus=LoadTexture("f:\glass30.bmp") Mesh=LoadMesh ("f:\3dModeller\Hand.3ds") Gebaude=LoadMesh ("f:\hhouse.x") flieger=LoadMesh ("f:\Flieger.3ds") ;Globals für die Kollision Global Feld=1 Global player=2 ;Objekt richtig drehen TurnEntity flieger,-90,0,90 ;Erstellen eines Pivot für die Kollision pivot=CreatePivot() sky=CreateSphere() EntityRadius pivot,0.2 PositionEntity pivot,3000,1000,6000 ScaleEntity sky,6000,500,6000 PositionEntity sky,8000,8000,6000 ;Das Terrain erstellen und Texturieren EntityTexture terrain,text1,0,0 ScaleEntity terrain,100,200,100 ScaleTexture text1,100,200 ;Spielfigur posizionieren PositionMesh flieger,-8000,-5000,2000 TerrainDetail terrain,8000,True ;Position der Hand PositionMesh Mesh,4000,800,8000 ;Position des Hauses PositionMesh Gebaude,6000,30,9000 ;Die Textur des Hauses bearbeiten und verwenden RotateTexture haus,180 EntityTexture Gebaude,haus EntityTexture sky,haus ;;;;;;;;;;;;;;;;;;;;;;;;;;------Die Eintsellung der Kamera auf Thirdperson sicht ;; ;; ;Kameravoreinstellungen cam=CreateCamera() PositionEntity cam,5100,2050,8075 CameraRange cam,1,80000 light=CreateLight() TurnEntity light,45,45,0 ;Einstellungen für die Sicht TurnEntity cam,10,106,0 EntityParent pivot,cam EntityParent flieger,cam PositionEntity cam,3007,1025,5845 TurnEntity cam,0,-90,0 ;Kollisionsabfrage EntityType terrain,Feld EntityType pivot,player Collisions player,Feld,2,1 ;Steuerung des Spieler und der Cam ;;;;;;;;;;;;;;;;;;;;-------Hauptschleife While Not KeyHit(1) ;Mausabfrage RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0 ;muss immer mesh parent sein!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! If KeyDown(200)=1 Then MoveEntity cam,0,0,20 If KeyDown(203)=1 Then MoveEntity cam,-20,0,0 If KeyDown(205)=1 Then MoveEntity cam,20,0,0 If KeyDown(208)=1 Then MoveEntity cam,0,0,-20 UpdateWorld RenderWorld Flip Wend ClearWorld End |
||
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will Fertiges Projekt:Invasion der Heuschrecken |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Skybox:
Einen grossen Würfel machen der das Terrain vollständig umgibt. Dessen Facenormalen nach innen stülpen und ihn mit dem Himmel texturieren. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Lord_Vader |
![]() Antworten mit Zitat ![]() |
---|---|---|
Den himmel kannste mit Terragen super machenn...schnarchh.. Die frage war aber überflüssig da es letztens erst einen thread gab! | ||
sven123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sorry ich hätte doch die suche zu erst bemühen sollen? | ||
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will Fertiges Projekt:Invasion der Heuschrecken |
sven123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Dreamora wahrscheinlich soll ich die Facenormalen mit scalentity eínziehen oder wie habe ich das zu verstehen?
Thx at all |
||
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will Fertiges Projekt:Invasion der Heuschrecken |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
flipmesh | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
sven123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Cool jetzt gehts allerdings merkt man dem Himmel immer noch stark an das er eigentlich ein Würfel ist.Wie bekomme ich die Kanten weg?Wie kann ich verschieden Texturen auf die Würfel Fächen auftragen? | ||
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will Fertiges Projekt:Invasion der Heuschrecken |
INpac |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hiho
Seit dem Cubemapping da ist, kannste Skyboxes (die 12 polys benutzen, bei 6 Texturen, werden's sogar 6 Surfaces!) wegfallen lassen, und über Cubemapping ein Sprite die Box faken lassen, das geht so: du erstellst ein sprite, hängst es an die camera, skalierst es so, dass es den ganzen bildschirm ausfüllt, setzt die z-order auf 1. So. Dann lädst du eine Texture, die alle 6 Seiten deines SkyWürfels beinhaltet, (die Reihenfolge richtet sich nach der Reihenfolge des Commands von SetCubeFace > onlinehelp!) jeder Frame muss gleich groß sein. Die Texture lädst du dann mit dem Flag 128 (aber diesmal ohne 256, weil VRAM in diesem Fall langsamer wäre!), Blitz3D rechnet sich selbst aus, wie groß jeder Frame ist. So. Dann solltest du noch über SetCubeMode die geladene CubeTexure auf Modus 3 setzen, und dann die Texture auf das Sprite kleben! Fertig ![]() |
||
sven123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Erstmal danke Inpac.
Zu1 die z-Order verändere ich mit entityorder oder,der Befehl setcubeface funktioniert bei mir nicht ich habe aber die version 1.87 |
||
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will Fertiges Projekt:Invasion der Heuschrecken |
![]() |
Phalastos |
![]() Antworten mit Zitat ![]() |
---|---|---|
@INpac
Zitat: Die Texture lädst du dann mit dem Flag 128 (aber diesmal ohne 256, weil VRAM in diesem Fall langsamer wäre!)
Wann / Warum sollte man VRAM nicht benutzen? Gruß Alex |
||
Forbiddenmagic - Warfare of Forgotten Power |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Wenn du die Skybox mit dem Spieler mitbewegst, muss sie nichtmal besonders groß sein. Wichtig ist, das du vor dem Zeichnen den Z- oder W-Buffer ausschaltest, sodass die Box immer hinter alle anderen Objekte gezeichnet wird. grüße |
||
http://bl4ckd0g.funpic.de |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Guckma hier... Code: [AUSKLAPPEN] Graphics3D 640, 480, 32 SetBuffer BackBuffer() Global g_Camera = CreateCamera() Global g_SkyBox = CreateSkyBox() Global cube = CreateCube() Global light = CreateLight() EntityColor( cube, 255, 0, 0 ) PositionEntity( cube, 0, 0, 5 ) While Not KeyHit( 1 ) UserInput() RenderWorld Flip Cls Wend End Function UserInput() PositionEntity( g_Camera, EntityX( g_Camera ), EntityY( g_Camera ), EntityZ( g_Camera ) ) RotateEntity( g_Camera, EntityPitch( g_Camera ) + MouseYSpeed(), EntityYaw( g_Camera ) - MouseXSpeed(), EntityRoll( g_Camera ) ) RotateEntity( g_SkyBox, 0, 0, 0 ) If ( EntityPitch( g_Camera ) < -70 ) RotateEntity( g_Camera, -70, EntityYaw( g_Camera ), EntityRoll( g_Camera ) ) ElseIf ( EntityPitch( g_Camera ) > 70 ) RotateEntity( g_Camera, 70, EntityYaw( g_Camera ), EntityRoll( g_Camera ) ) EndIf If ( MouseX() < 2 ) Then MoveMouse( GraphicsWidth() - 2, MouseY() ) ElseIf ( MouseX() > GraphicsWidth() - 2 ) MoveMouse( 1, MouseY() ) End If If ( MouseY() < 2 ) Then MoveMouse( MouseX(), GraphicsHeight() - 2 ) ElseIf ( MouseY() > GraphicsHeight() - 2 ) MoveMouse( MouseX(), 1 ) End If If ( KeyDown( 200 ) ) MoveEntity( g_Camera, 0, 0, 0.5 ) Else If ( KeyDown( 208 ) ) MoveEntity( g_Camera, 0, 0, -0.5 ) End If If ( KeyDown( 203 ) ) MoveEntity( g_Camera, -0.5, 0, 0 ) Else If ( KeyDown( 205 ) ) MoveEntity( g_Camera, 0.5, 0, 0 ) End If PositionEntity( g_SkyBox, EntityX( g_Camera ), EntityY( g_Camera ), EntityZ( g_Camera ) ) End Function Function CreateSkyBox() Mesh = CreateMesh() Brush = LoadBrush( "Snow/negz.jpg", 49 ) Surface = CreateSurface( Mesh, Brush ) AddVertex( Surface, -1, +1, -1, 0, 0 ) AddVertex( Surface, +1, +1, -1, 1, 0 ) AddVertex( Surface, +1, -1, -1, 1, 1 ) AddVertex( Surface, -1, -1, -1, 0, 1 ) AddTriangle( Surface, 0, 1, 2 ) AddTriangle( Surface, 0, 2, 3 ) FreeBrush( Brush ) Brush = LoadBrush( "Snow/negx.jpg", 49 ) Surface = CreateSurface( Mesh, Brush ) AddVertex( Surface, +1, +1, -1, 0, 0 ) AddVertex( Surface, +1, +1, +1, 1, 0 ) AddVertex( Surface, +1, -1, +1, 1, 1 ) AddVertex( Surface, +1, -1, -1, 0, 1 ) AddTriangle( Surface, 0, 1, 2 ) AddTriangle( Surface, 0, 2, 3 ) FreeBrush( Brush ) Brush = LoadBrush( "Snow/posz.jpg", 49 ) Surface = CreateSurface( Mesh, Brush ) AddVertex( Surface, +1, +1, +1, 0, 0 ) AddVertex( Surface, -1, +1, +1, 1, 0 ) AddVertex( Surface, -1, -1, +1, 1, 1 ) AddVertex( Surface, +1, -1, +1, 0, 1 ) AddTriangle( Surface, 0, 1, 2 ) AddTriangle( Surface, 0, 2, 3 ) FreeBrush( Brush ) Brush = LoadBrush( "Snow/posx.jpg", 49 ) Surface = CreateSurface( Mesh, Brush ) AddVertex( Surface, -1, +1, +1, 0, 0 ) AddVertex( Surface, -1, +1, -1, 1, 0 ) AddVertex( Surface, -1, -1, -1, 1, 1 ) AddVertex( Surface, -1, -1, +1, 0, 1 ) AddTriangle( Surface, 0, 1, 2 ) AddTriangle( Surface, 0, 2, 3 ) FreeBrush( Brush ) Brush = LoadBrush( "Snow/posy.jpg", 49 ) Surface = CreateSurface( Mesh, Brush ) AddVertex( Surface, -1, +1, +1, 0, 1 ) AddVertex( Surface, +1, +1, +1, 0, 0 ) AddVertex( Surface, +1, +1, -1, 1, 0 ) AddVertex( Surface, -1, +1, -1, 1, 1 ) AddTriangle( Surface, 0, 1, 2 ) AddTriangle( Surface, 0, 2, 3 ) FreeBrush( Brush ) Brush = LoadBrush( "Snow/negy.jpg", 49 ) Surface = CreateSurface( Mesh, Brush ) AddVertex( Surface, -1, -1, -1, 1, 0 ) AddVertex( Surface, +1, -1, -1, 1, 1 ) AddVertex( Surface, +1, -1, +1, 0, 1 ) AddVertex( Surface, -1, -1, +1, 0, 0 ) AddTriangle( Surface, 0, 1, 2 ) AddTriangle( Surface, 0, 2, 3 ) FreeBrush( Brush ) FlipMesh( Mesh ) EntityOrder( Mesh, 10 ) ScaleEntity( Mesh, 5, 5, 5 ) EntityFX( Mesh, 1 ) Return Mesh End Function Grafiken kannst du hier runterladen. grüße |
||
http://bl4ckd0g.funpic.de |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
was kleines nebenbei..... :
Warum nimmt man, da nich ein "SkySphere"... Das wäre meiner Meinung einfacher.... |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Jo, is aber nich besonders schön... wie ich finde. Und ob es einfacher ist sei dahingestellt... grüße |
||
http://bl4ckd0g.funpic.de |
INpac |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Phalastos hat Folgendes geschrieben: @INpac
Zitat: Die Texture lädst du dann mit dem Flag 128 (aber diesmal ohne 256, weil VRAM in diesem Fall langsamer wäre!)
Wann / Warum sollte man VRAM nicht benutzen? Gruß Alex VRAM ist nur dann sinnvoll, wenn die Texture oft verarbeitet wird, (ich glaube) durch das Speichern im Videoram ist ein schnellerer Zugriff möglich oder die Bearbeitung, ![]() Jedenfalls kannste VRAM auch dann zB benutzen, wenn du eine andere "normale" texture in echtzeit neu berechnset, muss also nicht cubemapping sein |
||
sven123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe mir jetzt ne skybox gebastelt!Diese ist einfach ne riesige Kugel mit Himmelstextur aber irgendwie sieht das ein bischen verwaschen und komisch aus.Habt ihr vieleicht ein paar Tips wie ich das verbessern kann.
![]() |
||
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will Fertiges Projekt:Invasion der Heuschrecken |
![]() |
Phalastos |
![]() Antworten mit Zitat ![]() |
---|---|---|
@INpac
Oha, danke Dir. P.S. Nen Screen von der Cubemapping Skybox würde mich brennend interessieren. ![]() Gruß Alex |
||
Forbiddenmagic - Warfare of Forgotten Power |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
@Sven: Warum eine rießige Kugel? Ne kleine tuts doch auch... grüße |
||
http://bl4ckd0g.funpic.de |
INpac |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Phalastos hat Folgendes geschrieben: @INpac
Oha, danke Dir. P.S. Nen Screen von der Cubemapping Skybox würde mich brennend interessieren. ![]() Gruß Alex AE benutzt Cubemapping-Sky"boxes", ebenso Timemill ... eine der älteren Versionen hat es jedenfalls verwendet ![]() Du siehst, wenn du eine passende Texture hast, keinen Unterschied zur SkyBox! @Sven, warum denn kein Cubemapping-Sky? |
||
sven123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm ich habs irgendwie nicht so ganz auf die Reihe gekriegt,zweitens experimentiere ich noch nen bischen rum.
@Inpac hast du jetzt zeit dir mal meinen Code mit der Kollision,den ich dir zu geschickt habe,durch zu lesen. |
||
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will Fertiges Projekt:Invasion der Heuschrecken |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group