Das Licht - und Schattenspiel [Frage zu Shadowmaps]
Übersicht

![]() |
eizdealer |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Arcanes: Und wenn jetzt ein Berg den Vertex verdeckt? OK - dann wird es nicht beleuchtet. Aber es prallen ja auch Protonen vom Terrain auf andere Teile des Terrains ab. Außerdem sieht das ganze wahrscheinlich ziemlich abgehackt aus - entweder ganz hell oder ganz dunkel.
Ich hab mehr an so etwas wie ein "Sonnenlicht" gedacht. @DS: Ich brauch ne Selbstillumination (stimmt das Wort in dem Zusammenhang?). Also der Schatten, den es gibt wird nur von dem Terrain auf das Terrain geworfen. Ich weiß, das ist ein schwieriges Thema. Und ich bin nörgelig ![]() Vielleicht hilft euch das: Ich meine das so, wie TerrainShading beim Blitzterrain. Da gibt es schließlich auch kein Licht in dem Sinne, sondern es sieht einfach nur geil aus ![]() Und dann eben zusätzlich die Schatten von den Bergen und so. |
||
![]() |
Arcanes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da die Helligkeitsstufen zwischen den einzelnen Vertikeln beim Rendern automatisch interpoliert werden, hast Du also schon sehr fliessende Übergänge! ja okay, ab und zu entstehen unschöne Kanten (aber diese sind eben abhängig von der Vertexanzahl und Meshgrösse).
Eine andere Möglichkeit wäre vielleicht, auch diese Helligkeitsstufe selbstständig zu bestimmen und auch direkt auf die Textur einzuzeichnen. Dauert sicher ewig lange und bestimmt auch nicht ganz einfach umzusetzen, aber zum Vorberechnen vielleicht eine geeigneter Denkansatz? Aber wahrscheinlich haste schon ne ganze Menge mehr Ahnung von Lightmappen als ich, und warst auf diese Idee auch schon selbst gekommen? Naja, ich beschäftige mich ja erst seit vorgestern damit ![]() |
||
tHey pUt mE iN a rOuNd rOom tO diE
User posted image http://www.myownmalice.de.vu |
![]() |
Arcanes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm... wie das Terrainshading... dann weis ich, was Du meinst.. ja das sieht genial aus, aber - hm - wie coden? *grübel*
[EDIT] Vielleicht hilft Dir das weiter: http://civilwar.gatech.edu/papers/acsp99/ (bin leider selbst noch nicht zum lesen gekommen, nur überflogen) |
||
tHey pUt mE iN a rOuNd rOom tO diE
User posted image http://www.myownmalice.de.vu |
IonPainter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hilft das vielleicht
http://www.blitzbasic.com/code...p?code=325 habs grad beim browsen durchs codearchiv entdeckt... |
||
![]() |
eizdealer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich hab jetzt zumindest schonmal rausgefunden, wie das mit dem BlitzTerrain Shading funktioniert: Das ist normales Blitz Lighting, das bei Meshes zwar genauso funktioniert (UpdateNormals wird benötigt), aber dadurch, dass das MeshTerrain sehr viel weniger Polies hat (kein LOD) sieht das ganze relativ hässlich aus.
@IonPainter: Sowas in der Art wäre nützlich, nur dass es nur für BlitzTerrain geht (soweit ich das auf den ersten Blick gesehen habe). Ich schau's mir trotzdem morgen nochmal an. @Arcanes: Das ist ein harter Brocken! Werd ich mir auch morgen reinziehen. Danke schonmal soweit. |
||
IonPainter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also im blitzbasic.com codearchiv gibts nen haufen zeug zu meshterrains... einfach mal under 3d graphics gucken... | ||
![]() |
eizdealer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo!
Nachdem ich jetzt vom Urlaub zurück bin hab ich mich mal an das Problem gesetzt und folgenden Code geschrieben: Wie das Ganze vom Prinzip funktioniert: Die Tiles werden in einem Loop abgelaufen, in diesen Loops werden einzelne Punkte abgelaufen. Mit Hilfe einer Sphere ("LightRCV"), die auf das Terrain gesetzt wird per Linepick überprüft, ob die Sonne den Punkt sieht. Wenn ja, dann wird auf der Shadowmap ein weißer Punkt gezeichnet. Ich weiß, das ganze kann optimiert werden. Aber vorerst würde ich nur gern wissen, ob ihr den Fehler findet. Im Moment wird die komplette Shadowmap weiß gezeichnet. Und bitte nicht hauen wegen dem Plot ![]() Code: [AUSKLAPPEN] For XTile = 0 To LevelSize-1
For ZTile = 0 To LevelSize-1 For DotX = 0 To 7 For DotZ = 0 To 7 LightRCV = CreateSphere(8) EntityPickMode LightRCV,2 ScaleEntity LightRCV,.01,.01,.01 XTMP# = XTile - (LevelSize/2) + Float(DotX/8) ZTMP# = ZTile - (LevelSize/2) + Float(DotZ/8) ;Berechnet die X und Z Position der Kugel LinePick(XTMP,20,ZTMP,0,-40,0) ;Per Linepick wird die Höhe der Kugel berechnet YTMP# = PickedY() PositionEntity LightRCV,XTMP,YTMP,ZTMP SunX = EntityX(LightRCV)+20 SunY = EntityY(LightRCV)+11 SunZ = EntityZ(LightRCV)+20 ;Hier wird die Sonne gesetzt (jeweils im gleichen Abstand zur Kugel) LinePick(SunX,SunY,SunZ,-20,-11,20) If PickedEntity() = LigthRCV Then SetBuffer TextureBuffer(LightMap) Color 255,255,255 Plot XTile*8+DotX,ZTile*8+DotZ SetBuffer BackBuffer() EndIf ;Wenn die Kugel von der Sonne gepickt wird, wird ein weißer Punkt gezeichnet FreeEntity LightRCV Next Next Next Next |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group