Feuer proggen
Übersicht

joey_jokerBetreff: Feuer proggen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute,
kann mir jemand helfen ein feuer in blitz3D zu proggen??? Ich bin noch nich ganz soooo erfahren in 3D ![]() ![]() ![]() |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich benutz da immer sprites
aber mit ordentlichen mesh progging bekommt man feuer hin, welches um weiten besser ist |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
Cat |
![]() Antworten mit Zitat ![]() |
---|---|---|
Feuer sollte nicht allzu schwer sein, ich benutz da auch immer Sprites!
Am besten du benutzt Types, bestimmst die richtung in die die Feuersprites "fliegen" sollen und reduzierst nach einer bestimmten Zeit den Alpha-Wert eines jeden Sprites so siehts noch besser aus ![]() Zeit wieder zu löschen! Hab hier mal was ausgegraben: mfg |
||
Penthouse Pauper |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wahnsinn!
Haste 'zufällig' mal den Source Code + SpriteImages zum reinschnuppern? ![]() |
||
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich würde mir mit C4D per Pyrocluster und TP ne animierte Textur basteln und die dann auf die Sprites schieben. Jetzt weiß ich auch, was für ein Tut ich mal schreiben könnte ![]() |
||
MFG Darren |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Darren,
erklär mal für >C4D 9 Studio< wie das geht ^^ |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Cat
Wieviel Sprites benutzt du ungefähr dafür? Hast du da eine Textur drauf oder sind die per entitycolor farbig? Sry, bei sprites kenn ich mich nicht gut aus. |
||
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Für sowas solltet ihr auch Singesurface verwenden. Jedes Sprite ist ein eignes Surface, welches bei größeren Zahlen sehr an der performance ziehen. | ||
MFG Darren |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
tjoha, man sollte es mit partikeleffekten wirklich nicht übertreiben und da sparen und optimieren, wo es nur geht (da dieses einzelne feuer mit 20 fps ist zum beispiel schon für spiele irgendwie zu lahm xD). das verwenden animierter texturen auf sprites, wie es darren beschreibt, bietet sich zum beispiel schon mal dazu an. | ||
MrKeks.net |
![]() |
Cat |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Christoph
ich benutz eigentlich nur zwei Sprites, eins für das Feuer selbst und noch eins für den Rauch. Beide hab ich mit Entitycolor eingefärbt. Das war sozusagen mein erster kleiner Partikeleffekt den ich geschrieben hab. Aber ohne richtiges Singlesurfacing kann man eigentlich keine richtig schnelle und gute Partikeleffekte erzielen. @Penthouse Pauper Code wirst du hier nicht bekommen, man lernt nichts bei Copy & Paste, das hab ich mir zumindest immer eingeredet ![]() ![]() ![]() mfg |
||
Intel Core 2 Duo E6300 (2 x 1,86 Ghz)
2 x 1024 MB Arbeitsspeicher NVidia GeForce 8800 GT |
Penthouse Pauper |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Cat, das hast du missverstanden. Ich wollte nicht wildlinks rumkopieren, sondern ich schaue mir solche Dinge gerne an um davon zu lernen und schreibe meine Codes manchmal nach 'Inspiration' ![]() Es war einfach interessant für mich, weil ich mit Partikeln noch nicht gearbeitet habe. Bin neu in Blitz, davor habe ich in Java, C++, Python (+Panda3D), html, php und so weiter programmiert... Ging wirklich nicht ums rüberkopieren. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Cat: Du meinst 2 Meshes oder Surfaces, nicht.
Ein Sprite ist ein klar definiertes Objekt, nämlich ein Rechteck, das aus 2 Triangles besteht. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Cat hat Folgendes geschrieben: Ach ja, zu den Bildern, die hab ich mir schnell mal aus x-pressive's Particle Candy Demo "geklaut"
![]() ![]() lol ![]() @Inarie: Obiger Feuereffekt hat auf meinem Rechner 500 FPS(!), nicht 20. Die 20 FPS auf dem Screenie kommen entweder daher, das in diesem Programm noch etwas anderes läuft, oder einfach nur auf einem sehr lahmen Rechner ausgeführt wurde. Zum Thema: es gibt, wie schon gesagt, zwei Möglichkeiten: ![]() Nimm ein einzelnes Sprite und eine animierte Feuer-Textur. Die kann man sich, wie ebenfalls schon gesagt, z.B. mit C4D selber basteln. Ist aber nicht ganz so einfach, da die Animation nicht nur gut aussehen sollte, sondern auch "loop-fähig" sein muss, damit sie nicht abgehackt wird. Nachteil: die Flamme auf der Textur darf den Rand der Textur nicht berühren, da man sonst sehr stark erkennt, daß das Feuer "abgeschnitten" ist. Das vermindert natürlich den zur Verfügung stehenden Platz auf der Textur enorm. ![]() Benutze eine Partikel-Engine dafür oder bastel dir selbst eine. Für Partikel-Effekte Sprites zu benutzen, ist für einen Blitz-Coder ein Armutszeugnis, wie ich finde. Das kann man nicht oft genug sagen. Jedes Blitz-Sprite verpustet eine Surface. Schon bei unter 100 simultanen Surfaces (und dazu zählen auch andere vorhandene Surfaces, wie die Spielerfigur und dein Background-Level) geht ein langsamerer Rechner in die Knie. Ein vernünftiger Feuer-Effekt benötigt aber mindestens 20-30 Partikel (pro Feuer!), da kommst du mit Sprites wirklich nicht sehr weit. Wenn es also ein ernsthaftes Projekt ist, code dir eine Single-Surface-Lösung oder hol dir eine. Zum Feuer-Effekt selbst: du brauchst zwei Partikel-Arten, Rauch und Feuer. Für beide kannst du eine Textur benutzen, die eine graue, runde, zu den Rändern hin ins Schwarze oder Transparente übergehende Wolkenförmige Grafik enthält. Eine graue Textur deshalb, damit du sie beliebig in Echtzeit färben kannst (siehe unten). Setze beide Partikel-Arten auf Blendmode 3 (additiv = leuchtend) und maskiere sie oder benutzte Alpha-Transparenz. Wenn der Rauch sehr dicht und dunkel sein soll (z.B. Ölfeuer), setze ihn auf Blendmode 1 (normal). Färbe den Rauch ganz leicht bläulich. Der Rauch steigt nach oben und blendet langsam aus (alpha). Die Flammen ebenfalls. Ausserdem färbt man die Flammenpartikel anfangs gelblich-weiss und lässt sie langsam in ein dunkles rot übergehen (je kälter ein Feuer ist, desto dunkler). |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Cat |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK, dann poste ich einfach mal den Code, ![]() Code: [AUSKLAPPEN] Graphics3D 1024,768,32,1 : SetBuffer BackBuffer() : SeedRnd MilliSecs() Backtime=MilliSecs() Global fpsrate,loops,fpstime Type partikel Field obj Field alpha# End Type Type smoke Field obj2 Field alpha2# End Type light=CreateLight(1) RotateEntity light,45,0,0 cam=CreateCamera() PositionEntity cam,0,0,-5 CameraRange cam,1,3000 AutoMidHandle 1 Global sprite=LoadSprite("flamme.png") HideEntity sprite Global rauch=LoadSprite("rauch.png") HideEntity rauch While Not KeyHit(1) CreateFire() x#=Cos(Rand(30,-30))*.01 y#=Sin(Rand(0,-50))*-.05 angle#=(angle+Rnd(2)) Mod 360 angle2#=(angle2+Rnd(-4)) Mod 360 If MilliSecs()-SBacktime > 50 Then CreateSmoke() SBacktime=MilliSecs() EndIf For p.partikel=Each partikel MoveEntity p\obj,x+.01,y+.03,0 p\alpha=p\alpha-.007 EntityAlpha p\obj,p\alpha RotateSprite p\obj,angle# Next For s.smoke=Each smoke MoveEntity s\obj2,x-.006,y+.07,0 s\alpha2#=s\alpha2#-.02 EntityAlpha s\obj2,s\alpha2# RotateSprite s\obj2,angle2 Next If KeyDown(200) MoveEntity cam,0,0,1 If KeyDown(208) MoveEntity cam,0,0,-1 If KeyDown(203) TurnEntity cam,0,1,0 If KeyDown(205) TurnEntity cam,0,-1,0 If KeyDown(30) TurnEntity cam,1,0,0 If KeyDown(44) TurnEntity cam,-1,0,0 RenderWorld Text 10,10,"FPS: "+FPS() Flip Wend Function CreateFire() p.partikel=New partikel p\obj=CopyEntity(sprite) ShowEntity p\obj PositionEntity p\obj,Rnd(1,-1),-3,0 ScaleSprite p\obj,Rnd(.4,.5),Rnd(.4,.5) EntityBlend p\obj,3 EntityColor p\obj,255,90,0 p\alpha#=1 End Function Function CreateSmoke() s.smoke=New smoke s\obj2=CopyEntity(rauch) ShowEntity s\obj2 PositionEntity s\obj2,Rnd(.8,-.8),-3,0 ScaleSprite s\obj2,Rnd(.5,.6),Rnd(.5,.6) EntityBlend s\obj2,3 EntityColor s\obj2,Rnd(90,100),Rnd(90,100),Rnd(90,100) s\alpha2#=1 End Function Function FPS() loops = loops + 1 If MilliSecs() - fpstime > 1000 Then fpsrate = loops loops = 0 fpstime = MilliSecs() EndIf Return fpsrate End Function End PS: Die Partikel werden hier nicht gelöscht, diesen Teil des Codes muss ich irgendwann mal entfernt haben, war jetzt zu faul ihn nochmal hintuschreiben ![]() LG Cat ~Edit~ Hier noch die Bilder: Wie viel FPS habt ihr denn auf euren Rechnern? |
||
- Zuletzt bearbeitet von Cat am So, Aug 13, 2006 13:46, insgesamt 2-mal bearbeitet
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du vllt noch die Bilder dazu? | ||
Penthouse Pauper |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sieht gut aus!
Hihi, das untere Bild sieht aus wie Ultraschall vom Baby ![]() |
||
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Wie viel FPS habt ihr denn auf euren Rechnern?
Grad mal 10 ![]() |
||
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn man Vsysnc ausmacht(flip 0), was irgendiwe zum fps messen sinnvoll wäre, dann kriege ich anfangs 300FPS. Allerdings gehen die sehr schnell runter. Man merkt , dass die nicht gelöscht werden...
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
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
![]() |
Cat |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, wenn ich Flip v_sync verwende schwankt es immer zwischen 27 und
30 FPS, na mal sehen... |
||
Intel Core 2 Duo E6300 (2 x 1,86 Ghz)
2 x 1024 MB Arbeitsspeicher NVidia GeForce 8800 GT |
Penthouse Pauper |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab so um die 60 FPS und nach ner Weile Sek / -1FPS
Ich würde anstatt immer neue Sprites zu generieren einfach ein Feld aus Sprites erzeugen und den alpha überprüfen... bei 0 dann den Sprite zurück setzen... wenn ich die Vollversion gekauft hab programmier ich vllt mal wat ![]() Aber es sieht wirklich klasse aus... besonders mit den Pics von x-pressed, hihi Sag mal, wie hast du die gemacht? Meine Alphas sehen immer so abgespackt aus, aber ich bin auch mehr ein Paint(bzw.Gimp)-Künstler als ein Photoshopper ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group