![]() |
[GLScene] Ein Dorf erstellen...
Hallo! :-D
Ich würde gern mit GLScene ein kleines Dorf "bauen" :mrgreen: Ich hab auch schon angefangen! Und zwar steht bis jetzt: Eine Landschaft mit Grasboden, ein Himmel (Skydom), eine Sonne in form von GLLensFlare, ein Baum (GLTree), und 3 Wände (3 dünne, hohe Quader) die irgendwann mal ein Haus werden sollen... :) Man kann sich frei bewegen und sieht alles aus der First Person sicht... Aber es gibt leider noch ein paar schwerwiegende Probleme die mich davon abhalten mein Traum zu verwirklichen!! Meine Probleme sind: 1.Wie erstelle ich verschiedenne Texturen (Kiesel, Gras, Weg) auf dem Boden (TerrainRenderer) 2.Wolken wären ganz gut... allerdings hab ich keine Ahnung wie ich in Skydome Wolken darstellen kann!! :( 3.Durch meine 3 Wände, die ja mal ein Haus werden sollen, kann man durchlaufen... und ich weis nicht wie ich das verhindern kann... Das wär es eigentlich! Kann mir irgendjemand helfen? Danke im Voraus!! :-D |
Re: [GLScene] Ein Dorf erstellen...
Hi.
Hm, wenn dein Dorf fertig ist musst du es mir mal schicken, dann schau ich ma ob ich einziehe ;-) Ne, ernst jetzt. Zitat:
Zitat:
Zitat:
hier mal ein paar links, hoffentlich hilfreich: ![]() ![]() MfG Flips |
Re: [GLScene] Ein Dorf erstellen...
Zitat:
Und zu den Wänden... das Problem hab ich schon beseitigt! :) PS: Wenn du mir hilfst, kannst du ruhig ins Dorf ziehen! Da hab ich nichts dagegen! :mrgreen: |
Re: [GLScene] Ein Dorf erstellen...
Ähhh...
Ich hab noch ein Problem... Und zwar hab ich jetzt ein Haus gemacht aus ganz vielen Wänden (GLQubes) und ganz vielen Böden- und Deckenteilen... Gibt es eine Möglichkeit alles zu einem Teil zu verbinden? :roll: Warum? Ganz einfach alles ruckt jetzt schon... (Das ist nur ne leere Landschaft mit Himmel nem Baum und nem Haus!! :| Und das ruckt richtig heftig! "Mein PC is eigentlich ein guter :) ") Oder hat jemand ne bessere Idee? :?: An Flips: Das Problem mit dem Terrain hab ich immer noch... :( Also wenn du das kannst... Kannst du mir das dann erklären? |
Re: [GLScene] Ein Dorf erstellen...
Erstell dir Dein Haus doch in einem 3D-Editor und lade es.
|
Re: [GLScene] Ein Dorf erstellen...
Wie inherited schon sagte, erstelle die Häuser mit einem 3D-Editor und speichere es im .3DS-Format.
Dann kannst du diese Objecte einfach in die Scene mit einbauen. Das ist einfacher als Tausende von Wänden mit eigens erzeugten Quadraten zu basteln. Was wird denn das erst wenn du ein Tannebäumchen basteln möchtest ? ;) Guck mal dort: ![]() ...insbesondere die vorletzte Zeile... :mrgreen: |
Re: [GLScene] Ein Dorf erstellen...
Hi.
Also, zu dem Terrain. Hier der Code für ne Wiese mit vordefinierten Wegen. Zuerst legst du ein Bitmap-File mit der Größe deines Terrains an. Also wenn das Terrain 64*64 groß sein soll, dann wird das Bitmap 64*64 Pixel groß. Nehmen wir an du willst also ein Terrain machen, welches einfach eine Wiese mit einem kleinen Platz und nem Teich darin darstellen soll. Bei mir würde das dann so aussehen (64*64) ![]() Zur Farberklärung:
So, jetzt brauchst du noch ne Routine zum auslesen (Optimierungswürdig ;-) ):
Delphi-Quellcode:
Wie gesagt, der Code is optimierungswürdig :-D const SECTORS_COUNT = 4; //Wasser, Wiese, Kiesel, Grenzfäche SIZE = 4096; //64*64 LENGTH = 64; type Pixel = record koordinate : TPoint; farbe : TColor; end; type Sector = record farbe : TColor; filename : string; end; //Global var Pixels : array [0..SIZE] of Pixel; Sectors : array [0..SECTORS_COUNT-1] of Sector; bit : TBitmap; [...] //=======ONCREATE========// Sectors[0].farbe = clGreen; Sectors[0].filename = 'texturen/wiese.tga'; [...] bit := TBitmap.Create; try bit.LoadFromFile(ExtractFilePath(ParamStr(0))+'level1.bmp'); i:=0; for x := 0 to bit.Width-1 do for y := 0 to bit.Height-1 do begin Pixels[i].color := bit.Canvas.Pixels[x,y]; Pixels[i].koordinate.X := x; Pixels[i].koordinate.Y := y; inc(i); end; finally bit.Free; end; [...] So, als nächstes brauchst du einen Code der das ganze in OpenGL darstellt.
Delphi-Quellcode:
So ich nehme an die Hälfte is falsch un die andere Hälfte hab ich vergessen^^procedure RenderPixel(pPixel:TPixel;Nummer:integer); begin case pPixel.Color of clGreen : WiesenTextur.Bind; //Entsprechende Texturen Binden clGray : Kiesel.Bind; //Entsprechende Texturen Binden clMedGray : //Hier musste dir halt überlegen wie du das mit dem Blending machst :-) clBlue : Wasser.Bind; //Entsprechende Texturen Binden end; with pPixel.koordinate do begin glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex3f(x,1,y -LENGTH); glTexCoord2f(0,1); glVertex3f(x,1,(y-LENGTH)+1); glTexCoord2f(1,1); glVertex3f(x+1,1,(y-LENGTH)+1); glTexCoord2f(1,0); glVertex3f(x+1,1,y-LENGTH); glEnd(); end; end; //Aufruf procedure Render; var i:integer; begin //Der sonstige OGL Kram //... for i := 0 to SIZE-1 do RenderPixel(Pixels[i],i); //Der sonstige OGLKram //... end; |
Re: [GLScene] Ein Dorf erstellen...
Ahhhh................. :?:
Und das geht mit dem TerrainRenderer in GLScene??? Oder meintest du OpenGL?... Also jetzt benutze ich gerade wie oben schon gesagt den TerrainRenderer und dachte eigentlich da gibt es irgendeine einfache Einstellung... Danke aber trotzdem... |
Re: [GLScene] Ein Dorf erstellen...
Gut dann hab ich das überlesen :-D :wall:
Naja vielleicht ist der Code trotzdem für jemanden gut :) |
Re: [GLScene] Ein Dorf erstellen...
Ja, für mich ist der Code gut! Auch ich will mal bald mit solchen 3D-Sachen anfangen, aber noch nie zuvor gemacht!
Ich erstelle Dörfer (und anderes) mit POV-Ray, vieleicht gibt es ja auch da Konvertierungsmöglichkeiten zu 3DS. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz