Trail, oder Schweif
Übersicht

![]() |
juse4proBetreff: Trail, oder Schweif |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin moin!
Befinde mich mal wieder in aktiver Programmiertätigkeit und wollte meine "eigene" Enginesammlung erweitern, nämlich mit einem Trailsystem. ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was genau soll denn ein Trailsystem machen? | ||
MFG Darren |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich denke er meint sowas(vorsicht ASCII)
´´´´´|\__ ====-|-__> _____|/ ^ Schweif/Trace SingleSurface, Face Camera die beiden stichwörter:) |
||
Warbseite |
![]() |
Der_Schläfer |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie in Blitz3D die Tron demo, oder in Half Life 2 die Spuren, welche in der Luft bleiben^^
ich glaube Cgamer meint das richtige ![]() 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 ![]() |
||
Portfolio |LinkedIn |XING |
![]() |
Der_Schläfer |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Speichere die Triangles in Types und mach nen Feld Lifetime, in welches du Millisecs![]() MfG |
||
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso, dann also t.triangle=new triangle?
Ok, ich werde es mal ausprobieren ![]() 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 ![]() Kann mir einer sagen, warum? |
||
![]() |
Der_Schläfer |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Cool, vielen Dank, Schläfer! ![]() |
||
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie könnte ich jetzt anstatt die reine rote farbe eine beam-textur drauflegen (wie in HL1, die raketen) | ||
Portfolio |LinkedIn |XING |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm... ok, werde mal damit rumspielen ![]() auch ein Danke, an alle! |
||
Portfolio |LinkedIn |XING |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group