Raketen Schweif

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

ToeB

Betreff: Raketen Schweif

BeitragDo, März 04, 2010 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo !

Ich habe mir schon länge gedanken drum gemacht, aber mir viel nie so recht was dazu ein. Und zwar habe ich eine Rakete, die fliegt. Und zwar nicht nur gradeaus, sondern auch in kurven etc.. Momentan ist es so, das die Rakete eine Spur aus Partikeln hinter sich herzieht, was aber bei vielen raketen ziemlich langsam ist. Deshalb hab ich mir mal andere Spiele angegeuckt, so wie Call of Duty etc., bei denen es auch raketen gibt, und diese Spiele machen das ganz anders, die erstellen so eine art lienien, die mit einander verbunden werden, und diese linien sind von allen seiten sichtbar. Es wird immer eine line erstellt, dann die startx/y/z koordinaten auf die momentane position der Rakete gesetz. Jetzt fliegt sie zum beispiel 5 Frames, und die endx/y/z koordinaten sind dabei immer auf der Rakete, dann wird wieder eine neue Linie erstellt. Diese startx/y/z koordinaten sind die alten endx/y/z koordinaten und so weiter, bis die rakete explodiert. Nur die Frage ist : Wie macht man so eine "linie", die von allen seiten gut sichtbar ist, die man leicht von startx/y/z bis endx/y/z ziehen kann ohne das es einen sichtverlust gibt. Und sie sollte auch nicht nur dünn sondern wie ein Raketenschweif etwas dicker sein.

Vielen dank schonmal !

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!

Xeres

Moderator

BeitragDo, März 04, 2010 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Was für eine Linie meinst du dabei?
Hört sich für mich nach typischen Sprites an, die aus jeder Richtung zur Kamera zeigen.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, März 04, 2010 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir mal bei der Draw3D2 den Befehl DrawLine4D an. Dieser macht genau das. Der Befehl vergleicht die Position der Linie (Start/Ende) gegen die Kameraposition und berechnet daraus die Positionen der Vertexpunkte, dass sie perfekt zur Kamera gerichtet werden. Und soweit in meinem Hinterkopf, müsstest du die Draw3D2 von mir erhalten haben?!
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ToeB

BeitragDo, März 04, 2010 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja hectic dank dir.. und ja ich hab deine Draw3D2...

Mal direkt einbauen Wink

Edit : Nein ... die DrawLine4D function hab ich dort nicht drin... Kannst du mir die iwie so schicken ? Die hört sich nämlich super an Smile

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!

Xaymar

ehemals "Cgamer"

BeitragDo, März 04, 2010 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
hatte mir für sowas extra mal eine funktionssammlung gebastelt:
BlitzBasic: [AUSKLAPPEN]
;SingleSurface Trails
Const TrailVertexes = 100
Global TInterval
Global TPiv, ViewCam
Global TBox1
Global TBox2

Type Trails
Field Parent
Field Mesh, Surf, Size#
Field X#[TrailVertexes], Y#[TrailVertexes], Z#[TrailVertexes]
Field Interval, R[TrailVertexes], G[TrailVertexes], B[TrailVertexes]
End Type

Function InitTrail(Cam)
TPiv = CreatePivot():ViewCam = Cam
TBox1 = CreateCube(TPiv):MoveEntity TBox1, 0, 5, 0:ScaleEntity TBox1, .1, .1, .1
TBox2 = CreateCube(TPiv):MoveEntity TBox2, 0,-5, 0:ScaleEntity TBox2, .1, .1, .1
End Function

Function AddTrail(Texture, Parent, Size#, Interval)
Local T.Trails = New Trails, TempBrush, TCount
TempBrush = CreateBrush(255, 255, 255):BrushTexture TempBrush, Texture:BrushFX TempBrush, 19
T\Mesh = CreateMesh():T\Surf = CreateSurface(T\Mesh, TempBrush)
FreeBrush TempBrush
T\Parent = Parent:T\Interval = Interval:T\Size = Size
For TCount = 0 To TrailVertexes
T\X[TCount] = EntityX(T\Parent):T\Y[TCount] = EntityY(T\Parent):T\Z[TCount] = EntityZ(T\Parent)
T\R[TCount] = 255:T\G[TCount] = 255:T\B[TCount] = 255
Next
Return Handle(T.Trails)
End Function

Function RemoveTrail(Trail)
Local T.Trails = Object.Trails(Trail)
FreeEntity T\Mesh:Delete T.Trails
End Function

Function ColorTrail(Trail, R, G, B)
Local T.Trails = Object.Trails(Trail)
T\R[0] = R:T\G[0] = G:T\B[0] = B
End Function

Function UpdateTrails(Came)
Local T.Trails, Cur, V1[3], Pos#[5], Multi#, Dist#, LDist#
TInterval = TInterval + 1
For T = Each Trails
T\X[0] = EntityX(T\Parent,1):T\Y[0] = EntityY(T\Parent,1):T\Z[0] = EntityZ(T\Parent,1)
If (TInterval Mod T\Interval) = 0
For Cur = TrailVertexes To 1 Step -1
T\X[Cur] = T\X[Cur-1]:T\Y[Cur] = T\Y[Cur-1]:T\Z[Cur] = T\Z[Cur-1]
T\R[Cur] = T\R[Cur-1]:T\G[Cur] = T\G[Cur-1]:T\B[Cur] = T\B[Cur-1]
Next
EndIf
ClearSurface T\Surf

V1[0] = AddVertex(T\Surf, T\X[TrailVertexes], T\Y[TrailVertexes], T\Z[TrailVertexes], 0, 0):VertexColor T\Surf, V1[0], T\R[Cur], T\G[Cur], T\B[Cur]
V1[1] = AddVertex(T\Surf, T\X[TrailVertexes], T\Y[TrailVertexes], T\Z[TrailVertexes], 1, 0):VertexColor T\Surf, V1[1], T\R[Cur], T\G[Cur], T\B[Cur]
For Cur = TrailVertexes-1 To 0 Step -1
LDist = Dist:Dist = Abs(Sqr((T\X[Cur+1]-T\X[Cur])^2.0 + (T\Y[Cur+1]-T\Y[Cur])^2.0 + (T\Z[Cur+1]-T\Z[Cur])^2.0)):Multi = 1-(Cur/Float(TrailVertexes))

PositionEntity TPiv, T\X[Cur], T\Y[Cur], T\Z[Cur], 1
PositionEntity TBox1, 0, -T\Size*Multi, 0
PositionEntity TBox2, 0, T\Size*Multi, 0
PointEntity TPiv, ViewCam, 1

Pos[0] = EntityX(TBox1, 1):Pos[1] = EntityY(TBox1, 1):Pos[2] = EntityZ(TBox1, 1)
Pos[3] = EntityX(TBox2, 1):Pos[4] = EntityY(TBox2, 1):Pos[5] = EntityZ(TBox2, 1)

V1[2] = AddVertex(T\Surf, Pos[0], Pos[1], Pos[2], 0, LDist# + Dist + Cur):VertexColor T\Surf, V1[2], T\R[Cur], T\G[Cur], T\B[Cur]
V1[3] = AddVertex(T\Surf, Pos[3], Pos[4], Pos[5], 1, LDist# + Dist + Cur):VertexColor T\Surf, V1[3], T\R[Cur], T\G[Cur], T\B[Cur]

AddTriangle T\Surf, V1[0], V1[1], V1[2]
AddTriangle T\Surf, V1[2], V1[1], V1[3]

V1[0] = V1[2]:V1[1] = V1[3]
Next
Next
End Function

Ist nicht die beste Lösung aber sie geht^^ Beispiel:
BlitzBasic: [AUSKLAPPEN]
;trailsystem test
Graphics3D 1024, 768, 32, 2
Include "TrailSystem.bb"
SeedRnd MilliSecs()

Piv = CreatePivot()
Box = CreateCone():ScaleEntity box, .2, .2, .2
Camera = CreateCamera(Piv):PositionEntity Camera, 0, 0,-25, 1
Texture = LoadTexture("texture.png", 2)
InitTrail(Camera):CameraZoom Camera, 2
WireFrame 0
trail = AddTrail(Texture ,Box, 1, 1)

r = 20
While Not KeyHit(1)
Cls


If KeyDown(28)
PositionEntity Box, Sin(a*4)*90, Cos(a)*r, Sin(a)*r
a = a + 1
EndIf
;RotateEntity Piv, EntityPitch(Piv)+MouseYSpeed(), EntityYaw(Piv)-MouseXSpeed(), 0
;MoveMouse 512, 384
PointEntity Piv, Box

UpdateTrails(Camera)
ColorTrail(trail, r2, g2, b2)
r2 = r2 + 25
If r2 > 255
g2 = g2 + 25
r2 = 0
If g2 > 255
b2 = b2 + 25
g2 = 0
If b2 > 255
b2 = 0
EndIf
EndIf
EndIf

RenderWorld

Flip
Wend
Warbseite

ToeB

BeitragDo, März 04, 2010 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir CGamer ... aber der Schweif dreht sich nicht zur camera... sry... kann ich leider nicht gebrauchen .... aber wenn ich die DrawLine4D nicht bekommen nehm ich die gerne Wink

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!

Mr.Keks

BeitragDo, März 04, 2010 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier das Raketen-Schweif-System aus DGX. (Is 3d und SingleSurface... Genau für dein Problem gedacht.)
https://www.blitzforum.de/foru...540#361540
MrKeks.net

Xaymar

ehemals "Cgamer"

BeitragDo, März 04, 2010 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
InitTrail(...) - Ganz am anfang
AddTrail(...)
UpdateTrail(...) - Vor Renderworld

dann sollte es gehen, siehe beispiel
Warbseite

ToeB

BeitragDo, März 04, 2010 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey danke Mr. Keks Smile Hat mir sehr geholfen !! Sieht vor allem schön aus !

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!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group