Seite 1 von 1

Shatten auf Terrain

Verfasst: 28.04.2006 21:32
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

Verfasst: 31.05.2007 17:09
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.

Verfasst: 31.05.2007 21:34
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 ^^

Verfasst: 01.06.2007 21:37
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

Verfasst: 04.06.2007 16:24
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.

Verfasst: 27.10.2007 07:49
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

Verfasst: 28.10.2007 00:48
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.

Verfasst: 30.10.2007 15:33
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

Verfasst: 30.10.2007 16:52
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.