Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 08, 2025 20:40

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 2 Fragen zu Partikeln
BeitragVerfasst: Mi Jan 22, 2003 17:31 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Hallo!

Ich hätte da einmal 2 Fragen zu Partikeln:
1) Wie erstelle ich am besten Partikel, wenn ich mit ihnen eine Rauchwolke erzeugen will?
2) Wie erstelle ich 3D-Partikel? (Ich möchte mich um diese Rauchwolke herumbewegen können und die Partikel nicht wie bei normalen 2D-Partikeln nur aus einer Position richtig sehen können.)

Mari


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 17:50 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
2: Mittels Billboarding ^= Plätten einiger Werte aus der Modelview Matrix. Im Kameratutorial mach ichs vor, einfach mal reinschauen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 18:47 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 02, 2002 18:06
Beiträge: 299
Wohnort: Dresden
@ Delphic Billboarding heißt doch das diese Partikel immer Senkrecht zur Kamera stehen

1. Einfach mit ner ordentlichen Textur, langsam aufsteigenden Partikeln, sowas halt
2. Billboarding is dafür das Richtige

_________________
"Ich würde ja gern die Welt verändern, aber Gott gibt mir den Quelltext nicht"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 19:26 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Zitat:
@ Delphic Billboarding heißt doch das diese Partikel immer Senkrecht zur Kamera stehen

Genau und das macht man am schlausten, indem man die Modelviewmatrix verbiegt, oder indem man die Koordianten selber errechnet - nich so prickelnd - geschwindigkeitsmäßig müsste man mal rumprobieren, aber ich glaube matrix plätten ist schneller


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 19:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
Zitat:
@ Delphic Billboarding heißt doch das diese Partikel immer Senkrecht zur Kamera stehen

Genau und das macht man am schlausten, indem man die Modelviewmatrix verbiegt, oder indem man die Koordianten selber errechnet - nich so prickelnd - geschwindigkeitsmäßig müsste man mal rumprobieren, aber ich glaube matrix plätten ist schneller


Oder man versteift sich auf GF3/GF4-Karten und nutzt die praktische (und wohl auch am schnellsten) NV_point_sprite-Extension, mit der normale GL_POINTS als texturierte Billboards ohne eigene Berechnungen oder Verbiegungen der Modelansichtsmatrix dargestellt werden können.
Wers jedoch selbst machen will, der kann entweder (wie DelphiC) schon sagt die Koordinaten selbst errechnen, oder muss jeden Partikel an seinen Platz verschieben und dann entgegengesetzt des Betrachtungsblickwinkels rotieren.Ob diese Methode langsamer ist, sei mal dahingestellt.

Zu der Frage mit den Rauchpartikeln :
Bastel dir halt ein ganz normales Partikelsystem (wie oben beschrieben per Billboarding) und benutze für die Partikel eine Rauchwolkentextur (wird sich im Netz wohl leicht finden lassen).
Nun lässt du jeden Partikel langsam aufsteigen und verringerst gleichzeitig seinen Alphawert, so das die Partikel nach oben hin durchsichtiger werden.Wenn der Alphawert unter Null sinkt, kannst du den Partikel am Boden wieder neuspawnen.
Um der Ganzen Sache noch etwas an Dynamik zu geben, solltest du alle Partikel zufällig z.B. in einer Sinuskurve nach oben steigen lassen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 19:46 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Ich muss widersprechen - meine Geforce 2MX unterstützt auch GL_NV_point_sprite - und das auch ohne NV30 Emulation


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 22, 2003 19:52 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
Ich muss widersprechen - meine Geforce 2MX unterstützt auch GL_NV_point_sprite - und das auch ohne NV30 Emulation

O.K. hab grad mal im nVidia-OpenGL-Spezifikations-Dokument nachgeshen.Da steht drinne, das Karten der GeForce1/2-Reihe dieses Feature seit dem 35.xx Treiberrelease unterstützen, dies geschieht dann wohl aber auf Softwareebene...

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 23, 2003 00:45 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 06, 2002 20:27
Beiträge: 479
Wohnort: Bremen
Wenn du ganz neu bei Partikel-Effekten bist empfehle ich dir das Tutorial Partikel I hier auf DGL (unter Misc & Samples) Da erkläre ich ein paar nützliche Grundlagen, die dich auf den richtigen Weg bringen sollten.

Auf www.minfos.de findest du einen ziemlich guten Artikel der von Marty ins Deutsche übersetzt wurde und Partikelsysteme erläutert.

Außerdem hab ich auf meiner <a href='http://pixelpracht.flipcode.com' target='_blank'>website</a> eine Demo die die Verwendung meiner PartikelEngine PixelprachtFX demonstriert. Wenn du mehr als nur den Raucheffekt machen willst, würde es sich evtl lohnen sich in die (frei zu benutzende) Engine einzuarbeiten.

Und zum Abschluss noch was über's Billboarding. Folgenden Code verwende ich in meiner Engine:


Code:
  1. procedure fxBillboardBegin;
  2.  
  3. var x,y : byte;
  4.  
  5.  &nbsp; &nbsp;Matrix : array[0..15] of single;
  6.  
  7. begin
  8.  
  9. //save original Matrix
  10.  
  11.  glPushMatrix;
  12.  
  13.  glGetFloatv(GL_MODELVIEW_MATRIX, @Matrix);
  14.  
  15.  for x := 0 to 2 do
  16.  
  17.  &nbsp;for y := 0 to 2 do
  18.  
  19.  &nbsp; if x=y then Matrix[x*4+y] := 1 else Matrix[x*4+y] := 0;
  20.  
  21.  glLoadMatrixf(@Matrix);
  22.  
  23. end;
  24.  
  25.  
  26.  
  27.  
  28.  
  29. procedure fxBillboardEnd;
  30.  
  31. begin
  32.  
  33.  &nbsp;//restore original Matrix
  34.  
  35.  &nbsp;glPopMatrix;
  36.  
  37. end;


Dabei geht allerdings nicht nur die Rotation sondern auch die Skalierung verloren. Lediglich die Translation bleibt erhalten...

-lith

_________________
Selber Denken macht klug!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 23, 2003 14:19 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 02, 2002 18:06
Beiträge: 299
Wohnort: Dresden
Oder du schreibst dir ein kleines Vertex-Programm dafür. Ist die schnellste Methode und es gibt richtig gute Ergebnisse. Wenn du willst kann ich mal hierhin posten, wie du so ein Vertex-Programm einbetten kanst (Ich habs auch nur durch Zufall erfahren). Is alles garnicht so schwer, wie es sich anhört.

_________________
"Ich würde ja gern die Welt verändern, aber Gott gibt mir den Quelltext nicht"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 23, 2003 18:47 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 06, 2002 20:27
Beiträge: 479
Wohnort: Bremen
schieß los. interessiert mich auch! ;) evtl. wär das um die engine noch etwas performanter zu machen.

_________________
Selber Denken macht klug!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 24, 2003 17:52 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 02, 2002 18:06
Beiträge: 299
Wohnort: Dresden
O.K. also ich werd ne kleine HTML-Seite vorbereiten und dann hochladen (is bissle viel für das Forum)

_________________
"Ich würde ja gern die Welt verändern, aber Gott gibt mir den Quelltext nicht"


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]