"realistische" Laserstrahlen in 3D
Übersicht

DonnerBetreff: "realistische" Laserstrahlen in 3D |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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: ![]() Wie kann ich diese Effekte auch in B3D umsetzen? ThX[/img] |
||
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
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: 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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? |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Sprites sind ansich schon eine gute Wahl. ![]() 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. ![]() [/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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm.. ich versteh jetzt niht ganz wie du das meinst.. Könntest du mal n Beispiel machen?
THx |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Ohh puh, ich kann Dir spontan nur ein Ergebnis aus einem alten Projekt zeigen. ![]() ![]() ![]() Vielleicht sagst Du mir genauer, was Du nicht verstanden hast? wie die Textur aussehen soll? |
||
Donner |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
||
AvaGast |
![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Müsste die Textur dann so aussehen?
![]() (Zum vergrößern anklicken) |
||
![]() |
Black Spider |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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... |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
@Textur .... naja, in etwa so... *nick* ... musste halt mal mit rumprobieren ![]() 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. ![]() |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ava hat Folgendes geschrieben: @Textur .... naja, in etwa so... *nick* ... musste halt mal mit rumprobieren
![]() 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. ![]() 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 |
||
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group