Seite 1 von 2

Worldshadows() + Terrain + Alphakanal ---> Grotesk

Verfasst: 13.04.2013 10:39
von Chimorin
Halli Hallo,

ich überschwemme ja zur Zeit das Forum mit Hilferufen, jetzt kommt der Nächste :)
Einen Beispielcode kann ich leider nicht zur Verfügung stellen, aber ich schaue einmal, ob man nicht ein PB-Beispiel umschreiben kann.
Es handelt sich hierbei um einen kleinen Fragenkatalog mit vermeintlicher Bugmeldung, also splitte ich mal:

1. Texturarten:
-Modulative: Funktioniert einwandfrei mit Terrains, nur eben hässlich wie die Nacht ^^
-TextureAdditive: Funktioniert mit Terrains, aber egal welche Auflösung der Schattengröße man wählt, die Schatten sehen aus, als ob sie mit 8-bit in riesig gezeichnet wären (Bis zur
Exceptiongrenze, also so eine Auflösung um die 100k)/ Einen schlechteren Schattenwurf kann es nicht geben, funktioniert aber mit Terrains. <----- Ist das ein Bug?
-Additive: Kann ich nicht viel dazu sagen, ich sehe nur auf den anderen Entities, dass es funktioniert; Aber da liegt das Problem, auf Terrains wirft dieser Modus keinerlei Schatten!
Ist das ein Bug?

2. Alphakanal:
Problembeschreibung: Ich habe einen Ast, das ist eine 2D-Ebene mit Alphakanal. Man sieht die Blätter und die kleinen Äste, der Rest (Hintergrund) ist rauseditiert. Mein Problem liegt nun darin,
dass die Engine einfach nur die 2D-Ebene sieht und daraus den Schattenwurf schnipselt, somit einfach eine Platte. Ich hätte den Schattenwurf aber gerne so, dass nur die Blätter,.. einen
Schattenwurf ergibt, somit dass einfach der Alphakanal noch eine Rolle spielt. Geht das?

Ich würde wirklich gerne einen kurzen Beispielcode präsentieren, aber leider geht das wegen der ganzen Verknüpfungen untereinander nicht.
Ich hoffe, jemand von euch hatte auch schon dieses Problem und hat eine Lösung gefunden.

EDIT: Ich habe etwas gefunden:
Ändert einmal in dem Beispiel "TerrainPhysic.pb" die Flag von Worldshadows. Zumindest Additive zeigt es gut, TextureAdditive funktioniert wohl gar nicht mit Entities, denen ein Physikalischer Körper zugewiesen wurde?! <--- Noch ein Bug?

Gruß,

Banane

Re: Worldshadows() + Terrain + Alphakanal ---> Grotesk

Verfasst: 15.04.2013 13:19
von Chimorin
Kann ein Admin diesen Beitrag bitte ins Bug-Forum verschieben?
Danke ^^
Ich schaue mal, ob ich mit meinem mittelmäßigen Englisch einen Beitrag im englischen Forum hinbekomme... (Das wird blamabel :oops:)

EDIT:
Hmm, ist ja nur zur Hälfte ein Bugmeldung. Soll ich dann einfach einen zusätzlichen Thread erstellen?

Re: Worldshadows() + Terrain + Alphakanal ---> Grotesk

Verfasst: 15.04.2013 14:12
von NicTheQuick
Bananenfreak hat geschrieben:Hmm, ist ja nur zur Hälfte ein Bugmeldung. Soll ich dann einfach einen zusätzlichen Thread erstellen?
Ja, das wäre übersichtlicher. :)

Re: Worldshadows() + Terrain + Alphakanal ---> Grotesk

Verfasst: 28.04.2013 17:34
von Chimorin
Um die Frage klarer zu stellen:

Hier geht es nur noch um die Frage bezüglich der Schatten in Kombination mit einer Textur, die einen Alphakanal aufweist.
Problem: Es wird so angezeigt, wie es soll (z.B. Ein Ast mit Blättern ist außen herum transparent), aber die Schatten werden mit Hilfe des Entities berechnet, somit des gesamten Bildes ohne Bezug zum Alphakanal. Meine Frage wäre nun, wie ich das ändern kann (siehe Punkt 2 oben).

Gruß,

Banane

Re: Worldshadows() + Terrain + Alphakanal ---> Grotesk

Verfasst: 28.05.2013 19:39
von Chimorin
Hat niemand eine Ahnung, wie man die teilweise durchsichtigen Texturen auf die Schatten überträgt? Kann man den Schatten eines Entities irgendwie verändern (Über Schattensprites oder so?)?

Re: Worldshadows() + Terrain + Alphakanal ---> Grotesk

Verfasst: 28.05.2013 20:00
von NicTheQuick
Soweit ich weiß ist das etwas sehr spezielles. Man kann sich da nur behelfen, indem man echte Löcher in das 3D-Mesh macht oder entsprechende Shader schreibt. Denn die Schattenberechnung ist beim 3D-Rendering durch Rasterisierung neben Spiegelungen eine komplizierte Sache, die saumäßig Power frisst.

Re: Worldshadows() + Terrain + Alphakanal ---> Grotesk

Verfasst: 29.05.2013 08:20
von Chimorin
Hallo Nic,

Es geht hier um einen Baum, der sagen wir mal 20 solche Blättersammlungen beinhaltet. Ein Wald mit 50 Bäumen hat dann schon 1000 Blätteransammlungen, jedes dieser Meshes hat 2 Polygone ---> Somit insg. 2000. Wenn ich nun aber aus diesen Ebenen richtige Meshes schneide, werde ich vermutlich nicht unter 20 Polygone kommen, was 20000 Polygone nur an Blattwerk für die Bäume entspricht und somit min. das Doppelte an Polygonen.

Blätter werden meines Wissensstandes in (fast) allen Spielen über 2D- oder minimalistische 3D-Ebenen realisiert. Die schaffen es auch, dass der Schatten bei diesen Meshes anders ist. Zur Zeit ist der Baum eine Einheit, aber ich werde den mal aufdröseln und schauen, ob ich nicht irgendwie ein Schattenbild einschleusen kann ^^

EDIT:
http://www.ogre3d.org/docs/manual/manua ... 05fshadows
Unter "transparency_casts_shadows". Wie kann ich dies einschalten? Ich meine, dass dies genau das ist, was ich suche.

EDIT2:
EDIT1 ist glaube ich falsch, normalerweise werfen Meshes mit transparentem Material gar keinen Schatten.
http://www.ogre3d.org/forums/viewtopic.php?f=2&t=58992
Würde mein Problem beheben, aber ich habe keine Ahnung, wie man das umsetzt Oo

Re: Worldshadows() + Terrain + Alphakanal ---> Grotesk

Verfasst: 30.05.2013 08:20
von Chimorin
Ich setze das jetzt mal auf Eis, bis die Schatten mal richtig funktionieren. Das Meiste davon ist ja ziemlich verbugt.
TextureAdditive kann man gar nicht verwenden, wo Viele im Internet schreiben, dass meine Problemlösung bei diesem Schattentyp schon integriert ist...
http://www.ogre3d.org/forums/viewtopic.php?f=2&t=53077

Aber eine Frage habe ich noch: Was ist das Culling? Laut der Beschreibung im Wiki könnte es das sein, was ich brauche...
Man schneidet ja nicht sichtbare Sachen weg und wendet dies auf das Material an. Meine Schlussfolgerung: Es werden die Sachen vom Material weggeschnitten, die man nicht sieht...

Hoffen wir einfach auf benutzbare Schatten.

Gruß,

Banane

Re: Worldshadows() + Terrain + Alphakanal ---> Grotesk

Verfasst: 30.05.2013 23:05
von PMV
Ich hab gehoft das ihr einer schon nen bischen mehr Erfarung
damit hat, aber ist wohl nicht so ... von daher nur "kurz":

Die Links mit den Lösungen verweisen auf Shader-Programme.
Auch dein letzter Link tut das. Nichts weiter, als was Nic bereits
angesprochen hat. Ich kann dir leider nicht weiter helfen, weil
das Thema zu komplex ist. Und ich mich damit auch noch nicht
befasst habe ... aber drum rum kommt man wohl nicht.
Da gibt es nichts "einfaches". Es klingt im ersten Moment so,
als müsste es einfach zu bewerkstelligen sein. Die Threads lesen
sich allerdings auch so, als wäre es nicht ganz so kompliziert, wie
ich befürchtet hab. Aber 3D ist ein sehr komplexes Thema.
Und hier geht es bisher nicht um einen Bug in Bezug auf Schatten.

Die Theorie der Lösung:
Das Shader-Programm ist dafür da, um den Alphawert eines Pixels
zu überprüfen. Wenn der von der Textur kleiner ist als X, dann wird
dem "Shadow Caster" gesagt, hier kein Schatten. Implementiert wird
das über ein Material-Script, das wohl ein extra "Shadow Caster" definiert
und referenziert, welches wiederrum auf das Shader-Program verweist.
Wenn ich das so richtig verstanden hab, wäre das unabhängig von der
PB Implementierung und somit sollte das in der OGRE-Doku stehen.

Ich denke aber, das hast du auch selber schon verstanden. Vielleicht
findet sich ja doch jemand, der es hin kriegt. Würde ich übrigens
auch begrüßen. :mrgreen:

MFG PMV

Re: Worldshadows() + Terrain + Alphakanal ---> Grotesk

Verfasst: 31.05.2013 10:02
von Chimorin
@PMV:

Jop, verstanden habe ich das schon. Ich durchforste mal die OGRE-Doku.

Die Schattenbugs beziehen sich im Moment erstmal auf die recieve-Fähigkeit des Terrains, bei welchem dieses verbuggt ist.
http://www.purebasic.fr/english/viewtop ... =4&t=54353
Wie es in meinem letzten Link steht, müsste der Typ "TextureAdditive", wenn es wirklich dieser Typ ist, solch einen Shader in sich tragen.