Skybox oder SkySphere ?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Slope

Betreff: Skybox oder SkySphere ?

BeitragMo, Mai 03, 2004 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Bin neu hier und benutze B3D seit ein paar Wochen. Bin dabei mir meine eigene 3D Welt zu erschaffen, doch leider weiß ich nicht, was besser ist. Skybox oder Skysphere.
Sieht man bei Skybox nicht die Eckkanten ??

wunderkind

BeitragDi, Mai 04, 2004 0:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin der Meinung, das beides geht. Ein gutes Beispiel für eine Skybox war erst kürzlich in einer Demo auf Blitzbasic.com zu sehen. Der Link: http://perso.wanadoo.fr/pigmin/SLOVG/slovg2.zip
 

Dreamora

BeitragDi, Mai 04, 2004 0:08
Antworten mit Zitat
Benutzer-Profile anzeigen
mit ner guten Textur siehst du an der Box die kanten nicht. dafür wirst du sie bei der Sphere meistens sehen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Slope

BeitragDi, Mai 04, 2004 0:45
Antworten mit Zitat
Benutzer-Profile anzeigen
wow, geiles Demo. Danke! Smile

Werde dann mal mit Skybox probieren.
 

Affje

BeitragDi, Mai 04, 2004 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
ich selbst habe momentan in meinem game eine skysphere, das sieht irgendwie komisch und unnatürlich aus. ich werde mir auch mal ne skybox basteln.
www.drachengarde.tk
Guckst da Hier
 

INpac

BeitragDi, Mai 04, 2004 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
eine sphere bentigt auch viel mehr polygone - ein cube nur 12, bzw 10 wenn es keinen boden geben sollte
 

MRaven

BeitragDi, Mai 04, 2004 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Es geht definitiv beides. Die Skysphere hat meiner Meinung nach den Vorteil, dass sie nicht so "platt" wirkt, wie eine Skybox. Gerade Wolken können sich eigentlich sehr schön auf eine Kugel projezieren lassen. Allerdings solltest du auf einer Skysphere keine Landschaften haben, das sieht dann doch eher unrealistisch aus, während du auf einer Box auch Berge u.ä. setzen kannst. (Dass das selbst bei komerziellen Spielen nicht unbedingt super aussehen muss, kann man bei den Aussenleveln von Jedi Academy sehen)

Also, das sollte die erste Frage sein. Willst du nur Himmel / Wolken /Sonne oder auch Landschaft, dann solltest du dich eh mit der Box anfreunden (die Polygone, die eine Sphere mehr hat, kann man verkraften, finde ich). Ansonsten einfach mal ausprobieren, man kann da wirklich schöne Sachen machen.

Das wichtigste ist halt die Textur. Die muss stimmen. Gute Texturen für Skyboxen kannst du prima mit Terragen (kostenlos) herstellen, Tutorials dafür gibt es im Netz.
 

Affje

BeitragDi, Mai 04, 2004 16:46
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich habe ein terrain, wolkenbilder hätt ich auch schon, "nur" noch diue skybox :-/
www.drachengarde.tk
Guckst da Hier
 

MRaven

BeitragDi, Mai 04, 2004 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie gesat... Terragen ist da sehr gut zu gebrauchen, falls du ein Codebeispiel brauchst. Bei der Castle Demo im Beispiel Ordner von Blitz3d ist eine dabei.

eizdealer

BeitragDi, Mai 04, 2004 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Also im Prinzip geht das relativ einfach:
Code: [AUSKLAPPEN]
Cube = CreateCube()
ScaleEntity Cube, x, y, z ;je nach deiner Weltgröße x/y/z anpassen
FlipMesh Cube
;und dann die Texturen ruff

Schwieriger wird es natürlich, wenn du für jede Seite eine individuelle Textur willst. Dann müsstest du das ganze von Hand coden

Zum Erstellen der Texturen empfehle ich - wie bereits erwähnt - Terragen. Damit lassen sich relativ einfach gute Texturen hinkriegen. Terragen findest du unter http://www.planetside.co.uk/terragen/
 

Affje

BeitragDi, Mai 04, 2004 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
hätte denn jemand eine textur, die ich benutzen könnte, für alle 4 seiten gleichzeitig?
www.drachengarde.tk
Guckst da Hier
 

MRaven

BeitragDi, Mai 04, 2004 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Lad dir einfach die Demo von Worldspin runter. Da ist eine dabei, wenn ich nicht irre...

auf www.moon-software.de

EDIT Jetzt hab ich gesehen, du willst eine große... ne, da sind auch nur für die verschiedenen Seiten welche drin... ist auch sinnvoller, sonst verzerrt die Textur ja wie Sau.
 

.erazer

BeitragSo, Jul 27, 2008 3:30
Antworten mit Zitat
Benutzer-Profile anzeigen
wie schaut denn so eine textur aus, die alle seiten gleich bedient?

ich hab hier auch eine mit eben 5 einzelnen texturen.

wie bekommt man das trotzdem "in" so eine box?

FireballFlame

BeitragSo, Jul 27, 2008 4:43
Antworten mit Zitat
Benutzer-Profile anzeigen
In der Castle-Demo (<Blitz3D-Ordner>\samples\mak\castle\castle.bb) gibts eine Funktion, die das macht.

Was ich aber echt empfehlen kann, wenn man es noch realistischer möchte, ist das hier.
Das benutze ich mit einigen kleinen Änderungen in meinem aktuellen Projekt und es sieht echt gut aus Smile
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Shodan

BeitragDi, Jul 29, 2008 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Begriff Skybox ist bei diesem Thema nicht wörtlich zu nehmen!
Der Begriff bezieht sich auf eine Cubemap, bei der die 6 Einzelbilder der Textur wie bei einem Würfeln angeordnet werden, dies geschieht bei einer Cubemap automatisch. Das heisst aber nicht, dass die Cubemap auch auf einen Würfel projeziert wird. Um eine realistische Darstellung der Cubemap zu erreichen, sollte man sie auf eine Kugel projezieren. Auf einem Würfel würde die Textur in den Ecken verzerrt dargestellt. Man sieht das am besten, wenn man den Würfel drehen lässt.
Den egal, was mit dem jeweiligen Objekt auch angestellt wird, die Cubemap behält ihre Ausrichtung immer bei, egal mit welchen Darstellungsmodus.
Code: [AUSKLAPPEN]
SetCubeMode
www.selfmadegames.de
  • Zuletzt bearbeitet von Shodan am Mi, Jul 30, 2008 20:39, insgesamt einmal bearbeitet

DerHase

BeitragDi, Jul 29, 2008 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich rate zu Skyshperes. Und Material dazu findet sich hier >>>CgTextures<<<, dann auf Skies und dort auf Full Skies, dann auf die Sphere pappen. Man kann auch mehrere dieser Texturen ineinanderblenden verfärben etc. und dann hat man seine schöne eigene Skysphere!
Play Satyr!
 

Krischan

BeitragDi, Sep 09, 2008 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich persönlich experimentiere seit längerem mit eigenen Skydomes und bin hin und weg davon. Mein Skydome ist ein z.B. 32x32 Quad mit einer schönen Beule in der Mitte (32x32 deshalb weil ich gerade mit Normals und Echtzeitsonnenlicht experimentiere, das ist ein gutes Preis/Leistungsverhältnis für Lichteffekte mit Sonnenauf- und Untergang). Er den Vorteil, dass er Single Surface ist und ich quadratische Texturen wie Wolkenfelder einfach draufklatschen und per Textureposition bewegen kann. Wenn man den Skydome dann an den Spieler klebt und entsprechend mitbewegt ist die Illusion perfekt. In meinen Screenshots ist die Umgebung 4096x4096 gross und der Skydome aus testtechnischen Gründen noch 8192x8192 (256x32) und noch nicht angeklebt.

Mein Skydome faded zum Rand hin aus und geht sozusagen "nahtlos" in den Boden über, sieht ganz nett aus (kann man im Wireframe-Screenshot am Horizont erkennen). Da ich aber kaum dazu komme, das mal gescheit weiterzuprogrammieren hier ein Codeschnipsel und drei Screenshots dazu:

user posted image
Unfertige Abenddämmerung, es fehlt das gewisse Finetuning der Farben und Grössen

user posted image
Dasselbe Bild als Wireframe-Ansicht

user posted image
Noch ein schnell hingeklatschter Tageslichtversuch

Aufruf über:
Code: [AUSKLAPPEN]
skysize=32
sky=CreatePatch(skysize,32.0/skysize,0,0,0,0,0,0,1.0,2+32)
ScaleEntity sky,256,8,256
ApplyHeightmapToMesh(sky,"dome3.bmp",skysize+1,skysize+1,4.0,255,255,255)
FlipMesh sky
UpdateNormals sky


Die Dome-Heightmap im BMP-Format (Grösse 129x129, also max. 128 für den Wert skysize):

user posted image

Funktionen:
Code: [AUSKLAPPEN]
Function CreatePatch(size%,scale#,px#,py#,pz#,r%,g%,b%,a#,fx%)
   
   Local x%,z%,h%,v#,u#,v0%,v1%,v2%,v3%
   
   ; Mesh und Surface erstellen
   Local mesh%=CreateMesh()
   Local surf%=CreateSurface(mesh)
   
   ; Vertices setzen
   For x=0 To size
      
      For z=0 To size
         
         ; Höhe von Heightmap
         h=0
         
         ; UV-Koordinaten: Textur passt genau auf Tile
         u=x*1.0/size
         v=z*1.0/size
         
         ; Vertexposition setzen
         Vertexes(x,z)=AddVertex (surf,-((size)/2.0)+x,0.0,-((size)/2.0)+z,u,v)
         VertexColor surf,Vertexes(x,z),r,g,b,a#
         
      Next
      
   Next
   
   ; Vertices zu Triangles verbinden
   For x=0 To size-1
      
      For z=0 To size-1
         
         v0 = Vertexes(x  ,z  )
         v1 = Vertexes(x+1,z  )
         v2 = Vertexes(x+1,z+1)
         v3 = Vertexes(x  ,z+1)
         
         AddTriangle (surf,v0,v2,v1)
         AddTriangle (surf,v0,v3,v2)
         
      Next
      
   Next
   
   ; Positionieren und skalieren
   PositionEntity mesh,px,py,pz
   ScaleMesh mesh,scale,scale,scale
   
   ; Special FX
   EntityFX mesh,fx
   
   ; Meshrückgabe
   Return mesh
   
End Function

Function ApplyHeightmapToMesh(mesh%,image$,sizex%,sizez%,divider#,r%,g%,b%)
   
   Local x%,z%,h#,index%,alpha#
   
   Local hm%=LoadImage(image$)
   Local surf%=GetSurface(mesh,1)
   
   ResizeImage hm,sizex,sizez
   
   LockBuffer ImageBuffer(hm)
   
   ; Vertices setzen
   For z=0 To sizex-1
      
      For x=0 To sizez-1
         
         index = x + (sizex*z)
         
         h=(ReadPixelFast(x,z,ImageBuffer(hm)) And $ff0000)/$10000
         
         VertexCoords surf,index,VertexX(surf,index),h/divider,VertexZ(surf,index)
         
         ; Farbe und Alpha hinzufügen und Vertex einfärben
         alpha=Normalisieren(h,0,255,0.0,1)
         VertexColor surf,index,r,g,b,alpha
         
      Next
      
   Next
   
   UnlockBuffer ImageBuffer(hm)
   
End Function

Function Normalisieren#(value#=128.0,value_min#=0.0,value_max#=255.0,norm_min#=0.0,norm_max#=1.0)
   
   Return ((value#-value_min#)/(value_max#-value_min#))*(norm_max#-norm_min#)+norm_min#
   
End Function
 

vanjolo

BeitragDi, Sep 09, 2008 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Krischan hat Folgendes geschrieben:
Ich persönlich experimentiere seit längerem mit eigenen Skydomes und bin hin und weg davon.



Einfach nur fantastisch. Wie bekommst Du die Bodentextur so sauber drauf?
Die Illusion ist perfekt Very Happy
 

Krischan

BeitragDi, Sep 09, 2008 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Welchen Boden meinst Du? Den vom Ozean oder den der Insel? Der Ozean ist einfach, wie man in der Wireframeansicht sehen kann liegt ein schwarzes (!) Patch unter der Insel, welches mit einer kreisrunden Alphatextur überzogen ist, dies erzeugt ein nahtloses Verwischen des Horizonts, und zwar kreisrund um die Insel mit der CameraCLScolor. Wenn man ein wenig in die Höhe geht bekommt man sogar die Illusion eines gekrümmten Horizonts, ist aber eine optische Täuschung. Man sollte sich halt nicht zu weit von der Insel entfernen, sonst fliegt der Fake auf Rolling Eyes

Die Insel hingegen ist etwas komplexer. Ich habe eine sehr große 8192x8192 Pixel grosse Terraintextur (mit L3DT gerendert) in 8x8=64 DDS Textures à 1024x1024 Pixel zerschnibbelt (belegt dadurch nur so ca. 56MB im VRAM) und die Insel selbst besteht aus einem Quadtreeterrain, welches ebenfalls in 8x8 Tiles zerschnibbelt ist und nahtlos aneinander gefügt wurde (eigene QTS Terrain Weiterentwicklung). Auf dem Abenddämmerungsbild sind genau 43.794 Tris zu sehen (Surfaces müsste ich mal nachzählen, sind aber mind. 80), 40.712 für die Insel und 3.082 für den Rest wie Sky, Wasser.

Der Rand der Insel (und das ist der Trick) ist ebenfalls schwarz und so geht die Farbe nahtlos vom Terrain auf dem Patch über (der Ozeanboden ist ja auch normalerweise schwarz ab einer gewissen Tiefe). Die Spiegelung habe ich mit der Trial der Fastlibs gemacht, damit es erst einmal besser aussieht. Das Wasser ist aber auch nur ein Patch wie der Ozeanboden, halt in einer anderen Farbe, transparent und genauso gross wie der Boden, inklusive der fadenden Alphatextur zum Horizont hin.

Hier mal so eine DDS-Texture als JPG (Position X0,Y4):

user posted image

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group