Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

  • »BlueCobold« ist der Autor dieses Themas

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

1

06.05.2011, 14:56

Teile einer Textur animieren

Moin,

ihr kennt doch sicher die roten und blauen Linien, welche in Wellen über den Anzug von Tosh und Kerrigan in Starcraft II laufen. Wie würdet ihr sowas umsetzen?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

06.05.2011, 15:33

mir würde spontan ein teil der textur einfallen, der aus aufeinandergestapelten rechtecken bestehen:



(Link)

Uploaded with ImageShack.us

eine ist weiss die andere schwarz. diese wird einfach im shader mit der zeit verschoben und farbe * pixel dargestellt. ansonsten ein bisschen bloom und bump sollte das dem recht nahe kommen.

BlueCobold

Community-Fossil

  • »BlueCobold« ist der Autor dieses Themas

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

06.05.2011, 15:41

Das Bloom und Bump interessiert mich weniger, nur die Wellen, die über die Textur laufen. Eine Verschiebung sehe ich da irgendwie nicht wirklich praktikabel. Wie soll das funktionieren? Verstehe die Idee mit den "Rechtecken" irgendwie nicht.

Ich persönlich habe eher an eine Alpha+Gradientmap in einem gedacht, bei dem der Gradient als Zeitlinie verwendet wird und man gewisse Bereiche dann passend einfärben kann (0..100 = rot-Verlauf oder 100..200 rot-Verlauf oder 200..300 rot-Verlauf, je nach Zeit-Offset). Ähnlicher einer Paletten-Verschiebung auf einer zusätzlichen Map.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

4

06.05.2011, 16:35

Geht das nicht auch mit Volumentexturen?

BlueCobold

Community-Fossil

  • »BlueCobold« ist der Autor dieses Themas

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

06.05.2011, 16:39

Geht sicher, allerdings ist das eine ziemliche Speicherverschwendung, wenn man eine hohe Textur- und Animations-Qualität will.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

6

06.05.2011, 16:44

Ich persönlich habe eher an eine Alpha+Gradientmap in einem gedacht, bei dem der Gradient als Zeitlinie verwendet wird und man gewisse Bereiche dann passend einfärben kann (0..100 = rot-Verlauf oder 100..200 rot-Verlauf oder 200..300 rot-Verlauf, je nach Zeit-Offset). Ähnlicher einer Paletten-Verschiebung auf einer zusätzlichen Map.


Genau so würde ich es auch tun, einfach mit dem Alphakanal festlegen wo der Glow sichtbar sein soll und mit den RGB Kanal festlegen zu welchem Zeitpunkt der Texel sichtbar sein soll. Um ganze 8 Bit nicht unbedingt zu verschwenden kann man natürlich auch noch den Alphakanal hinzuziehen und alle Bereiche unsichtbar halten welche mit 0,0,0,0 befüllt sind.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

06.05.2011, 16:44

Du könntest jedem Vertex einfach ein weiteres float-Attribut geben für den Zeitpunkt zu dem es leuchten sollte, (vertex_time - current_time) interpolieren und eine Alphamaske drüberlegen. Damit sparst du evtl. eine komplette weitere Textur (der eine Kanal lässt sich sicher irgendwo unterbringen) und hast keine Genauigkeitsprobleme (die du bei nur 8bit für die Zeit evtl. hättest). TrommlBomml hat aber mehr oder weniger eh schon was ähnliches vorgeschlagen...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (06.05.2011, 16:53)


BlueCobold

Community-Fossil

  • »BlueCobold« ist der Autor dieses Themas

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

06.05.2011, 17:26

Wieso denn 8 Bit für die Zeit? Ich sehe da 24 Bit, weil ja nur 8 für den Alpha-Kanal draufgehen. Allerdings bräuchte man zum Zeichnen des Verlaufs ein Custom-Painter-Tool, da solche notwendigen Verläufe in 3 Farb-Kanälen als "einzelner Kanal" sicher nicht von Gimp oder Photoshop unterstützt werden.

Die Sache mit den Vertex-Attributen ist interessant. Allerdings hieße das ja auch, dass man das Modell passend modellieren muss statt nur die Textur. Das ist relativ unflexibel, oder nicht? Und bei großen Polygonen würde immer die ganze Fläche leuchten und nicht nur ein kleiner Teil darauf (das gesamte maskierte Stück natürlich nur, nicht das gesamte Polygon).
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »BlueCobold« (06.05.2011, 17:31)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

06.05.2011, 17:32

Allerdings bräuchte man zum Zeichnen des Verlaufs ein Custom-Painter-Tool, da solche notwendigen Verläufe in 3 Farb-Kanälen als "einzelner Kanal" sicher nicht von Gimp oder Photoshop unterstützt werden.

Und du musst das ganze im FragmentShader zu einem sinnvollen Wert zusammensetzen.

Die Sache mit den Vertex-Attributen ist interessant. Allerdings hieße das ja auch, dass man das Modell passend modellieren muss statt nur die Textur. Das ist relativ unflexibel, oder nicht?

Evtl. nicht ganz so flexibel wie eine extra Textur, wobei: Ich wär mir nicht so sicher ob das Malen von so einer Spezialtextur am Ende nicht sogar anstregender ist als einfach solche Texcoords zu erzeugen. Ka was deine Modeling Software da so hergibt, aber in einigen Programmen kannst du direkt Vertexweights auf dein Model painten etc. Und es hat eben auch potentielle Vorteile was Performance und Speicherverbrauch angeht.

Und bei großen Polygonen würde immer die ganze Fläche leuchten und nicht nur ein kleiner Teil darauf (das gesamte maskierte Stück natürlich nur, nicht das gesamte Polygon).

Versteh nicht ganz was du damit meinst.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (06.05.2011, 17:40)


BlueCobold

Community-Fossil

  • »BlueCobold« ist der Autor dieses Themas

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

06.05.2011, 17:40

Jo, im Fragment-Shader zusammenbauen...
time_value = (100*map.r + 10*map.g + map.b) / 111.f;
Nicht gerade kompliziert oder time-consuming.

Eine extra Textur ist das natürlich, da liegt der Nachteil. Aber gut, was hat man heutzutage so alles?
- Bump-Maps/Normalmaps
- Diffusemaps
- Specularmaps
...

Zu dem Problem mit Vertex-Attributen: Man könnte nie ein Polygon formen wie das folgende:
»BlueCobold« hat folgendes Bild angehängt:
  • Untitled-1.png
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (06.05.2011, 17:47)


Werbeanzeige