Singel Surface Probleme
Übersicht

![]() |
BlackproggerBetreff: Singel Surface Probleme |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Blackprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Vielen Dank ![]() ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Freut mich das es klappt ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group