Trail, oder Schweif

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

juse4pro

Betreff: Trail, oder Schweif

BeitragMo, Jun 01, 2009 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin moin!

Befinde mich mal wieder in aktiver Programmiertätigkeit und wollte meine "eigene" Enginesammlung erweitern, nämlich mit einem Trailsystem. Very Happy

Nun weiss ich nicht sorecht, wie ich damit anfangen woll, oder was ich dazu brauche, oder wie ich das anstelle. Kann mir da einer weiterhelfen?

mfg mortus
Portfolio |LinkedIn |XING
 

Darren

BeitragMo, Jun 01, 2009 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Was genau soll denn ein Trailsystem machen?
MFG Darren

Xaymar

ehemals "Cgamer"

BeitragMo, Jun 01, 2009 22:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ich denke er meint sowas(vorsicht ASCII)
´´´´´|\__
====-|-__>
_____|/
^
Schweif/Trace

SingleSurface, Face Camera
die beiden stichwörter:)
Warbseite

Der_Schläfer

BeitragDi, Jun 02, 2009 10:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Nunja also wenn du irgendwelche Spuren-Effekte Programmieren willst (Schiff/Raumschiff/etc) könntest du dich mal mit der Meshbearbeitung/erstellung mit BB vertraut machen. Is kein grosses Ding, nur Mut.
Massgeschneiderte lösungen ist das Stichwort...

beispiel:

-wenn du einen Düsenjet hast der irgendwie Treibwerk-Effekte braucht dann würd ich z.B. einfach ein fixes Child-Mesh an den Jet anhängen und dann je nach Antriebsstärke Skalieren+Einfärben...

-Wenn du Wasser-Spuren brauchst würd ich n Type machen, so "wasserfx" oder so, irgend ein kleines horizontales Quadrat beschaffen (mesh laden oder per createmesh/addvertex/addtriangle erzeugen) und dann einfach unter dem schiff diese aufgewühlte-wasser-effekt-dinger erzeugen, und mit der zeit auf der X-Achse grösser und blasser werden lassen

-etc.

Was genau hastu vor? Hat Cgamer dich überhaupt richtig verstanden =)

juse4pro

BeitragDi, Jun 02, 2009 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
wie in Blitz3D die Tron demo, oder in Half Life 2 die Spuren, welche in der Luft bleiben^^

ich glaube Cgamer meint das richtige Wink
einfach nur nen "leuchtmesh"ranpappen is langweilig^^

ich müchte es speziell für raketen verwenden, welche einen rauch schreif ziehen, aber ohne extra rauchwolken, sondern eben einen schweif, welcher am ende ausblasst. diese raketen wird auch lenkbar sein, also muss der scheif auch bögen ziehen können Very Happy
Portfolio |LinkedIn |XING

Der_Schläfer

BeitragDi, Jun 02, 2009 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
also wenn der rauch von allen seiten gut aussehen soll dann kannst die eingebauten sprites nehmen...

sind nicht besonders schnell aber <100 partikel läuft recht schön und müsste reichen für son bissle raucheffekte

schneller wäre eine singlesurface-engine... wenn du suchst findest sicher was, selber hast wohl eher nicht so Lust eine zu schreiben, wie das hier tönt =) wobei das ist auch keine hexerei

Megamag

BeitragDi, Jun 02, 2009 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Wo wir schonmal gerade dabei sind ^^
Ich bräuchte auch solche Trails. Ich würde es gerne so machen, wie im
Tron-Example. Da wird ja eine Surface erstellt und immer Vertexe dazu
gemacht. Ich würde gerne wissen, wie ich diese Vertexe nach einiger
Zeit löschen, oder besser noch ausfaden könnte? Danke Very Happy

The_Nici

BeitragDi, Jun 02, 2009 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Speichere die Triangles in Types und mach nen Feld Lifetime, in welches du Millisecs() beim erstellen reinmachst. Ist Millisecs - t\lifetime >= xyz dann löschst du alle Vertices des Triangles.
MfG

Megamag

BeitragDi, Jun 02, 2009 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, dann also t.triangle=new triangle?
Ok, ich werde es mal ausprobieren Very Happy

Hm, ich habe es mal so probiert:
Code: [AUSKLAPPEN]

smooth=True


Graphics3D 800,600,32,2


grid_tex=CreateTexture( 32,32,8 )
ScaleTexture grid_tex,10,10
SetBuffer TextureBuffer( grid_tex )
Color 0,0,64:Rect 0,0,32,32
Color 0,0,255:Rect 0,0,32,32,False
SetBuffer BackBuffer()

grid_plane=CreatePlane()
EntityTexture grid_plane,grid_tex
EntityBlend grid_plane,1
EntityAlpha grid_plane,.6
EntityFX grid_plane,1

mirror=CreateMirror()

pivot=CreatePivot()

p=CreatePivot( p )
cube=CreateCube( p )
ScaleEntity cube,1,1,5
SetAnimKey cube,0
RotateEntity cube,0,120,0
SetAnimKey cube,60
RotateEntity cube,0,240,0
SetAnimKey cube,120
RotateEntity cube,0,0,0
SetAnimKey cube,180
AddAnimSeq p,180

For x=-100 To 100 Step 25
For z=-100 To 100 Step 25
e=CopyEntity( p,pivot )
PositionEntity e,x,5,z
Animate e
Next
Next
FreeEntity cube

trail_mesh=CreateMesh()
trail_brush=CreateBrush()
BrushColor trail_brush,255,0,0
BrushBlend trail_brush,3
BrushFX trail_brush,1
Global trail_surf=CreateSurface( trail_mesh,trail_brush )
AddVertex trail_surf,0,2,0,0,0
AddVertex trail_surf,0,0,0,0,1
AddVertex trail_surf,0,2,0,0,0
AddVertex trail_surf,0,0,0,0,1
AddTriangle trail_surf,0,2,3
AddTriangle trail_surf,0,3,1
AddTriangle trail_surf,0,3,2
AddTriangle trail_surf,0,1,3
Global trail_vert=2

bike=CreateSphere()
ScaleMesh bike,.75,1,2
PositionEntity bike,0,1,0
EntityShininess bike,1
EntityColor bike,192,0,255

camera=CreateCamera()
TurnEntity camera,45,0,0
cam_d#=30

light=CreateLight()
TurnEntity light,45,45,0

add_flag=False

Type tris
Field v1
Field v2
Field t1
Field t2
Field t3
Field t4
Field lifetime#
End Type

While Not KeyHit(1)

   If KeyHit(17)
      wire=Not wire
      WireFrame wire
   EndIf
   
   If KeyDown(30) cam_d=cam_d-1
   If KeyDown(44) cam_d=cam_d+1
   
   turn=0
   If smooth
      If KeyDown(203) turn=5
      If KeyDown(205) turn=-5
      If turn
         add_cnt=add_cnt+1
         If add_cnt=3
            add_cnt=0
            add_flag=True
         Else
            add_flag=False
         EndIf
      Else If add_cnt
         add_cnt=0
         add_flag=True
      Else
         add_flag=False
      EndIf
   Else
      If KeyHit(203) turn=90
      If KeyHit(205) turn=-90
      If turn Then add_flag=True Else add_flag=False
   EndIf
   
   If turn
      TurnEntity bike,0,turn,0
   EndIf
   
   MoveEntity bike,0,0,1
   
   If add_flag
AddTris(bike)
   Else
      VertexCoords trail_surf,trail_vert,EntityX(bike),2,EntityZ(bike)
      VertexCoords trail_surf,trail_vert+1,EntityX(bike),0,EntityZ(bike)
   EndIf
   
   UpdateWorld
   
   PositionEntity camera,EntityX(bike)-5,0,EntityZ(bike)
   MoveEntity camera,0,0,-cam_d
   
   UpdateTris()

;   PositionEntity camera,0,20,0
;   PointEntity camera,bike
   
   RenderWorld
   Flip

Wend
End

Function AddTris(bike)
      t.tris = New tris
      t\v1=AddVertex (trail_surf,EntityX(bike),2,EntityZ(bike),0,0)
      t\v2=AddVertex (trail_surf,EntityX(bike),0,EntityZ(bike),0,1)
      AddTriangle trail_surf,trail_vert,trail_vert+2,trail_vert+3
      AddTriangle trail_surf,trail_vert,trail_vert+3,trail_vert+1
      AddTriangle trail_surf,trail_vert,trail_vert+3,trail_vert+2
      AddTriangle trail_surf,trail_vert,trail_vert+1,trail_vert+3
      trail_vert=trail_vert+2
      t\lifetime# = 1
End Function

Function UpdateTris()
For t.tris = Each tris
t\lifetime=t\lifetime-0.001
VertexColor trail_surf,t\v1,0,0,0,t\lifetime
VertexColor trail_surf,t\v2,0,0,0,t\lifetime
Next
End Function

Aber es geht nicht Sad
Kann mir einer sagen, warum?

Der_Schläfer

BeitragDi, Jun 02, 2009 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, jah genau, das ist ein bissle fies: Du must bei den Entityfx flags den 32er anmachen (vertexalpha) damit man vertexalpha sieht...

edit: ist dir aufgefallen, dass nur neue spur-vertices hinzugefügt werden wenn man eine kurve fliegt? das müsste man noch ändern. mom, ich bring gleich code...

Der_Schläfer

BeitragDi, Jun 02, 2009 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich muss mich korrigieren. Man muss sowohl die Entityfx Flags 32 als auch 2 anmachen (vertexalpha ohne vertexcolor funzt nicht)

ich hab noch am code geschraubt damit auf gerader strecke weniger tris hinzugefügt werden als in der kurve (aber nicht mehr gar keine wie vorher)


Code: [AUSKLAPPEN]


smooth=True


Graphics3D 800,600,32,2


grid_tex=CreateTexture( 32,32,8 )
ScaleTexture grid_tex,10,10
SetBuffer TextureBuffer( grid_tex )
Color 0,0,64:Rect 0,0,32,32
Color 0,0,255:Rect 0,0,32,32,False
SetBuffer BackBuffer()

grid_plane=CreatePlane()
EntityTexture grid_plane,grid_tex
EntityBlend grid_plane,1
EntityAlpha grid_plane,.6
EntityFX grid_plane,1

mirror=CreateMirror()

pivot=CreatePivot()

p=CreatePivot( p )
cube=CreateCube( p )
ScaleEntity cube,1,1,5
SetAnimKey cube,0
RotateEntity cube,0,120,0
SetAnimKey cube,60
RotateEntity cube,0,240,0
SetAnimKey cube,120
RotateEntity cube,0,0,0
SetAnimKey cube,180
AddAnimSeq p,180

For x=-100 To 100 Step 25
For z=-100 To 100 Step 25
e=CopyEntity( p,pivot )
PositionEntity e,x,5,z
Animate e
Next
Next
FreeEntity cube

trail_mesh=CreateMesh()
trail_brush=CreateBrush()
BrushColor trail_brush,255,255,255
BrushBlend trail_brush,1
BrushFX trail_brush,35
Global trail_surf=CreateSurface( trail_mesh,trail_brush )
AddVertex trail_surf,0,2,0,0,0
AddVertex trail_surf,0,0,0,0,1
AddVertex trail_surf,0,2,0,0,0
AddVertex trail_surf,0,0,0,0,1
AddTriangle trail_surf,0,2,3
AddTriangle trail_surf,0,3,1
AddTriangle trail_surf,0,3,2
AddTriangle trail_surf,0,1,3
Global trail_vert=2

bike=CreateSphere()
ScaleMesh bike,.75,1,2
PositionEntity bike,0,1,0
EntityShininess bike,1
EntityColor bike,192,0,255

camera=CreateCamera()
TurnEntity camera,45,0,0
cam_d#=30

light=CreateLight()
TurnEntity light,45,45,0

add_flag=False

Type tris
Field v1
Field v2
Field t1
Field t2
Field t3
Field t4
Field lifetime#
End Type

While Not KeyHit(1)

   If KeyHit(17)
      wire=Not wire
      WireFrame wire
   EndIf
   
   If KeyDown(30) cam_d=cam_d-1
   If KeyDown(44) cam_d=cam_d+1
   
   turn=0
   If smooth
      If KeyDown(203) turn=5
      If KeyDown(205) turn=-5
      If turn Then
         add_cnt=add_cnt+5
      EndIf
      
      If add_cnt>15
         add_cnt=0
         add_flag=True
      Else
      add_cnt=add_cnt+1
      EndIf
   Else
      If KeyHit(203) turn=90
      If KeyHit(205) turn=-90
      If turn Then add_flag=True Else add_flag=False
   EndIf
   
   If turn
      TurnEntity bike,0,turn,0
   EndIf
   
   MoveEntity bike,0,0,1
   
   If add_flag
   add_flag=False
AddTris(bike)
   Else
      VertexCoords trail_surf,trail_vert,EntityX(bike),2,EntityZ(bike)
      VertexCoords trail_surf,trail_vert+1,EntityX(bike),0,EntityZ(bike)
   EndIf
   
   UpdateWorld
   
   PositionEntity camera,EntityX(bike)-5,0,EntityZ(bike)
   MoveEntity camera,0,0,-cam_d
   
   UpdateTris()

;   PositionEntity camera,0,20,0
;   PointEntity camera,bike
   
   RenderWorld
   Flip

Wend
End

Function AddTris(bike)
      t.tris = New tris
      t\v1=AddVertex (trail_surf,EntityX(bike),2,EntityZ(bike),0,0)
      t\v2=AddVertex (trail_surf,EntityX(bike),0,EntityZ(bike),0,1)
      AddTriangle trail_surf,trail_vert,trail_vert+2,trail_vert+3
      AddTriangle trail_surf,trail_vert,trail_vert+3,trail_vert+1
      AddTriangle trail_surf,trail_vert,trail_vert+3,trail_vert+2
      AddTriangle trail_surf,trail_vert,trail_vert+1,trail_vert+3
      trail_vert=trail_vert+2
      t\lifetime# = 1
End Function

Function UpdateTris()

For t.tris = Each tris
t\lifetime=t\lifetime-0.01
VertexColor trail_surf,t\v1,255,0,0,t\lifetime
VertexColor trail_surf,t\v2,255,0,0,t\lifetime
Next

End Function

Megamag

BeitragDi, Jun 02, 2009 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool, vielen Dank, Schläfer! Very Happy

juse4pro

BeitragMi, Jun 03, 2009 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
wie könnte ich jetzt anstatt die reine rote farbe eine beam-textur drauflegen (wie in HL1, die raketen)
Portfolio |LinkedIn |XING

The_Nici

BeitragMi, Jun 03, 2009 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
In dem du eine Beam-Textur drauflegst? O_o
Einfach etwas mit den UV-Koordinaten der Triangles rumspielen, dann sollte das gehen.
MfG

EDIT: Achja, ich würde dir anraten das Trail-Mesh wieder zu löschen wenn die Rakete oder was auch immer explodiert ist, wegen den vielen Triangles.

juse4pro

BeitragMi, Jun 03, 2009 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
hm... ok, werde mal damit rumspielen Wink

auch ein Danke, an alle!
Portfolio |LinkedIn |XING

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group