3D-Partikel System Probleme | Neues Problem !!!
Übersicht

![]() |
GearTechDEehemals 'KillerJo96'Betreff: 3D-Partikel System Probleme | Neues Problem !!! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Ich habe demletzt ne 2D Partikel Engine programmiert und wollt jetzt einfach mal in 3D was probiern. Also habe ich im Type noch nen Z koordinate hinzugefügt. Das ist aber garnich mein Problem. Eigentlich wollt ich nur wissen, was ich als Partikel nehmen soll.. Cubes? Spheres? Am liebsten würde ich gerne Oval oder Rect nehmen wenn das geht.? Geht das irgendwie.? Wens Cubes oder so sein sollen, werden die eh total klein sein müssen, weil ich nämlich feuer partikel für ne Facken machen möchte. Also eigentlich hab ich mir vorgestellt, dass ich Oval nehme und die dann einfach da rum fliegen lasse xD Geht das nich mit Oval oder Rect? WOmit soll ichs denn dann machen? Denn ich denke mal Spheres und Cubes sind ziemlich Leistungsaufwendig oder? Naja danke im Voraus. Lg Killerjo96 |
||
Mit freundlichen Grüßen: GearTechDE |
- Zuletzt bearbeitet von GearTechDE am Fr, Jul 22, 2011 14:50, insgesamt einmal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
3D kann per Definition nicht mit 2D Befehlen erreicht werden - jedenfalls falls du die Rotation/Tiefe nicht von Hand berechnen willst, was das benutzten von B3D etwas ad absurdum führt...
Für Partikel würde ich Quads (2 Dreiecke, 1 Fläche) in einem einzigen Surface (Single Surface) erstellen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
-> Singlesurface
mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi,
das funzt grundsätzlich so dass du dir eine (einzige) surface erstellst, die du mit quads (2 verbundene dreieecke zu einem quadrat) füllst. die quads werden dann texturiert und stellen somit die partikel dar. ist also eigentlich 2D in 3D. das hat den vorteil, dass du zum einen die partikel sehr einfach verwalten kannst, und zum anderen das ganze extrem schnell ist. alle anderen ansätze kannst du aus performancetechnischen gründen kicken. wenns nur für 1 spiel sein soll, dann schreib dir was passendes, was genau auf das spiel abgestimmt ist. das geht relativ schnell. wenn du ein richtiges partikelsystem für all deine spiele coden willst, dauert das schon ein wenig und bedarf einiger überlegung ![]() ich hab selbst mal eins für meine projekte geschrieben. hier ist der link zum worklog, da kannste dir mal ne vorstellung holen wie das aussehen sollte.. https://www.blitzforum.de/worklogs/195/ hier mal der link zum demo des systems, da siehste was die leisten können: https://www.blitzforum.de/showcase/348/ l8er, PSY |
||
PSY LABS Games
Coders don't die, they just gosub without return |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
SingleSurface mache ich mit AddVertex un so oder? | ||
Mit freundlichen Grüßen: GearTechDE |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
createmesh![]() ![]() ![]() ![]() oder über die Draw3D |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Njoaa, ok danke, den Rest find ich denke ich mal im Forum....
Danke ![]() |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
PhillipB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde dazu aber noch ein Transparentes PNG nehmen dann einfach nen Fleck drin fertig ![]() |
||
STRINGS - Einige tragen sie|wir programmieren sie! ![]() |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok. Danke ![]() Edit: Habe jetzt mal eine 3D Partikel Engine programmiert. Läuft eig. für mich schon janz ok... aber i-wie, will der die Partikel nach einer Zeit nicht mehr löschen... Warum nicht? bei 2D ging das schon aber bei 3d diesmal nicht ![]() BlitzBasic: [AUSKLAPPEN]
|
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
MisterMaboo |
![]() Antworten mit Zitat ![]() |
---|---|---|
guck dir das mal an: FreeEntity![]() das ist jetzt zwar nicht single-surface, aber es löst dein problem fürs erste: Code: [AUSKLAPPEN] Type Partikel Field px# Field py# Field pz# Field pspeed# Field plive# Field mesh Field surf End Type Function ManagePartikel() For info.Partikel = Each Partikel FreeEntity info\mesh brush = CreateBrush(Rand(0,255),Rand(0,255),Rand(0,255)) info\mesh = CreateMesh() info\surf = CreateSurface(info\mesh, brush) v0 = AddVertex(info\surf, 0, 0, 0) v1 = AddVertex(info\surf, 0.1, -0.1, 0) v2 = AddVertex(info\surf, -0.1, -0.1, 0) AddTriangle(info\surf, v0, v1, v2) UpdateNormals info\mesh PositionEntity info\mesh,info\px#,info\py#,info\pz# info\plive# = info\plive# - 1 If info\plive# = 0 Then FreeEntity info\mesh Delete info.partikel End If Next End Function |
||
Man is the information he carries |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein tut es nicht. Es bereitet ihm sogar welche. Warum erstellst du für jeden Partikel jeden Schleifendurchgang ein Brush, ein Mesh, ein Surface und füllst es mit Vertexdaten nur um es nach dem Rendern wieder zu Löschen und neu zu erstellen ?
Über Sprite Partikel-Engines lässts sich Streiten, aber das wird viel zu langsam, und das schon bei wenigen 100 partikeln. mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
MisterMaboo |
![]() Antworten mit Zitat ![]() |
---|---|---|
hast du dir seinen code angesehen?
er hat dassselbe gemacht, nur ohne die partikel zu löschen und damit den zugriff auf seine partikel verloren. es löst sein problem, nämlich dass die partikel nicht gelöscht werden. dass das was ich gepostet habe eine nutzbare particle engine ist, habe ich nicht behauptet. ich bin auf seinen code eingegangen und habe seinem problem eine lösung geliefert. vielleicht hätte ich mir auch mehr gedanken machen sollen, wie daraus brauchbarer code für eine particle engine wird, aber das überlasse ich lieber den experten. |
||
Man is the information he carries |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Fail xD... also Moment. Ich habe jetzt so verstanden, dass der Code fürn Ar*** ist??
Denke mal war nett gemeint aber ist der Code wirklich so schlecht?? Könnte mir dann ma jemand einen Beispiel Code posten, wie ich sowas machen soll? So wie ich das mit 3D jetzt gemacht habe, habe ich es auch in 2D gemacht und funktionierte super. Wo ist das Problem? |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem ist, das 2D nichts mit 3D zu tun hat.
3D Objekte bleiben im Speicher genauso wie Bilder im Speicher bleiben. Bilder muss man aktiv zeichnen, 3D Objekte werden da gerendert wo sie sind. Fang vielleicht mit Sprites an statt gleich die Geometrie selbst zu erstellen. Wenn du das Verwalten von Sprite Partikeln ohne Memoryleaks hin bekommen hast, kannst du den nächsten Schritt machen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
MisterMaboo |
![]() Antworten mit Zitat ![]() |
---|---|---|
tut mir leid. ich war ein bisschen beleidigt, weil toeb erkannt hat, dass ich dir auch nicht wirklich etwas besseres geliefert habe. "fürn arsch" ist hier gar nichts.
wenn du in jedem schleifendurchlauf ein neues mesh erstellst, verlierst du nicht nur den zugriff darauf (anders als bei 2d verschwindet dein mesh nicht per Code: [AUSKLAPPEN] mesh=0 oder Code: [AUSKLAPPEN] delete info.partikel du brauchst freeentity![]() |
||
Man is the information he carries |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast also zwei Möglichkeiten :
1. Sprite-Partikel-Engine : CreateSprite ![]() ![]() PositionEntity ![]() ![]() Weniger Partikel möglich, einfach gestaltet 2. Single-Surface-Partikel-Engine : CreateMesh ![]() ![]() AddVertex ![]() ![]() EntityParent ![]() ![]() Sehr viele Partikel möglich, etwas komplizierter. Ich würde dir für den Einstieg zur ersten Methode raten, und wenn du dann begriffen hast, wie in etwa das 3D Arbeitet, kannst du dich an die zweite wagen. Wobei dazu gesagt sein sollte : Entitys, dazu zählen sowohl Meshes als auch bspw. Cameras oder Lichter (Eng.: Objekt), werden, wenn sie einmal erstellt oder geladen worden sind, solange gezeichnet bis sie entweder versteckt oder gelöscht werden. Anders als in 2D, wo ein Bild mehrfach gezeichnet werden kann, wird ein Objekt immer nur einmal gezeichnet. Um mehrere Objekte zu zeichnen muss man das Objekt so oft Dublizieren. Ich hoffe ich konnte dir ein wenig helfen ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich habe das doch jetzt eigentlich (finde ich) für mich schon mal sehr elegant gelöst. Ok das ich da die Brush texture und so zig mal zeichne war ein Fehler. Ich habe auf jeden Fall kapiert was ihr meint... xD
Also ich versuch mein Glück einfach nochma selber mit nem Single Surface... |
||
Mit freundlichen Grüßen: GearTechDE |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group