Singel Surface Probleme

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Blackprogger

Betreff: Singel Surface Probleme

BeitragMi, Okt 31, 2007 1:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,
Ich habe mir heute einmal Singel Surface angeschaut. Ich bin ziemlich weit gekommen und habe auch soweit alles verstanden, aber leider habe ich ein Problem und komme nicht weiter. Ich hatte vor mit Partikeln eine Explosion zu machen, die Explosion versuchte ich erst mit Sprites, aber da das sehr viel Rechenpower zieht, muss ich wohl oder übel Singel Surface benutzen. Noch kurz zu der Explosion: Die Partikel sollen in der Mitte erscheinen und dann nach außen fliegen (Das klappt bei meinem Spritemodell ganz gut, aber leider bei meinem Singel Surface Modell nicht). Nun zu dem Problem, die Partikel werden in der Mitte erstellt, fliegen aber nacht links unten, aber nicht wie geplant in alle richtungen.

Und nun hier der Code:

Code: [AUSKLAPPEN]

Graphics3D 640,480
SetBuffer BackBuffer()

Type Particel
Field V0
Field V1
Field V2
Field V3
Field X#
Field Y#
Field Winkel#
Field Speed#
End Type

 Brush = LoadBrush("Flocke1.png",1)

Cam = CreateCamera()
MoveEntity Cam,0,0,-100

Global Mesh = CreateMesh()
Surface = CreateSurface(Mesh)

While Not KeyHit(1)

For I=0 To 100

 Schnee.Particel = New Particel
 Schnee\V0 = AddVertex(Surface,0,0,0  ,0,0)
 Schnee\V1 = AddVertex(Surface,1,0,0  ,1,0)
 Schnee\V2 = AddVertex(Surface,0,-1,0 ,0,1)
 Schnee\V3 = AddVertex(Surface,1,-1,0 ,1,1)
 Schnee\X = Rnd(-50,50)
 Schnee\Y = 0
 Schnee\Winkel = Rnd(0,359)
 Schnee\Speed = Rnd(1,3)
 

 AddTriangle(Surface,Schnee\V0,Schnee\V1,Schnee\V2)
 AddTriangle(Surface,Schnee\V1,Schnee\V3,Schnee\V2)
Next

For Schnee = Each Particel
 Schnee\X = Schnee\X + Cos(Schnee\Winkel) * Schnee\Speed
 Schnee\Y = Schnee\Y + Sin(Schnee\Winkel) * Schnee\Speed
 PositionPartikel(Surface,Schnee\V0,Schnee\V1,Schnee\V2,Schnee\V3,Schnee\X,Schnee\Y)
Next

UpdateWorld
RenderWorld

Flip
Wend

End





Function PositionPartikel(Surface,Vertix0,Vertix1,Vertix2,Vertix3,XP,YP)
 VX0 = VertexX(Surface,0)
 VX1 = VertexX(Surface,1)
 VX2 = VertexX(Surface,2)
 VX3 = VertexX(Surface,3)
 
 VY0 = VertexY(Surface,0)
 VY1 = VertexY(Surface,1)
 VY2 = VertexY(Surface,2)
 VY3 = VertexY(Surface,3)

 VertexCoords Surface, Vertix0,XP+VX0,YP+VY0,0
 VertexCoords Surface, Vertix1,XP+VX1,YP+VY1,0
 VertexCoords Surface, Vertix2,XP+VX2,YP+VY2,0
 VertexCoords Surface, Vertix3,XP+VX3,YP+VY3,0
End Function
 


Ich hoffe sehr, dass ihr mir helfen könnt.

MFG.
Blackprogger
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium
 

Dreamora

BeitragMi, Okt 31, 2007 1:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Problem dass ich da sehe ist dass du VertexX etc holst und es mit der Position des Partikels verrechnest. Denke nicht dass das das ist was du willst. du willst ja sicher dass der partikel bei der position erscheint und in dem falle müsstest du einfach die neuen coordinaten nehmen und davon die gleichen werte subtrahieren / addieren wie bei der erzeugung schon. also +0, +1, -1 je nach vertex.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Blackprogger

BeitragMi, Okt 31, 2007 1:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Heißt das, dass ich bei meiner Funktion PositionPartikel, eigentlich immer + 1 oder - 1 machen muss?

(Schonmal vielen Danke für deine Antwort)
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium

Blackprogger

BeitragMi, Okt 31, 2007 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, dass Problem mit der Position habe ich denke ich mal gelöst, nun stellt sich daraus leider wieder ein Problem, die Partikel liegen nur auf einer Linie und nicht wie geplant in alle Richtungen.

(Nur um sicher zu gehen, das ich das auch richtig gemacht habe, möchte ich das ergänzte nocheinmal hierein kopieren, damit es vielleicht helfen kann, meinen anderen Fehler zu finden(Ich habe auch schon einiges ausprobiert um selber drauf zu kommen, aber vergebens.)

Code: [AUSKLAPPEN]

Function PositionPartikel(Surface,Vertix0,Vertix1,Vertix2,Vertix3,XP,YP)
 VX0 = VertexX(Surface,0)
 VX1 = VertexX(Surface,1)
 VX2 = VertexX(Surface,2)
 VX3 = VertexX(Surface,3)
 
 VY0 = VertexY(Surface,0)
 VY1 = VertexY(Surface,1)
 VY2 = VertexY(Surface,2)
 VY3 = VertexY(Surface,3)

 VertexCoords Surface, Vertix0,XP+0,XY+0,0
 VertexCoords Surface, Vertix1,XP+1,XY+0,0
 VertexCoords Surface, Vertix2,XP+0,XY-1,0
 VertexCoords Surface, Vertix3,XP+1,XY-1,0
End Function
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium
 

Dreamora

BeitragMi, Okt 31, 2007 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
hast es falsch gemacht

1. Die VertexX VertexY brauchst du nimmer
2. Es sollte XP, YP sein in den VertexCoords, nicht XP, XY
Letzteres wird nämlich immer 0 sein Wink
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Blackprogger

BeitragMi, Okt 31, 2007 11:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Vielen Dank Very Happy , ich müsste mich eigentlich schämen, da das ein dummer Anfangsfehler ist Embarassed .
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium

Blackprogger

BeitragMi, Okt 31, 2007 12:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine frage hätte ich vieleicht noch, das mit den Partikeln klappt wunder bar, nur leider ruckelt das ganze etwas. An was liegt das?
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium
 

Dreamora

BeitragMi, Okt 31, 2007 12:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieviele Partikel hast du?

3000-4000 partikel insgesamt gleichzeitig solltest du als totales maximum ansehen ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Blackprogger

BeitragMi, Okt 31, 2007 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube nicht, dass das Ruckeln von der Menge der Partikel kommt. Was ich meine ist, wie sie sich bewegen, sie bewegen sich nicht flüssig sondern Ruckartig.

Edit: (Eine Sperre von Maximalen Partikeln, bei mir 1000 habe ich schon eingebaut, es ist die aller gleiche Ruckartige Bewegung, wenn ich die Sperre weg lasse. )
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium
 

Dreamora

BeitragMi, Okt 31, 2007 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Was heisst ruckartig?

komplett flüssig werden sie sich nicht bewegen wenn sie sich jedes frame 1-3 einheiten bewegen können ... da müsstest du frame unabhängige programmierung einsetzen damit sie sich zb soviele einheiten PRO ZEITEINHEIT bewegen ... (also den speed / aktuelleFPS zb)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Noobody

BeitragMi, Okt 31, 2007 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht liegt es auch daran, dass du die X und Y-Variablen, die du übergibts, in der Funktion als Integer deklarierst.
So bewegen sie sich natürlich immer nur um ganze Einheiten und das sieht dann ziemlich ruckelig aus.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Blackprogger

BeitragMi, Okt 31, 2007 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Noodbody danke, das wahr der Fehler, meine Probleme müssten eigentlich hiermit gelöst sein, ich möchte mich an alle Beteiligten bedanken, die mir geholfen haben, den Fehler zu finden.
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium
 

Dreamora

BeitragMi, Okt 31, 2007 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Freut mich das es klappt Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Noobody

BeitragMi, Okt 31, 2007 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Möchte dir auch noch die Free Quad Library empfehlen, da ist alles mit Rotation, Position und Färben drin.
Klick
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Blackprogger

BeitragMi, Okt 31, 2007 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool Danke.
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium

Blackprogger

BeitragSa, Nov 03, 2007 13:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hätte da noch eine Frage, wollte deshalb jetzt keinen neuen Thread aufmachen, wie kann ich die Vertex Punkte lösche? Ich habe sie ja in einem Type gespeichert, wenn ich den aber lösche mit "Delete Rauch", dann werden die Vertix Punkte mit Bild immer noch angezeigt. Gibt es irgendeinen Befehl um Vertix Punkte zu löschen? In der OH habe ich schon Nachgeschaut, konnte keinen Befehl finden, außer ClearSurface, aber da löscht man ja alle Vertix Punkte, ich will aber nur 4 löschen.
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium

Noobody

BeitragSa, Nov 03, 2007 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Einen Befehl wie 'DeleteVertex' hab ich auch gesucht für meine Engine.
Gibt es leider nicht.
Du musst wohl oder übel jedesmal, wenn ein Rauch gelöscht werden soll, ClearSurface nehmen und danach für jeden Type den Rauch neu erstellen.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Blackprogger

BeitragSa, Nov 03, 2007 13:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber das ganze heißt doch Singelsurface, ich müsste doch dann für jedes Rauchquadrat ein eigenes Surface erstellen.
PC:
AMD Athlon 64 X2 TK 57 Prozessor (2x 1.9 GHz) | nVidia GeForce 8600M GS mit 512 MB VRAM | 4-GB-DDR2-RAM | Windows Vista Home Premium
 

Dreamora

BeitragSa, Nov 03, 2007 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein musst du nicht.

1. Heisst es Single Surface, das heisst alles ist in einer Surface (oder in möglichst wenigen)
2. Delete Vertex erreicht man dadurch das man Clear Surface macht und nur die restlichen wieder hinzufügt.
Aber das ist relativ unprofessionel und schrott. Normalerweise werden die partikel die nicht benötigt werden, einfach ins "nichts" verschoben oder alle 4 vertices an den gleichen punkt gesetzt. Dann sieht man sie auch nicht und dennoch muss man den Meshbuffer nicht die ganze zeit schreddern.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Noobody

BeitragSa, Nov 03, 2007 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber irgendwann stösst man doch an die Grenze der maximalen Vertices pro Surface, wenn man sie nicht löscht?
Oder setzt man die unsichtbaren Partikel einfach wieder, wenn man neue benötigt?
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group