[SigleSurface] Ein paar probleme
Übersicht

![]() |
ToeBBetreff: [SigleSurface] Ein paar probleme |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich hab nochmal meine SingleSurface Engine überarbeitet (Es klappt jetzt wunderbar !). Ich habe 30ms-Update eingebaut, Dass die Particle nur angezeigt werden wenn sie vor der camera sind usw.... Wie kann ich jetzt die einzelnen Partciel immer wie ein Sprite zur camera Drehen ? Ich glaub hectic hatte mal was mit TformVector oder so gesagt, aber da blick ich net durch... Wie macht man sowas ?
Außerdem habe ich ein problem, das die anzahl der Particle nicht immer korect ist (AK_PAT)... Woran liegt das ? Ich hab gerade versucht, noch eine UV-Koordinate einzubauen, damit man verschiednen Texturen aus einer großen auswählen kann... Aber da versagt auf einmal die Function... Bei der Function GetUV : Wenn ich eingebe "GetUV(PAT_MAIN,0,0,64,64)" dann funzt alles... Wenn ich aber eingebe : "GetUV(PAT_MAIN,uv1,uv2,64,64" (Wobei uv1 = 0 und uv2 = 0) dann exestiert auf einmal die Texture net.... Am besten geb ich euch erstmal den code : Code: [AUSKLAPPEN] Graphics3D 800,600,16,1
SetBuffer BackBuffer() Global CAM = CreateCamera() Global u1#,u2#,v1#,v2# Global R,G,B Global M = CreateMesh(),SU = CreateSurface(M) EntityFX M,18 Const MAX_PAT = 10000 Global AK_PAT = 0,AK_REN = 0,AK_UPDATE Global AK_MS = MilliSecs() Global PAT_MAIN = LoadTexture("FS.png",2) EntityTexture M,PAT_MAIN Dim PAT#(MAX_PAT,13) Global Timer = CreateTimer(75) CameraClsColor CAM,64,64,64 Repeat MS=MilliSecs():FPSz=FPSz+1 If MS>FPSt Then FPSt=MS+999:FPS=FPSz:FPSz=0 If KeyDown(57) Then For i = 1 To 10 TEX = Rand(0,1) If TEX = 0 uv_u = 0:uv_v = 0 If TEX = 1 uv_u = 64:uv_v = 0 CreatePAT(uv_u,uv_v,0,0,5,Rnd(-0.100,0.100),Rnd(-0.100,0.100),Rnd(-0.100,0.100),Rnd(0.1,1.0),Rnd(0.25,1.0),255,255,200,Rand(500,1000)) Next EndIf TurnEntity CAM,+MouseYSpeed()/3,0,0,0 TurnEntity CAM,0,-MouseXSpeed()/3,0,1 If KeyDown(17) Then MoveEntity(CAM,0,0,0.1) MoveMouse 400,300 UpdatePAT() RenderWorld() Text 1,1,"FPS: "+FPS+" PARTICLES ALL: "+AK_PAT+" PARTCILES RENDERED: "+AK_REN Flip Until KeyHit(1) End Function AddRect(xx#,yy#,zz#,sc#,a#=1) End Function Function CreatePat(uv_v#,uv_u#,xx#,yy#,zz#,sx#,sy#,sz#,SC#,a#,Rc,Gc,Bc,grenz=-1) If AK_PAT < MAX_PAT If grenz = -1 grenz = 100+Rand(-10,10) Local RGB = 1*$1000000+Rc*$10000+Gc*$100+Bc GetUV(FS,64,0,64,64) PAT(AK_PAT,0 ) = 1 PAT(AK_PAT,1 ) = xx PAT(AK_PAT,2 ) = yy PAT(AK_PAT,3 ) = zz PAT(AK_PAT,4 ) = sx PAT(AK_PAT,5 ) = sy PAT(AK_PAT,6 ) = sz PAT(AK_PAT,7 ) = RGB PAT(AK_PAT,8 ) = 0 PAT(AK_PAT,9 ) = grenz PAT(AK_PAT,10) = SC PAT(AK_PAT,11) = a# PAT(AK_PAT,12) = uv_u# PAT(AK_PAT,13) = uv_v# AK_PAT = AK_PAT + 1 ;|<<<<< wird nicht richtig berechnet EndIf End Function Function GetUV(Texture,x,y,bw,bh) ;If Texture = 0 Return Local w# = TextureWidth(Texture) Local h# = TextureHeight(Texture) Local p1# = (1.0/w#),p2# = (1.0/h#) u1# = x*p1 v1# = y*p2 u2# = (x+bw)*p1 v2# = (y+bh)*p2 End Function Function UpdatePAT() If AK_MS <= MilliSecs() - 30 Then AK_UPDATE = 1 PAT_CLEAR() AK_MS = MilliSecs();30ms Update EndIf AK_REN = 0 For i = 0 To AK_PAT If PAT(i,0) = 1 xx# = PAT(i,1) yy# = PAT(i,2) zz# = PAT(i,3) RGB = PAT(i,7) R = (RGB And $FF0000) / $10000 G = (RGB And $FF00 ) / $100 B = (RGB And $FF ) SC#= PAT(i,10) uv1# = PAT(i,12) ;|<<<<<< funzt net uv2# = PAT(i,13) ;|<<<<<< funtz auch net GetUV(PAT_MAIN,uv1,uv2,64,64) x2# = SC y2# = SC z2# = SC a# = PAT(i,11) If AK_UPDATE = 1 CameraProject(CAM,xx,yy,zz) If RectsOverlap(ProjectedX()-50,ProjectedY()-50,100,100,0,0,GraphicsWidth(),GraphicsHeight()) ve1 = AddVertex(SU,xx-x2,yy+y2,zz+z2) : VertexTexCoords(SU,ve1,u1,v1) ve2 = AddVertex(SU,xx+x2,yy+y2,zz+z2) : VertexTexCoords(SU,ve2,u2,v1) ve3 = AddVertex(SU,xx-x2,yy-y2,zz+z2) : VertexTexCoords(SU,ve3,u1,v2) ve4 = AddVertex(SU,xx+x2,yy-y2,zz+z2) : VertexTexCoords(SU,ve4,u2,v2) AddTriangle(SU,ve1,ve2,ve3) AddTriangle(SU,ve3,ve2,ve4) VertexColor(SU,ve1,R,G,B,a) VertexColor(SU,ve2,R,G,B,a) VertexColor(SU,ve3,R,G,B,a) VertexColor(SU,ve4,R,G,B,a) AK_REN = AK_REN + 1 EndIf EndIf PAT(i,8) = PAT(i,8) + 1 If PAT(i,8) => PAT(i,9) Then For m = 0 To 10 TEMP = PAT(i,m) PAT(i,m) = PAT(AK_PAT,m) PAT(AK_PAT,m) = TEMP Next pat(i,0) = 0 AK_PAT = AK_PAT - 1 ;|<<<<< wird nicht richtig berechnet EndIf EndIf Next For i = 0 To AK_PAT If PAT(i,0) = 1 For m = 1 To 3 PAT(i,m) = PAT(i,m)+PAT(i,m+3) Next EndIf Next AK_UPDATE = 0 End Function Function PAT_Clear() ClearSurface(SU) End Function Und hier noch das PAT_MAIN-Image für die dies Testen wollen... Ich hoffe ihr verstht mich und habt eine Lösung ![]() 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! |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zur ersten Sache:
Die einfachste Möglichkeit ist es, das Sprite-Mesh an die Camera zu hängen (EDIT: EntityParent ![]() ![]() |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
- Zuletzt bearbeitet von aMul am So, Aug 10, 2008 16:27, insgesamt einmal bearbeitet
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Meinst du EntityParent![]() ![]() ![]() Aber so wie ich das mit CameraProject gemacht habe geht das doch auch oder ?? mfg ToeB Edit: Ich hab das jetzt nicht so ganz verstanden.... Wie drehe ich die Partciel zur Camera ? 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! |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du das Mesh an die Kamera hängst, dann sind die Partikel automatisch Richtung Kamera gedreht, du kannst sie dann ganz einfach erstellen, als ob du sie nur 2D anzeigen wolltest.
Und ja, ich meinte EntityParent ![]() ![]() Und wieder ja, es geht auch mit CameraProject ![]() (Ich empfehle nicht für jede Frage zum selben Thema einen neuen Thread aufzumachen, nur weil nicht ganz so schnell geantwortet wird.) |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
geht ja nich mit sprites wenn ers single surface machen will oO | ||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich muss dich enttäuschen Goodjee, aber das war allen Beteiligten klar. ![]() Du bist der erste der von Blitz-Sprites redet. |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
hoppla...da hast du recht...dennoch ist es doof gleich das sprite mesh an die kamera zu hängen, da sind ja alle sprites drin...wenn ich mich nun drehe drehen sich alle sprites mit und sind noch immer an der gleichen stelle...dass is ja nich das ziel, sondern dass man sie immer von vorne sieht, egal wo sie stehen | ||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
aMul hat Folgendes geschrieben: (...) und dann die globalen Koordinaten der Sprites mit TFormPoint
![]() EDIT: Ich weiß übrigens wovon ich rede, ich habe sowas schon mal programmiert. ![]() |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay das habe ich jetzt mal versucht :
Code: [AUSKLAPPEN] TFormPoint(FXPos-IXPos1,FYPos+IYPos1,FZPos+IZPos1,0,CAM):Local IX1#=TFormedX():IY1#=TFormedY():IZ1#=TFormedZ()
TFormPoint(FXPos+IXPos1,FYPos+IYPos1,FZPos+IZPos1,0,CAM):Local IX2#=TFormedX():IY2#=TFormedY():IZ2#=TFormedZ() TFormPoint(FXPos-IXPos1,FYPos-IYPos1,FZPos-IZPos1,0,CAM):Local IX3#=TFormedX():IY3#=TFormedY():IZ3#=TFormedZ() TFormPoint(FXPos+IXPos1,FYPos-IYPos1,FZPos-IZPos1,0,CAM):Local IX4#=TFormedX():IY4#=TFormedY():IZ4#=TFormedZ() PatV0 = AddVertex(ISurf,IX1,IY1,IZ1,0,0) PatV1 = AddVertex(ISurf,IX2,IY2,IZ2,1,0) PatV2 = AddVertex(ISurf,IX3,IY3,IZ3,0,1) PatV3 = AddVertex(ISurf,IX4,IY4,IZ4,1,1) Aber das funzt net... Warum ? 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! |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wer hat von viermal TForm geredet?
Du musst das nur einmal benutzen und kannst dadurch dann den Mittelpunkt vom Partikel berechnen. Von diesem Mittelpunkt ausgehen kannst du dann deine Polys erstellen, wie man es auch in 2D machen würde. |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aber dann dreht sich der Particle ja gar net zur camera !?
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! |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Denk mal drüber nach, was EntityParent![]() |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso habe verstanden !
Danke !! 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! |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay sry für doppelpost, wollte keinen neuen Threat aufmachen und damit einer das hier noch liest ![]() Zu meinem Problem(en) : ![]() ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. wenn du mit sichtbar meinst, ob der partikel im kamerasichtfeld ist, dann musst du eigentlich nur etwas mit den koordinaten im kameraraum basteln. wenn z < 0, dann ist der partikel ganz sicher nicht sichtbar. ansonsten ist die breite des sichtfrustums gleich der doppelten tiefe 2*z, und die höhe die breite mal das seitenverhältnis der aktuellen auflösung.
2. den genauen abstand zur kamera kannst du mittels entitydistance ![]() |
||
MrKeks.net |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. Dummy Pivot und EntityInView zb oder die 3D coords nach 2D coords projizieren und gucken ob sie im bereich 0,0 - graphicswidth, graphicsheight sind
2. EntityDistance oder dx*dx + dy*dy + dz*dz und dann mit squared distance arbeiten. Vergiss bei deiner implementation einfach net, das du kein alpha zwischen 0 und 0.47 haben solltest soferns über weitere distanz sichtbar ist sonst bekommst du lustige tiefensortierungsprobleme falls nochwas mit alpha da rum ist. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay Danke erstmal, aber könnt ihr mir das nicht noch ein bisschen genauer erklären ?
Code: [AUSKLAPPEN] dis# = Sqr((EntityX(camera)-xx)^2+(EntityZ(camera)-zz)^2)
Funtz iwie net richtig.... Und das mit dem sichtfel z*2 etc. hab ich auch net verstanden... 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! |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deine Formel funktioniert nicht, weil du die Y-Koordinate vernachlässigst.
Und wie Mr.Keks schon sagte ist es wesentlich einfacher und um einiges schneller, wenn du mit den Koordinaten relativ zur Kamera(die du mit den TForm rausgefunden hast) arbeitest. Hier kannst du den Alpha-Wert einfach entsprechend der Z-Koordinate anpassen. Und ob ein Sprite im Sichtfeld ist findest du heraus, indem du es auf Kollision mit dem Sichtfeld der Kamera prüfst. Dieses ist eine Pyramide, womit man sich die ganzen komplizierten Rechnungen sparen kann, wie der Keks auch schon angedeutet hat. |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group