"realistische" Laserstrahlen in 3D

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Donner

Betreff: "realistische" Laserstrahlen in 3D

BeitragSo, Okt 22, 2006 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Tag,

ich brauche für mein neues Projekt (in 3D - Weltraumshooter) noch Laserstrahlen. Das Schießen funzt auch soweit ganz gut, jedoch habe ich als Lasergrafikn bis jetzt nur zwei weiße Sprites.
Wie kann ich es machen, dass das ganze ein wenig realistisch aussieht?
Ich habe in Cinema4D mal ungefähr erstellt, wie ich es mir vorstelle:

user posted image

Wie kann ich diese Effekte auch in B3D umsetzen?

ThX[/img]

Blitzcoder

Newsposter

BeitragSo, Okt 22, 2006 12:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Am einfachsten ist es sicher, wenn du einen Würfel machst, den langziehst, und entsprechend positionierst. Sollen die Laserstrahten denn durchgehend von der waffe bis zum Gegner gehen, oder nur 1 M lang sein und sich bewegen? Dann machst du eine Textur, und die tust du auf einen Würfel. Natürlich sollte sie Alpha haben, denn sonst sieht man, dass es ein Würfel ist.
Du kannst natürlich auch nur eine Lange platte nehmen, aber ich denke ein Würfel mit 4 Seiten ist besser.

Als textur, in etwa sowas von allen 4 Seiten auf den Würfel oder Zylinder:
user posted image

MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
  • Zuletzt bearbeitet von Blitzcoder am So, Okt 22, 2006 14:43, insgesamt einmal bearbeitet

Mr.Keks

BeitragSo, Okt 22, 2006 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
also, würfel ist da wohl die falsche wahl... für gewöhnlich kreuzt man zwei/drei quads!

oder man kann es auch mit komplexeren konstruktionen machen. oder eine lange kette von partikeln. oder eine simple form (zylinder) mit bloomfilter drüber.... soooooo viele möglichkeiten (=
MrKeks.net
 

Donner

BeitragSo, Okt 22, 2006 13:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Mr.Keks hat Folgendes geschrieben:
also, würfel ist da wohl die falsche wahl... für gewöhnlich kreuzt man zwei/drei quads!


Was heißt quads?

Wie ist das eigentlich mit sprites?
Wenn ich das obige Bild einfach als Sprite lade?
 

Ava

Gast

BeitragSo, Okt 22, 2006 13:16
Antworten mit Zitat
Sprites sind ansich schon eine gute Wahl. Smile
Was Du dann noch benötigst, ist eine schöne Textur mit einem intensiven Innenbereich und einem weitaus schwächeren Aussenbereich. Minimale Unregelmässigkeiten (zb. mit Hilfe eine schwachen Textur) können die Grafik dann anschliessend noch etwas weniger steril wirken lassen. Dann Sprite und Lasertextur in B3D zusammenpacken, ein EntityFX (leuchtend) und EntityBlend (additiv) drauf und fertich. Smile


[/edit] ob Du Sprites verwenden kannst hängt von Deiner PErspektive ab und ob Du eine relativ feste oder freie Kamera verwendest. Bei freier Kamera mach es mit Quads (Quad = zwei Tris, die ein Quadrat bilden) und kreuze zwei davon.
  • Zuletzt bearbeitet von Ava am So, Okt 22, 2006 13:20, insgesamt einmal bearbeitet
 

Donner

BeitragSo, Okt 22, 2006 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm.. ich versteh jetzt niht ganz wie du das meinst.. Könntest du mal n Beispiel machen?

THx
 

Ava

Gast

BeitragSo, Okt 22, 2006 13:22
Antworten mit Zitat
Ohh puh, ich kann Dir spontan nur ein Ergebnis aus einem alten Projekt zeigen. Confused

user posted image
user posted image

Vielleicht sagst Du mir genauer, was Du nicht verstanden hast? wie die Textur aussehen soll?
 

Donner

BeitragSo, Okt 22, 2006 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, die Laser auf den Screens da sehen zwar gut aus, passen aber nicht so zu meinem Spiel... am besten wäre es schon, wenn ich es so wie in dieser C4D-Szene ganz oben hinbekommen würde...

Das Problem ist ja, dass ich die Leuchtfarbe und -Stärke in B3D nicht einstellen kann, so wie es in C4D geht.

Was ich bei dir nicht ganz verstanden habe, ist wie du das mit dem Innen und Außenbereich machst.

Wenn ich jetzt z.B. einen weißen, leuchtenden Strahl (Zylinder, Sprite o.ä.) habe, wie bekomme ich dann diesen.. blauen leucht-umriss da drum?

Danke
 

Ava

Gast

BeitragSo, Okt 22, 2006 13:36
Antworten mit Zitat
Zitat:
Das Problem ist ja, dass ich die Leuchtfarbe und -Stärke in B3D nicht einstellen kann, so wie es in C4D geht.


Doch das kannst Du indirekt über die Textur einstellen. Die Leuchtfarbe ist die Farbe die Du auf die Textur zeichnest und die Leuchtstärke ist die Helligkeit dieser Farbe in der Textur.

Zitat:
Wenn ich jetzt z.B. einen weißen, leuchtenden Strahl (Zylinder, Sprite o.ä.) habe, wie bekomme ich dann diesen.. blauen leucht-umriss da drum?


Diesen blauen Umriss bekommst Du nur, wenn Du einen Sprite oder ein gekreuztes Quad nimmst - bei einem gestreckten Cube oder Zylinder geht das nicht! (jedenfalls nicht direkt und nicht auf die selbe Weise, wie ich es erkläre)

Wie ich bereits schrieb ist es wichtig, einen "insensiven Innenbereich" und einen "weitaus schwächeren Aussenbereich" auf Deine Spritetextur zu zeichnen. Damit meinte ich die Helligkeit auf der Textur. Auf Dein Beispiel bezogen, wäre dies ein hell-weisser innerer Strahl, umgeben von einem dunklen blau.
 

Donner

BeitragSo, Okt 22, 2006 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Müsste die Textur dann so aussehen?

user posted image
(Zum vergrößern anklicken)

Black Spider

BeitragSo, Okt 22, 2006 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde ne Funktion für 3Dimensionale Linien schreiben. Sowas wollte ich schon vor einiger Zeit machen,
hier mal ein Ansatz:

Code: [AUSKLAPPEN]

Type 3DL
Field mesh
Field surf
Field th
Field ind
End Type

Funktion 3DLine(ax#, ay#, az#, ex#, ey#, ez#, thick=.1)

;ax - az stehen für Anfang X - Anfang Z
;ex - ez somit für Ende X - Ende Z
;(also ax, ay, az geben den anfang der Linie an und ex, ey und ez das Ende)
;thick hat den Defaultwert .1, und gibt an wie dick die Linie sein soll

l.3dl = New 3dl

l\mesh = CreateMesh()
l\surf    = CreateSurface(l\mesh)
l\th  = thick / 2

l\ind = AddVertex(l\surf,ax-l\th,ay-l\th,az-l\th) ;erster Punkt am Anfang
AddVertex(l\surf,ax+l\th,ay+l\th,az+l\th) ;zweiter Punkt am Anfang
;hier +l\th, da ansonsten die beiden Punkte aufeinander lägen
AddVertex(l\surf,ex-l\th,ey-l\th,ez-l\th)
AddVertex(l\surf,ex+l\th,ey+l\th,ez+l\th) ; das gleiche nur am Ende

AddTriangle l\ind,l\ind+1,l\ind+2
AddTriangle l\ind+1,l\ind+3,l\ind+2
;doppelseitig
AddTriangle l\ind,l\ind+2,l\ind+1
AddTriangle l\ind+1,l\ind+2,l\ind+3

Return l\mesh

End Function


hab´ jetzt nicht ausprobiert ob´s Funktioniert, aber das wäre jetzt der Ansatz den ich gemacht hätte.
Werde in kürze sowiso eine richtige Funktion dazu basteln um Laserschranken darzustellen,
aber vll. hilft dir das ja...
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif
 

Donner

BeitragSo, Okt 22, 2006 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Black Spider hat Folgendes geschrieben:
Ich würde ne Funktion für 3Dimensionale Linien schreiben. Sowas wollte ich schon vor einiger Zeit machen,
hier mal ein Ansatz(...)


Kommt das nicht aufs gleiche raus wie ein Zylinder? Das Problem ist ja eigentlich die textur...
 

Ava

Gast

BeitragSo, Okt 22, 2006 14:16
Antworten mit Zitat
@Textur .... naja, in etwa so... *nick* ... musste halt mal mit rumprobieren Rolling Eyes

Wenn Du aber wirklich einen Zylinder verwenden willst (warum?), dann kannst Du auch einfach nur diesen Zylinder entsprechend einfärben (d.h. Du brauchst nicht mal ne Textur). Anschliessend noch 1-2 weitere Zylinder um den eigentlichen Schuss legen, diese etwas grösser skalieren, beliebig einfärben und den Alphawert runtersetzen.

Ist aber keine so elegante Lösung. Rolling Eyes

Mr.Keks

BeitragSo, Okt 22, 2006 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image

die ganzen laser sind eingefärbte zylinder... (es ist unerheblich, wie lang man sie zieht xD) es ist in etwa avas methode.. also einige zylinder ineinander und eingefärbt. darüber noch ein bloomfilter, der dem cinema4dglühen recht nahe kommt. ein bloomfilter geht so: man rendere die szene in niedriger auflösung (128x128) auf eine textur, blure die textur und packe das ganze auf ein sprite vor die cam.
MrKeks.net
 

Donner

BeitragSo, Okt 22, 2006 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ava hat Folgendes geschrieben:
@Textur .... naja, in etwa so... *nick* ... musste halt mal mit rumprobieren Rolling Eyes

Wenn Du aber wirklich einen Zylinder verwenden willst (warum?), dann kannst Du auch einfach nur diesen Zylinder entsprechend einfärben (d.h. Du brauchst nicht mal ne Textur). Anschliessend noch 1-2 weitere Zylinder um den eigentlichen Schuss legen, diese etwas grösser skalieren, beliebig einfärben und den Alphawert runtersetzen.

Ist aber keine so elegante Lösung. Rolling Eyes


naja, ich dachte, dass es mit Zylindern am besten aussieht. Vielleicht ist es ja auch nicht so ^^
Das klingt für mich aber am logischsten...

Vielen Dank für die Anleitung, ich werde es gleich ausprobieren.



Mr. Keks hat Folgendes geschrieben:
die ganzen laser sind eingefärbte zylinder... (es ist unerheblich, wie lang man sie zieht xD) es ist in etwa avas methode.. also einige zylinder ineinander und eingefärbt. darüber noch ein bloomfilter, der dem cinema4dglühen recht nahe kommt. ein bloomfilter geht so: man rendere die szene in niedriger auflösung (128x128) auf eine textur, blure die textur und packe das ganze auf ein sprite vor die cam.


Das mit dem Bloom-Filter hab ich jetzt noch nicht ganz verstanden...
Also, ich erstelle die Laser mit Cinema4D(?) und rendere sie in 128x128. Das Renderbild mach ich zu ner Textur und "blure" es.. Aber wie "blure" ich es?

THx

Blitzcoder

Newsposter

BeitragSo, Okt 22, 2006 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, du blurst das von BB gerenderte. Dann kommt eben so ein Verschwimmungseffekt heraus, der die hellen Stellen "Glühen" lässt.
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

5k41

BeitragSo, Okt 22, 2006 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein du renderst die Szene in Blitz auf eine Textur, verwischst diese Textur etwas, und setzt sie dann auf einem Sprite vor die Cam. Aber Inarie oder Mr.Keks, wie machst du das Bluren genau? So wie Krümel im Codearchiv? ( Hab den Code immer noch nicht ganz verstanden, also hat wohl was mit der Texelinterpolation zutun, aber wieso genau das so funtzt hab ich noch nicht ganz verstanden Wink )

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Blitzcoder

Newsposter

BeitragSo, Okt 22, 2006 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/foru...ight=blitz

Wenn du die Linie etwas begradigst...
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
 

Donner

BeitragSo, Okt 22, 2006 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitzcoder hat Folgendes geschrieben:
Nein, du blurst das von BB gerenderte. Dann kommt eben so ein Verschwimmungseffekt heraus, der die hellen Stellen "Glühen" lässt.


Aso. Dazu noch folgende Fragen:

1. Wie rendere ich etwas in einer so niedrigen Auflösung (128x128)???
2. Soll ich also einfach einen Screenshot machen und den dann vor die Cam setzen?
3. Gibt es zum "bluren" Funktionen etc?

skey-z

BeitragSo, Okt 22, 2006 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, keinen screenshot, du erstellt ne cam mit dem viewport 0, 0, 128, 128, diese cam ist an der gleichen position wie deine hauptcam.
mit copyrect nimmst du das bild vom backbuffer und copierst es in eine textur.
diese textur versiehst du mit einem Blur-Effekt, aber frag mich nicht wie das genau funktioniert, da habe ich noch keine Erfahrung mit.

Im Anschluß versiehst du ein Sprite, welches den gesamten bereich deiner Hauptcam bedeckt mit dieser geblurten Textur und setzt den alpha Wert etwas runter, damit die szene auch dargestellt wird.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group