#1 14.02.2005 15:43:50

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Terrain

Hallo Leute,

Damit es hier nicht so leer aussieht, möchte ich euch mal ein paar Screenshots meines Terrains zeigen.

Vorweg: Nicht alle Texturen sind schon von mir! Da ich nocht nicht so der begnadete Texturenpinsler bin, musste ich auf ein paar Texturen von UT2004 zurückgreifen. Ich werde natürlich nicht dieses Terrain kommerziell nutzen, solange die Texturen nicht ersetzt wurden!

Das Terrain enstand für meine Facharbeit "Dreidimensionale Landschaftserstellung mit Delphi7 und DirectX9" und benutzt meine DXEngine, welche nie eine richtige Engine geworden ist, sondern nur eine Sammlung von Units und Klassen, die es mir erlauben in 3 sek eine Anwendung zu erstellen, in der ich dann mein Sample ohne Probleme schreiben kann. Es gibt also kein automatisches Rendern, aber dafür automatisierte DeviceErstellung, Kamera, DirectInput, SkyBox, Screenshots usw.
MotionBlur und FullScreenBlur sind auch implementiert, weshalb teilweise das Bild etwas verwischt ist. Hier im Bild ist der FullScrrenBlur total veraltet und hässlich! Ich hab schon einen neueren, der wesentlich geiler aussieht :blues:

Man sieht, dass die Landschaft ziemlich fraktal ist. Das liegt daran, dass sie nur mit einen simplen PerlinNoise (cubic Noise) erstellt wird und nur die Modifikatoren Smooth und Täler erstellen angewendet wurden. Wenn die Zeit gereicht hätte, dann hätte ich noch eine Errosion durch Regen hinzugefügt ( ist zwar an einen Tag gemacht, aber ich war schon im Minus mit meiner Zeit wink )

Demo gibts leider (noch) nicht, weil ich hier mit meinen 56K Modem zu lange für brauchen würde.

Tja, mehr gibt es dazu nicht zu sagen.

Wenn es dabei bleibt werde ich noch mit JorEl ein Tut fürn richtig fettes Terrain machen ... blos das wurde bis jetzt noch nicht geplant, nur angesprochen.

Fragen und Meinungen über die Screenshots sind erwünscht 8)

mfG,
artzuk


Attachments:
Attachment Icon Screenshot67.jpg, Größe: 35,367 bytes, Downloads: 5,424
Attachment Icon Screenshot65.jpg, Größe: 33,287 bytes, Downloads: 5,384
Attachment Icon Screenshot62.jpg, Größe: 38,309 bytes, Downloads: 5,422

Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#2 14.02.2005 18:42:44

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Terrain

-> cool

Frage:
Wo kommt den z.B. auf dem letzen Bild dieser halbtransparente Berg in der Mitte her?


@Demo: Es wird sich doch bestimmt irgendein Kumpel mit ner DSL-Leitung finden, oder? :p

Coolcat


My software never has bugs. It just develops random features.

Offline

 

#3 14.02.2005 22:55:28

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: Terrain

Sieht gar nicht schlecht aus, finde ich. Ich habe mich früher mal an ein U-Boot-Spiel gewagt, und da hätte ich sowas schönes auch gern gehabt.

Den dunklen Berg im Vordergrund auf dem letzten Bild finde ich nett.

Wieviele Vertices sehe ich da eigentlich so etwa? 10.000? Sieht nach mehr aus.

Kannst Du vielleicht ganz kurz ein paar Tips geben, wie man sowas macht? Speziell die Texturen jetzt. Nimmt man dafür mehrere Texturen, packt die in die Stages und blendet die je nach Terrain-Höhe ineinander über?

Offline

 

#4 15.02.2005 15:05:25

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Terrain

@Coolcat: Welchen Berg meinst du? Den vorne, oder den ganz hinten? Vorne ist einfach ein hoher Berg mit einer dunklen Steintextur. Hinten ist Nebel. Da der PixelShader (ich nutze nur 1.1) schon für das Multitexturing ausgelastet ist, konnte ich grad noch so einen weißen Fog in der Ferne einbauen - war echt 'n Problem  :mrgreen:  (Konnt ich nicht mal HLSL verwenden, weil der das nicht geschafft hat)

@DerPeer: Es ist ein PixelShader. Der blendet auf grünen Vertices die 1. Textur, auf roten Vertices die 2. Textur ... das bis zur 4. Textur, da ich in ps.1.1 nur 4 Texurslots habe. Dazwischen wird natürlich interpoliert. Zur Berechnung neheme ich a) die Normalen des Vertices und b) die Höhe ... daraus wird dann die richtige Textur ausgewählt.

Eine TextureMap sieht bei mir dann so aus (schwarz = Alpha ... kann Bitmap nicht besser anzeigen - lgoisch)


Attachments:
Attachment Icon Texturemap.JPG, Größe: 55,766 bytes, Downloads: 5,326

Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#5 15.02.2005 15:07:14

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Terrain

Was ich vergessen hatte: Das schöne am Wasser ist nicht nur die Wahl der Transparenz und der Spiegelung, sondern auch die Trübe im Wasser. Je tiefer eine Wasserstelle wird, umso trüber ist es, also umso weniger kann man den Boden erkennen  :p


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#6 15.02.2005 15:22:25

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Terrain

Oh, das mit dem Nebel sieht irgendwie so aus, als würdest du einen Teil des Terrain transparent rendern, weil es auf den ersten Blick so aussieht, also ob die Berge über den anderen Bergen gerendert wurden, also mit 10% sichtbarkeit oder so...

Coolcat


My software never has bugs. It just develops random features.

Offline

 

#7 15.02.2005 18:04:06

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: Terrain

Soso. Pixelshader also...na mal sehen  smile

Offline

 

#8 23.07.2005 18:19:15

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Terrain

Nach langer kreativer Pause habe ich mich wieder mal an mein Terrain gesetzt, um mich wieder warm zu programmieren.
Vorerst hab ich ziemlich lange an einen vernünftigen Wassershader programmiert. Den hab ich für Radiation (zfx.info) und mich angefertigt. Mir ging es darum einen Shader zu erstellen, der eine Reflectionmap via Bumpmaps verzerrt. Das ganze Wasser wird nur in 1 Pass gerendert (für Refraktion brauch man noch einen Pass2) und benötigt vs.1.1 und ps.1.3 (das war die Herausforderung das alles für pre1.4 Hardware zu schreiben, weil ich mehr nicht hab).
Danach hab ich mich an Bäume gesetzt. Dazu habe ich das Freeware-Tool TreeMagic benutzt, um die 3D BaumMeshs zu erstellen. Die werden dann vie QuadTree nach Sichtbarkeit getestet, nach Z sortiert (wegen AlphaObjekten) und dann gerendert. Die Stämme sind seperat und werden beim Start nur nach Texturen sortiert.
Zuletzt hab ich noch die Sonnenstrahlen und ein dezentes Lensflare hinzugefügt.

Was wars bis jetzt auch schon. Ich überlege noch Gras und Wolken zu machen.

Beim Screenshot103 habe ich mal mein FullscreenBlur angeschaltet (die Stärke kann man variieren). Dadurch werden die Kannten nicht mehr so pixelig dargestellt, aber Objekte in der Ferne sehr verschwommen. Nebenbei läuft natürlich noch MotionBlur, dessen Stärke man auch beliebig variieren kann, bis das Bild bei Bewegungen extrem verschmiert, so dass man nix mehr erkennt.


Attachments:
Attachment Icon Screenshot103.jpg, Größe: 34,169 bytes, Downloads: 777
Attachment Icon Screenshot102.jpg, Größe: 45,414 bytes, Downloads: 748
Attachment Icon Screenshot101.jpg, Größe: 43,468 bytes, Downloads: 769

Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#9 23.07.2005 20:05:45

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Terrain

Also das Wasser ist echt fett!  big_smile
Es gibt scheinbar zwei Baumtypen, der eine sieht recht gut aus, der andere sieht irgendwie so aus, als wäre er einfach nur ein Billboard? Treemagic kann da aber besseres...

Als Übergang zwischen Wasser/Land solltest du irgendwie eine Sandtextur (etc.) benutzen.

Coolcat


My software never has bugs. It just develops random features.

Offline

 

#10 23.07.2005 20:10:52

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Terrain

Es sind 4 Baumtypen und ich kann irgendwie keine besseren Bäume erstellen. Ich muss da noch bisl üben. Das Einfügen bzw. Ersetzen von Bäumen ist ganz einfach, da ich dafür ne ini-Datei mit hab, wo ich nur die Bäume reinschreiben muss und der Rest wird automatisch gemacht.

Es gibt eine SandTextur - müsste blos die Höhenstufe etwas höher schrauben. Das mach ich gleich mal.


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#11 23.07.2005 21:03:20

Neo
Member
Ort: Erfurt/Thüringen
Registriert: 31.01.2005
Beiträge: 78
Web-Seite

Re: Terrain

@Artzuk
Wie schaut deine Bumpmap denn aus und welche Werte verwendest du für die BumpEnvMat Variablen?

Ich komm mit meiner Wasseranimation (Bumpmapanimation) nicht so recht auf einen grünen Zweig.

Magste deinen Vertexshader für das Wasser preis geben?

Neo

Offline

 

#12 24.07.2005 10:26:42

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: Terrain

Wirklich hünsch. Fehlen nur noch vier bunte Typen mit Antennen auf dem Kopf.

Offline

 

#13 24.07.2005 10:37:46

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Terrain

@DerPeer: Thx - Hast Recht, sieht wirklich ziemlich farbig aus.

@Neo:
Jojo, der WasserShader war schon ne komische Sache. Da hab ich echt am längsten dran gesessen.
Also ich nutze im PixelShader den Befehl texm3x2tex. Da hast du in t(n) die spezielle Bumpmap [x|y|z], t(n+1) und t(n+2) ne Matrix [(a|b|c),(d|e|f)]. Der Befehl rechnet so:

Code: delphi

u' = ax + by + cz;
v' = dx + ey + fz;


Jetzt hab ich bspw. aus der Formel für u' ziemlich viele Formeln erstellt, um eine Verzerrung von u durch die ganzen Parameter zu erreichen. Die Lösung kam mir dann aber einfach so big_smile
Ich dachte mir, man müsste irgendwo in der Formel die Texturkoordinate unverändert speichern, damit die schonmal vorhanden ist und nur noch durch den Rest verändert werden muss.
Also schreibe ich jetzt einfach im VertexShader in b die TexCoord u und in e die TexCoord v hinein. Die Bumpmap muss dann im grünen Kanal (y) komplett weis sein, damit die TexCoords unverändert bleiben.
Jetzt nehmen wir als Transformationwert für u einfach den roten Kanal der Bumpmap und für v einfach den blauen Kanal der Bumpmap. Deshalb muss a=1 und c=0, d=0 und f=1 sein!
Dann siehts im Endeffekt so aus

Code: delphi

u' = u + a*x;
v' = v + f*z;



Der Pixelshader sieht bei mir dann so aus:

Code: delphi

ps.1.3

tex t0
texm3x2pad t1, t0_bx2
texm3x2tex t2, t0_bx2

mov r0.rgb, t2
+mov r0.a,  v0.a



Im VertexShader werden nur die Texturkoordinaten berechnet. Es handelt sich dabei um eine Texturprojektion. Dazu wird noch der WasserAlphaWert über eine normale FogFormel berechnet tongue

PS: Wie gefallen dir, Neo, und den anderen noch eigentlich die Screenshots?


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#14 24.07.2005 17:27:58

Neo
Member
Ort: Erfurt/Thüringen
Registriert: 31.01.2005
Beiträge: 78
Web-Seite

Re: Terrain

Die Bilder sehen wirklich gut aus, gibt da ansich nichts mehr zu verbesseren.

Ich handhabe mein Wasser allerdings noch mit PS 1.1. über Texbem.
Mittels der FFP habe ich auch meine Reflektion durch Textureprojektion zum Laufen gebracht, nur portiere ich das ganze jetzt in Effekt Dateien und dazu muss ich die Textureprojektion per VertexShader realisieren, und da haperts noch ein wenig.

Wichtiger für mich ist daher eher die Realisierung deines Vertexshaders Artzuk. Wie berechnet man die Texturprojektion im Vertexshader?

Neo

Offline

 

#15 24.07.2005 17:58:34

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Terrain

@Neo:Achso, das ist relativ einfach.

Code: delphi

    float4 tci    = mul( float4(in.pos,1), mwv );   // COUNT4|PROJECTED
    float4   t    = mul( tci, mtex );

    out.texcoord0 = t / t.w



Das hier ist die Matrix mTex - ich hab die festen Werte genommen und in eine Matrix gespeichert. Irgendwo hab ich auch noch rumhängen, wie man die richtig berechnet - war nur bisl Translation und Skalierung.

Code: delphi

    mtex[0] = float4( 0.905329971570934f, 0.0f,              0.0f,               0.0f );
    mtex[1] = float4( 0.0f,               1.20710674329371f, 0.0f,               0.0f );
    mtex[2] = float4( 0.5f,               0.5f,             -1.0f,               1.0f );
    mtex[3] = float4( 0.0f,               0.0f,              0.100013330009162f, 1.0f );



PS: Gibts da echt nichts mehr zu verbessern? Etwas gabs schon - hab neue Bäume gemacht, die Bumpmapskalierung runter gesetzt und noch die paar ZFehler beseitigt.


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#16 24.07.2005 18:20:09

Neo
Member
Ort: Erfurt/Thüringen
Registriert: 31.01.2005
Beiträge: 78
Web-Seite

Re: Terrain

Danke Artzuk, das hilft mir schon eher.

Zu den Bildern, ich meinte mit nichts zu verbessern eher das Wasser. Zu den Bäumen, nunja, du hast selbst gesagt das sie dir nicht gefallen smile

Ich würde bei den Bäumen weg von den zylinderartigen Baumstämmen gehen und versuchen einen richtig stabilen Stamm mit breiter Wurzel und Verzweigung zu modellieren, davon vielleicht 3 Varianten und dann sieht das bestimmt besser aus. Aber ich selber hab eigentlich die selben Probleme.

Neo

Offline

 

#17 25.07.2005 06:12:13

firlefanz
GodlikeMember
Ort: Olpe in NRW
Registriert: 31.01.2005
Beiträge: 1035
Web-Seite

Re: Terrain

Hi!

Also ich muss sagen, die Screens gefallen mir sehr gut!
Dickes Lob @Artzuk!  :mrgreen:

Firle

Offline

 

#18 25.07.2005 20:08:57

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Terrain

Thx @ Firlefanz.

Ich hab mal Gras hinzugefügt. Schmiert aber noch ab, wenn man es sehr übertreibt und dann zieht es die fps sehr weit runter.
Kenn jemand ein gutes paper, wie man Gras rendert?


Attachments:
Attachment Icon Screenshot108.jpg, Größe: 52,755 bytes, Downloads: 630

Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#19 25.07.2005 21:18:16

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: Terrain

Ich kenne ein Paper, wo jemand 100.000e Bäume gerendert hat. Also bewaldete Berge, wenn Du so willst. Das waren alles Volumentexturen, die mit kleinen Scheibchen dargestellt wurden. Das ist für Dich aber bestimmt unpassend, da Du wie oben jeden einzelnen Grashalm sehen willst.
Viel Glück!

Offline

 

#20 26.07.2005 06:53:53

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Terrain

@Artzuk: Such mal nach Fur-Rendering.
Eine Möglichkeit das zu machen ist die folgende:
Man nimmt eine voll-transparente Textur, die in gewissem Abstand einfache (in deinem Fall grüne) Punkte hat. Diese Textur renderst du dann in mehreren Schritten über dein Objekt. Jedesmal wird dabei die Textur ein klein wenig höher und etwas versetzt gerendert.
Insgesamt sieht das dann wie Fell oder Gras aus.
Richtig gut wird es natürlich wenn man dann noch eine Windanimation einbaut...

Coolcat


My software never has bugs. It just develops random features.

Offline

 

#21 15.09.2005 18:28:56

Guest
Gast

Re: Terrain

Zitat:

Ich kenne ein Paper, wo jemand 100.000e Bäume gerendert hat. Also bewaldete Berge, wenn Du so willst. Das waren alles Volumentexturen, die mit kleinen Scheibchen dargestellt wurden. Das ist für Dich aber bestimmt unpassend, da Du wie oben jeden einzelnen Grashalm sehen willst.
Viel Glück!

Das ist nix, mit SpeedTree schaffst du auch 500.000 Bäume( Theoretisch, das kann ja kaum nen Bildschirm darstellen )!

Stichwort LOD:
Bei nahansichten: Gras mit viel Polys( relativ ), so weiter sie weg sind um so weniger Polys, ich empfehle ca. 7 LOD Stufen bei Gras!

 

#22 15.09.2005 18:28:56

Guest
Gast

Re: Terrain

Zitat:

Ich kenne ein Paper, wo jemand 100.000e Bäume gerendert hat. Also bewaldete Berge, wenn Du so willst. Das waren alles Volumentexturen, die mit kleinen Scheibchen dargestellt wurden. Das ist für Dich aber bestimmt unpassend, da Du wie oben jeden einzelnen Grashalm sehen willst.
Viel Glück!

Das ist nix, mit SpeedTree schaffst du auch 500.000 Bäume( Theoretisch, das kann ja kaum nen Bildschirm darstellen )!

Stichwort LOD:
Bei nahansichten: Gras mit viel Polys( relativ ), so weiter sie weg sind um so weniger Polys, ich empfehle ca. 7 LOD Stufen bei Gras!

 

#23 15.09.2005 18:28:56

Guest
Gast

Re: Terrain

Zitat:

Ich kenne ein Paper, wo jemand 100.000e Bäume gerendert hat. Also bewaldete Berge, wenn Du so willst. Das waren alles Volumentexturen, die mit kleinen Scheibchen dargestellt wurden. Das ist für Dich aber bestimmt unpassend, da Du wie oben jeden einzelnen Grashalm sehen willst.
Viel Glück!

Das ist nix, mit SpeedTree schaffst du auch 500.000 Bäume( Theoretisch, das kann ja kaum nen Bildschirm darstellen )!

Stichwort LOD:
Bei nahansichten: Gras mit viel Polys( relativ ), so weiter sie weg sind um so weniger Polys, ich empfehle ca. 7 LOD Stufen bei Gras!

 

#24 15.09.2005 18:28:56

Guest
Gast

Re: Terrain

Zitat:

Ich kenne ein Paper, wo jemand 100.000e Bäume gerendert hat. Also bewaldete Berge, wenn Du so willst. Das waren alles Volumentexturen, die mit kleinen Scheibchen dargestellt wurden. Das ist für Dich aber bestimmt unpassend, da Du wie oben jeden einzelnen Grashalm sehen willst.
Viel Glück!

Das ist nix, mit SpeedTree schaffst du auch 500.000 Bäume( Theoretisch, das kann ja kaum nen Bildschirm darstellen )!

Stichwort LOD:
Bei nahansichten: Gras mit viel Polys( relativ ), so weiter sie weg sind um so weniger Polys, ich empfehle ca. 7 LOD Stufen bei Gras!

 

#25 15.09.2005 18:28:56

Guest
Gast

Re: Terrain

Zitat:

Ich kenne ein Paper, wo jemand 100.000e Bäume gerendert hat. Also bewaldete Berge, wenn Du so willst. Das waren alles Volumentexturen, die mit kleinen Scheibchen dargestellt wurden. Das ist für Dich aber bestimmt unpassend, da Du wie oben jeden einzelnen Grashalm sehen willst.
Viel Glück!

Das ist nix, mit SpeedTree schaffst du auch 500.000 Bäume( Theoretisch, das kann ja kaum nen Bildschirm darstellen )!

Stichwort LOD:
Bei nahansichten: Gras mit viel Polys( relativ ), so weiter sie weg sind um so weniger Polys, ich empfehle ca. 7 LOD Stufen bei Gras!

 

Brett Fußzeile

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson