Skybox oder SkySphere ?
Übersicht

SlopeBetreff: Skybox oder SkySphere ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wow, geiles Demo. Danke! ![]() Werde dann mal mit Skybox probieren. |
||
Affje |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
eine sphere bentigt auch viel mehr polygone - ein cube nur 12, bzw 10 wenn es keinen boden geben sollte | ||
MRaven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also ich habe ein terrain, wolkenbilder hätt ich auch schon, "nur" noch diue skybox :-/ | ||
www.drachengarde.tk
Guckst da Hier |
MRaven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hätte denn jemand eine textur, die ich benutzen könnte, für alle 4 seiten gleichzeitig? | ||
www.drachengarde.tk
Guckst da Hier |
MRaven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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: ![]() Unfertige Abenddämmerung, es fehlt das gewisse Finetuning der Farben und Grössen ![]() Dasselbe Bild als Wireframe-Ansicht ![]() 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): ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Krischan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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): ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group