Shatten auf Terrain

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Preludian
Beiträge: 52
Registriert: 25.04.2006 09:21

Shatten auf Terrain

Beitrag von Preludian »

Hi, ich komme bis jetzt unerwartet gut klar mit der 3D Implementation von PB 4beta11. Aber zwei Dinge geben mir momentan Rätsel auf...

1. Ich kriege keine Schatten auf einem Terrain, wohl aber auf eine Entity. Ist das korrekt? Was müsste ich tun um trotzdem noch Schatten auf die Oberfläche zu zaubern? Muss es ein Mesh sein?

2. AmbientColor hat keine Auswirkung, MaterialAmbientColor schon.
Was verstehe ich da nicht?

Danke
D4uS1
Beiträge: 268
Registriert: 02.09.2006 12:16

Beitrag von D4uS1 »

zu 1. Dasselbe Problem habe ich auch, ich hätte gerne ein schattiertes Terreain aber offensichtlich scheinen die Schattierungen nur Enities, also Wesen zu betreffen.

zu 2. AmbientColor() ist denke ich so etwas wie ClearScreen() im 2d Modus. Sie tritt nur dann in Erscheinung wenn du nicht schon den gesamten Berecih des Bildschirms bedeckt hast.
xperience2003
Beiträge: 972
Registriert: 04.10.2004 18:42
Computerausstattung: Amiga, LinuxMint, Windows7
Wohnort: gotha
Kontaktdaten:

Beitrag von xperience2003 »

Was verstehe ich da nicht?
hast alles mitbekommen =)

ein entity ist ein mesh
ein terrain ist ein..ich nenns mal dynamisches triangle geflecht

wenn du schatten haben willst ist das kein problem, es gibt lightmapper ohne ende fuer terrains (aus heigthmaps)
der erstellt eine textur die du aufs terrain blenden kannst (zb mit addblend)
oder wenn du ein terrain mit einer grossen textur hast , dann mal den schatten doch gleich mit drauf^^

andere version waere ein meshterrain, sprich einen 'fussboden' aus einem entity
milkshape bietet zb die moeglichkeit eine heightmap als mesh abzuspeichern..oder auch viele terraineditoren
dann hast du natuerlich realtime schatten drauf ^^

bei letzterem wird dir auffallen, das die poly anzahl schnell in die hoehe und die frames schnell in den keller gehen
..also einen kompromiss zwischen aussehen und geschwindigkeit suchen :)


have fun =)

zu 2. AmbientColor() ist denke ich so etwas wie ClearScreen() im 2d Modus. Sie tritt nur dann in Erscheinung wenn du nicht schon den gesamten Berecih des Bildschirms bedeckt hast
nein, ein clearscreen ist es nicht
kenn jetzt nicht die ogre befehle aber da wirds nen clearscreen geben
und mit clearcolor hats auch nichts zu tun

ambientcolor stellt den farbton der ganzen scene ein, was sich (wenn gewuenscht oder im grundzustand) auf alle meshes in der scene auswirkt

will heissen, wenn du ambientcolor blau einstellst
werden alle meshes einen blauen schimmer haben, ohne das du
das material der entitys selber geaendert hast
sozusagen wenn du im zimmer ne rote lampe hast, dann schimmert dein t-shirt rot, obwohl du weiss anhast ^^
amiga rulez...
Rebirth Software
S-terix
Beiträge: 7
Registriert: 12.01.2006 01:31
Kontaktdaten:

Beitrag von S-terix »

wie xperience2003 schon geschrieben hat würde ich auch eine Lightmap aus der Heightmap erzeuegen und die mit der Textur kombinieren. Solange sich die Sonne nicht bewegt (also immer tag und die gleiche uhrzeit) ist das die beste und schnellste lösung
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Die Schattendarstellung auf das Terrain funktioniert durchaus, allerdings nur im Fesntermodus und nicht mit Additiven Schatten.

Außerdem wenn du ein Objekt größer skalierst verliert es linear dazu an Helligkeit.
Wenn du das Terrain zu hoch skalierst dann erkennt terrainheight die Höhe nicht richtig.

Ambientcolor ist doch das Umgebungslicht...
Wenn du Ambientcolor auf 0 stellst und kein licht in deine Scene eibaust bleibt alles schwarz. Wenn du Rot eintellst erstrallt dein objekt in einem homegenen roten licht das von überall herzukommen scheint (deshalb ambient), dieses Licht kann aber keinen Schatten erzeugen. Außerdem
ist es bei starken Lichtquellen je nach intensität kaum sichtbar deshalb der siehst du scheinbar keinen Effekt.
I´a dllfreak2001
moin
Beiträge: 59
Registriert: 03.07.2007 08:38
Wohnort: Norddeutschland

Beitrag von moin »

Auch wenn der letzte Beitrag schon eine Weile her ist, stellt sich bei mir die Frage wie man auf einem Terrain einen Schatten darstellen kann. Im letzten Beitrag wird behauptet, dass eine Schattendarstellung auf einem Terrain im Fenstermodus funktioniert- der Weg fehlt aber. Könnt ihr mir vielleicht mit einem Tipp weiterhelfen?
Danke
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Oha die Codes dazu sind alle schon weg, leider.

Erstmal im vorraus ich habe ne Ati-Karte und keine NV deshalb kann ich dafür keine Garantie im Voraus geben.




War aber jetzt nix aufregendes also alles Standartcode.

Du brauchst nen Enitity und das Terrain und diesen Befehl:

Code: Alles auswählen

WorldShadows(Typ)
Die Schatten auf das Terrain wurden nur dargestellt wenn man diesen Parameter eingestellt hatte:

Code: Alles auswählen

#PB_Shadow_Modulative
Achja und du musst ggf. auch noch diesen Befehl ausführen:

Code: Alles auswählen

EntityRenderMode(#Entity, Modus)
mit

Code: Alles auswählen

#PB_Entity_CastShadow
als Parameterwert...

Ambientlight sollte nicht zu hell sein sonst sieht man den Schatten nicht richtig. Außerdem haben die Lichter keinen Einfluss auf das Terrain selber aber immernoch auf das Entity.
I´a dllfreak2001
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

Außerdem wenn du ein Objekt größer skalierst verliert es linear dazu an Helligkeit.
Wenn du das Terrain zu hoch skalierst dann erkennt terrainheight die Höhe nicht richtig.
hehe die zwei ersten Punkte über die ich mich bei OGRE genervt hab.

Skalierte Objekte müssen normalen-normalisiert werden ( ka ob da mittlerweile ein command dafuer gibt ). Und der Terrainbug war ebenfalls auf meiner Abschussliste...

Bist du sicher das du mit Ogre rumspielen willst ? =p

Thalius
"...smoking hash-tables until until you run out of memory." :P
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Leider ist Ogre derart beschränkt, dass es schon wieder eine Schande ist.
Denn die aktuelle Version von OGre für C++, hat beeindruckende Fähigkeiten. Ganz eindeutig ist das noch eine Baustelle für Faintasie.
I´a dllfreak2001
Antworten