Einschusslöcher auf Terrain - grübel...
Übersicht

![]() |
x-pressiveBetreff: Einschusslöcher auf Terrain - grübel... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich brüte im Moment darüber, wie man es anstellen könnte, das auf dem Terrain (das ziemlich bergig ist) an jenen Stellen, an denen ein Geschoss auftrifft, Einschusslöcher bzw. Schmauchspuren entstehen (das können mit der Zeit schon ein paar hundert werden, da recht viel geballert wird). Mir fallen hier zwei Methoden ein:
1.) Sprites, die man quasi an dieser Stelle auf das Terrain 'nagelt'. Das würde aber bestimmt Vertex-Manipulation voraussetzen (was ich bisher gerne vermieden habe) und ausserdem auch, bei einigen hundert Einschusslöchern auf die Performance drücken. 2.) Einfach ein Einschussloch an der betreffenden Stelle auf die Terrain-Textur malen. Dazu bräuchte man aber wohl eine Methode, die UV-Koordinaten der Terrain-Textur an jener Stelle zu ermitteln, oder? Könnte mir jemand einen Tipp geben, bzw. gibt es dazu irgendwo ein Beispiel? |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Sparx |
![]() Antworten mit Zitat ![]() |
---|---|---|
2. möglichkeit würde ich ausschließen. Ist es nicht so, dass wenn man auf die textur malt, dass dann diese Einschusslöcher genau wie die textur wiederholt würden?
1. ist imprinzip die beste, vieleicht gibts noch ne andere möglichkeit, weisz ich aber gerade nicht. |
||
User posted image |
![]() |
eizdealer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist abhängig von der Grösse des Terrains und davon, ob sich die Textur darauf wiederholt. Wenn nicht, würde ich Version 2 nehmen. Ich denke die UV Koordinaten aus X und Z Koordinaten zu berechnen wäre nicht allzu schwierig.
Ansonsten müsstest du tatsächlich mit Sprites arbeiten, jedenfalls fällt mir nix anderes ein. |
||
IonPainter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
kannst näturlich mit multitexturing auch ne zweite tex auf das terrain legen, dann gehen beide methoden... | ||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry, habe vergessen zu erwähnen, das sich die Textur NICHT wiederholt. Deswegen fände ich es einfacher, direkt auf die Textur zu malen, bevor ich extra eine komplette Quad-Engine basteln muß, oder so.
Wie kann ich denn am ehesten die globalen Koordinaten der Einschusstelle auf dem Terrain in relative Koordinaten umwandeln, also den X/Y-Offset vom Rand des Terrains bis zur Einschußstelle ermitteln? Diese dann in UV-Koordinaten zw. 0 und 1 umzuwandeln, ist dann ja kein Problem mehr. Kommt man hier mit PICK weiter? |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
imagodespira |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich weiss nicht... kann mir nicht vorstellen, daß auf einem Terrain die Textur so auflösend ist, wenn sie nicht gekachelt ist, dass man einschusslöcher noch draufmalen kann.... Wenn ich ein durchschnittlich grossen Terrain habe und die Textur nicht wiederhole ist ein pixel riesig, somit auch riesige Einschusslöcher... Das Thema würde mich auch interessieren habe es bis jetzt mit Sprites gelöst, geht auch ganz gut nur weiss ich nicht wie ich es an Ecken mache... Das Sprite guckt über die Ecken drüber... Ich picke nicht, ich schiesse aus meiner Waffe ein 3d-Objekt heraus. Prüfe es auf kollision, wenn kollidiert setze ich ein sprite an die stelle (verschiebe es ein wenig um Z, damit es nicht in der Wand verschwindet). Danach richte ich es nach dem "Vektor" aus an dem es geprallt ist, etwa so: AlignToVector b\entity, collisionnx(a\entity, col), collisionny(a\entity, col), collisionnz(a\entity, col), 3 Danach hat es die richtige Richtung. Manchmal stimmt leider das mit der z-verschiebung nicht, weiss noch nicht woran das liegt... Wand und Sprite überlappen sich dann teilweise... Vielleicht hilft es weiter, das mit der Textur würde mich interessieren. Überhaupt wie Ihr anderen so etwas löst... Danke! |
||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe mir das noch mal durch den Kopf gehen lassen -das Zeichnen auf die Terraintextur ist vielleicht doch nicht ganz ideal, da die Auflösung relativ hoch sein müsste, damit das nicht pixelig wirkt. Unter 512x512 Pixel braucht man das gar nicht versuchen. Und eins ist sicher: bei Spielen wie Unreal Tournament und Co. wurde das nicht so gelöst (dafür sind die Blutspritzer viel zu detailiert ![]() Besser wären Decals, also flache Aufkleber, die man an die jeweilige Stelle setzt -so, wie du es beschrieben hast, Imago. Allerdings: da man mitunter hunderte von diesen Decals bräuchte, sind Sprites nicht geeignet, da jedes Sprite ein eigenes Surface besitzt (und bekanntermassen zwingen viele Surfaces Blitz3D bzw. die Grafikkarte eher in die Knie, als viele Polygone). Die Lösung wären selbstgemachte Sprites, also 'single surface quads', die man ja auch für Partikeleffekte benutzt, also simple Polygone aus jeweils vier Punkten, die sich aber alle nur eine einzige Surface teilen (also quasi alle in einem Mesh sind). Dadurch wird die Handhabung dieser Quads aber ein bisschen aufwendig, vor allem, weil man ja nicht nach belieben Triangles löschen kann (soweit ich weiß). Man müsste also mit einer festen Anzahl Quads auskommen. Nicht benötigte Quads könnte man im 'off' plazieren, wo man sie nicht sieht. Ausserdem müssten sich alle Quads eine Textur teilen, die man dann bei jedem einzelnen Quad erst per UV-Koordinaten anpassen müsste. Man müsste sich also eine kleine Quad-Library basteln mit folgenden Funktionen: -Erzeugen von Quads (die sich alle eine Surface teilen) -Anpassen der Textur auf jedem Quad -Plazieren von Quads (an Boden, Wand, etc.). Da man Quads sowieso nur verschieben kann, indem man die dazugehörigen Punkte versetzt, wäre es ja auch möglich, ein Quad so auf ein hügeliges Terrain zu setzen, daß sich dieses dem Boden anpasst. -Recycling. Wenn die maximale Anzahl an Quads erreicht ist, werden wieder die ersten Quads benutzt. Man müßte diese also in Types speichern, um Zugriff darauf zu erhalten. In jedem Type wären dann auch die dazugehörigen Vertices (oder deren Indizes) gespeichert. Hört sich nicht nach Spaß an, oder? Ich grüble schon länger darüber, und denke inzwischen, daß man um so eine Quad-Library nicht herumkommt. |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group