Sprite auf Mesh "projezieren"

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

faeX

Betreff: Sprite auf Mesh "projezieren"

BeitragSa, Apr 30, 2011 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo liebe BB-Gemeinde Very Happy

Ich beschäftige mich gerade damit, Schadenstexturen auf Spielern darzustellen. Bei Wänden etc. sind Einschusslöcher kein Problem, da es sich um ebene Flächen handelt, sodass man ein einfaches Sprite (in einem Singlesurfacemesh) drüberlegen kann, ohne dass es groß auffällt. Bei Spielern habe ich aber das Problem, dass durch die Krümmungen in dem Mesh das Sprite sehr auffällt und arg doof aussieht. Confused

Meine Frage: Gibt es irgendwie die Möglichkeit dem Sprite einen bestimmten Blend-, Render- oder was auch immer Mode oder gewisse Eigenschaften zu verpassen, dass es sich von der Betrachtung her mehr oder minder an das Spielermesh anschmiegt? Ich hatte die Idee die Sprites in das Mesh reinzulegen und dann im Z-Buffer genau einen nach dem Mesh zu legen, sodass es immer drüber gerendert wird. Aber erstens geht das mit Blitz meines wissens nach nicht und zweites könnte das dann aus Betrachtungen von der Schräge doof aussehen, aber das kann ich eben nicht beurteilen. Wie würdet ihr das Problem lösen?

Direkt auf die Texturen zu zeichnen würde nicht funktionieren, da die Texturen dafür zu sehr von der direkten Oberfläche auf dem Spieler abweichen und wäre ganz davon ab zu performancelastig.

Btw.: Ich habe die FastExt, falls es da nochmal irgendwelche besonderen Zusatzfunktionen gibt die mir nicht aufgefallen sind, aber helfen könnten.

Vielen Dank schonmal im vorraus! Smile

EDIT: Okay, das klingt praktikabel. Mir fallen auf Anhieb ein paar Probleme ein, aber ich werde dieses Eyecandy erstmal nach hinten verschieben. Sobald ich irgendwas geschafft habe, poste ich den Code. Smile
  • Zuletzt bearbeitet von faeX am Mo, Mai 02, 2011 19:36, insgesamt einmal bearbeitet

Mr.Keks

BeitragSa, Apr 30, 2011 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, der einzige sinnvolle Weg, den ich gefunden habe, besteht darin, immer einen gewissen Umkreis der getroffenen Triangles in ein zusätzliches Surface zu kopieren. Das Surface texturiert man dann mit einem Einschussloch und clamp_u/v. Außerdem müssen den neu erstellten Triangles natürlich sinnvolle UV-Koordinaten gegeben werden (Transformation ins Bezugssystem des Einschlags oder sowas). Das ganze wird etwas Tricky, wenn du seeehr große oder sehr viele Triangles hast und erhöht die Anzahl der Polygone ziemlich krass, wenn ein Objekt dutzendfach getroffen werden kann. Habe das nur auf Raumschiffen verwendet, bei denen ein so heftiger Treffer in 90% der Fälle eh schon der halbe Weg zum Ableben ist xD.

(Es bietet sich auch an, die Triangles von größeren Objekten (Levels, z.B.), auf denen man solche Zerstörungstexturen plant, vorher in eine Bank zu schreiben, am besten dabei schon ein wenig so zu ordnen, damit man dann nicht bei jedem Einschlag alle Triangles des Meshes mit VertexXYZ durchiterieren muss.
MrKeks.net

faeX

BeitragSo, Jun 05, 2011 11:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Vieles hat sich getan, ich bin der Meinung, dass dieses Feature langsam implementiert werden könnte. Mein größtes Problem sind die verschiedenen Dreiecksüberschneidungen, da ich ja nicht einfach die Dreiecke kopieren kann, da sonst die UV-Koordinaten < 0 oder > 1 werden. Könntest du vielleicht den Codeausschnitt posten, wo du das geregelt hast? Nach dutzenden vollgekritzelten Zetteln mit ellenlangen Vektorrechnungen habe ich langsam die Schnauze voll. -.-

Mr.Keks

BeitragMo, Jun 06, 2011 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst die UV-Koordinaten anpassen und bei LoadTexture clampu/v setzen. Nen wirklich hilfreichen Codeausschnitt kann ich leider nicht posten, fürchte ich. Das ist in meiner Implementierung viel auf die konkrete Anwendung zugeschnittenes Rumgewurschtel mit Banks.
MrKeks.net

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group