Probleme mit Sprites auf "Entfernung"
Übersicht

RaoudiBetreff: Probleme mit Sprites auf "Entfernung" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Guten Tag,
ich habe folgendes Problem: Wenn ich ins Wasser schieße, entstehen Wasserringe (Sprite). So ist es gedacht: ![]() Allerdings gibt es eine gewisse Grenze; Man sieht den Sprite nur richtig, wenn er sich in der unmittelbaren Mitte der Sicht befindet. (Wenn ich mich auf ihn zubewege, wird er wieder deutlich.) ![]() Wie wäre das zu korrigieren? |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das könnte vielleicht am Mipmapping liegen.
Versuch mal ClearTextureFilters, bevor du das Sprite/die Textur lädst. |
||
Raoudi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Habe versucht es überall einzusetzen, hilft leider nicht. | ||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Welche Texture Flags hast du beim Laden des Sprites angegeben? | ||
Raoudi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sprite:
Code: [AUSKLAPPEN] spr_waterring = LoadSprite("res\water2.png",2)
Textur: Code: [AUSKLAPPEN] tex_water = LoadTexture("res\water.png")
-------- Editiert: Habe eine weitere Entdeckung gemacht: wenn ich den Alpha-Wert des Wassers auf null setze (sodass es nicht mehr sichtbar ist), funktionieren die Ringe auch auf eine hohe Distanz. ![]() |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja, es liegt offensichtlich daran, dass die sprites sich eben auf wasserniveau befinden und je nach kameraposition mal über und mal unter dem wasser gezeichnet werden. lässt sich mit entityorder, klarerer positionierung oder umstieg der sprites auf blendmode3 lösen. | ||
MrKeks.net |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
aus diesem 3ten Screen wäre die Schlussfolgerung zu schließen, dass du die Sprites genau auf der y-Positione des Wassers erstellst, versuche mal die y-Koordinate um wenige millimeter(0.01 oder so) nach oben zu setzen. | ||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
Raoudi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Merkwürdigerweise funktioniert es an manchen Stellen der map problemlos (auch ohne Erhöhung der Sprites), an anderen aber gar nicht. Der Blend-Mode hat leider auch nichts gebracht.
Auch komisch ist, dass es anscheinend davon abhängt, von wo ich schieße (bzw wo die Kamera ist). Das Ganze erscheint mir ziemlich unlogisch.. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein
ZBuffer ungenauigkeit. Bist du im 16 Bit Modus (denn dort wird das Problem noch viel schöner) oder im 32Bit Modus? Hat deine Kamera intelligente Reichtweiten? Denn du brauchst ja keine gigantische Sichtweite in diesem Einsatzfall. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Raoudi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Habe jetzt den 16Bit Modus drin, macht allerdings gar keinen Unterschied.
Die Reichweiten der Kamera würde ich nicht unbedingt intelligent nennen, aber auf die Weise sieht es besser aus. Code: [AUSKLAPPEN] CameraRange cam,0.1,5000
Mit einer Range von zB. 1000 sieht das Wasser im Hintergrund "abgeschnitten" aus. Einen Unterschied bei meinem Spriteproblem macht es nicht. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Faktor 5000 kann durchaus solche Tiefenbufferprobleme herbeiführen.
Anstatt wasser in die Ewigkeit fortzusetzen würdeste da sinnvollerweise besser einen Hintergrund nehmen oder eine zweite Kamera die nur 1000,5000 rendert damit die Sprite Cam nicht in ZBuffer Probleme rennt. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Raoudi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das kann gut sein, allerdings scheint das auch nicht die Lösung zu sein. Ich habe die Kamera testweise auf 20-500 gemacht, ändert sich nichts. Ich bezweifle fast schon, dass es ein ZBuffer-Fehler ist, weiß es aber nicht genau.
Zur Verdeutlichung habe ich mal ein Video zusammengestellt: Zuerst sieht man es ähnlich wie auf den oberen beiden Screens. Auf Entfernung werden die Spritzer fast unsichtbar. Wenn ich aber aus einer anderen Position schieße, wird alles richtig dargestellt. http://home.arcor.de/raoudi/fehlervideo.wmv (~2,5mb) |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ne definitiv kein ZBuffer aber das sagte ich ja auch nicht.
Sieht allerdings irgendwie strange aus, denn als er im Sprung ist gibts das Problem nicht. wie bzw. auf was wird der sprite genau orientiert? vielleicht ist er da und man sieht ihn wegen der ausrichtung und mipmap einfach nicht (kannst testweise mal ladeflag +256 machen) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Raoudi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Befehle für den Sprite lauten wie folgt:
Code: [AUSKLAPPEN] ;Erstellen
wat.waterring = New waterring wat\sprite = CopyEntity(spr_waterring) wat\alpha = 0.75 wat\size = 20 SpriteViewMode wat\sprite,2 RotateEntity wat\sprite,90,0,0 PositionEntity wat\sprite,EntityX(bul\mesh),waterheight,EntityZ(bul\mesh) ;Schleife For wat.waterring = Each waterring PositionEntity wat\sprite,EntityX(wat\sprite),waterheight+1,EntityZ(wat\sprite) If cam_inwater=1 RotateEntity wat\sprite,-90,0,0 Else RotateEntity wat\sprite,90,0,0 If wat\alpha > 0 wat\alpha = wat\alpha-0.5*looptime wat\size = wat\size+20*looptime EntityAlpha wat\sprite,wat\alpha ScaleSprite wat\sprite,wat\size,wat\size Else FreeEntity wat\sprite Delete wat EndIf Next Der Ladeflag 256 behebt das Problem auch nicht. -------- Editiert: Hier sieht man eine weitere Merkwürdigkeit: der Laserstrahl sollte eigentlich durchgehend rot sein, allerdings .. ist er es nicht. ![]() ------- Nochmal editiert: Wenn das Alpha des Wassers 1 oder 0 ist, funktioniert alles, sogar der Laserstrahl. Sollte aber schon transparent sein.. |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
ist nur ne idee aber villeicht ligt es an deiner graka meine setzt zb gerne eine 1-pixel linie auf den bildschirm hatte mal ein thema dazu eröffnet hier un im englischen forum aber keiner sieht die linie.... villeicht liegt hier ein ähnliches problem vor | ||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hatte da auch mal so ein Problem mit Alpha. Da werden manche Objekte bzw. Polygone in der falschen Reihenfolge angezeigt.
Versuch mal, statt Alphablending Masking zu verwenden. |
||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei einem Wasserring Flag4 statt Flag2? Wie sieht das denn aus? ^^
Es gibt Probleme bei bestimmten Abständen der Flag2 Objekte (dein Fall Wasserringe) zum anderen Flag2 Alpha Objekt (dein Fall Wasser). Diese Z-Buffer Probleme schieben manchmal Objekte die sonst vor dem einen Alphaobjekt liegen dahinter. Verwende für das Wasser lieber einen Mirror, oder eine Cubemap + Wassertextur... Beispiel dafür: http://marinext.ma.funpic.de/i...being1.PNG MfG. |
||
Raoudi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
In Ordnung. Werde mir also die Alternativen ansehen müssen, danke für die Antworten. | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du könntest auch einen weiteren test einbauen. Alpha nur von 1 - 0.48
damit sollte das alpha tiefenbuffer problem, falls es es wäre, nicht eintreten. aber dein verschwindender Laser da macht mir eigentlich mehr sorgen. Ich würde dazu raten, double render zu nutzen um mal zu testen ob das wasser da reinfunkt. einfach erst mal nur wasser und level rendern, restliche entity gehided. dann camclsmode umstellen und die dynamischen objekte wie laser, wasser und dein pacman rendern oben drüber. damit sollte es eigentlich funktionieren. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group