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

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

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

Beitrag 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
Zuletzt geändert von Chimorin am 15.04.2013 13:17, insgesamt 1-mal geändert.
Bild

- formerly known as Bananenfreak -
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

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

Beitrag 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?
Bild

- formerly known as Bananenfreak -
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

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

Beitrag 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. :)
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

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

Beitrag 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
Bild

- formerly known as Bananenfreak -
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

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

Beitrag 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?)?
Bild

- formerly known as Bananenfreak -
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

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

Beitrag 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.
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

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

Beitrag 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
Bild

- formerly known as Bananenfreak -
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

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

Beitrag 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
Bild

- formerly known as Bananenfreak -
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

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

Beitrag 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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

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

Beitrag 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.
Bild

- formerly known as Bananenfreak -
Antworten