Feuer proggen

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

joey_joker

Betreff: Feuer proggen

BeitragFr, Aug 11, 2006 1:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute,
kann mir jemand helfen ein feuer in blitz3D zu proggen???
Ich bin noch nich ganz soooo erfahren in 3D Embarassed Embarassed Embarassed

StepTiger

BeitragFr, Aug 11, 2006 1:05
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Cat

BeitragFr, Aug 11, 2006 1:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink . Vergiß aber nicht sie nach möglichst kurzer
Zeit wieder zu löschen!

Hab hier mal was ausgegraben:
user posted image

mfg
 

Penthouse Pauper

BeitragFr, Aug 11, 2006 9:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wahnsinn!
Haste 'zufällig' mal den Source Code + SpriteImages zum reinschnuppern? Wink
 

Darren

BeitragFr, Aug 11, 2006 10:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing
MFG Darren

StepTiger

BeitragFr, Aug 11, 2006 11:33
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Christoph

BeitragFr, Aug 11, 2006 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

BeitragFr, Aug 11, 2006 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 11, 2006 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 11, 2006 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
@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 Wink und bin sicher dass viele andere hier im Forum auch meiner Meinung sind. Ach ja, zu den Bildern, die hab ich mir schnell mal aus x-pressive's Particle Candy Demo "geklaut" Laughing (Hoffe du bist mir nicht böse deswegen Rolling Eyes)

mfg
Intel Core 2 Duo E6300 (2 x 1,86 Ghz)

2 x 1024 MB Arbeitsspeicher

NVidia GeForce 8800 GT
 

Penthouse Pauper

BeitragSa, Aug 12, 2006 1:43
Antworten mit Zitat
Benutzer-Profile anzeigen
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' Wink
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

BeitragSa, Aug 12, 2006 2:05
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Aug 12, 2006 7:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Cat hat Folgendes geschrieben:
Ach ja, zu den Bildern, die hab ich mir schnell mal aus x-pressive's Particle Candy Demo "geklaut" Laughing (Hoffe du bist mir nicht böse deswegen Rolling Eyes)

lol Smile Ich wusste doch, das kommt mir bekannt vor.

@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:

Arrow Ein-Sprite-Lösung:
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.

Arrow Single-Surface-Lösung:
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

BeitragSo, Aug 13, 2006 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, dann poste ich einfach mal den Code, Wink :

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 Wink

LG Cat

~Edit~

Hier noch die Bilder:

user posted image
user posted image

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

BeitragSo, Aug 13, 2006 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du vllt noch die Bilder dazu?
 

Penthouse Pauper

BeitragSo, Aug 13, 2006 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht gut aus!

Hihi, das untere Bild sieht aus wie Ultraschall vom Baby Wink ...

Christoph

BeitragSo, Aug 13, 2006 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Wie viel FPS habt ihr denn auf euren Rechnern?

Grad mal 10 Embarassed

Blitzcoder

Newsposter

BeitragSo, Aug 13, 2006 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Aug 13, 2006 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Aug 14, 2006 1:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

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 Very Happy

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group