Winkel
Übersicht

![]() |
Te(Y)HouseBetreff: Winkel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Leuz,
ich habe da so nen Problem... ich will ne Grafik mit Rotateimage drehen das ist allerdings ziemlich langsam! Nun habe ich es mit dieser Cos Funktion versucht bekomm es aber nicht hin z.B. ein Bild per Tastendruck um 90° zu drehen... währe über ein wenig Hilfe sehr dankbar! ^^ Mfg. Te(Y)House |
||
--------------
kcvd.rshost.de ------------- |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
schalte tformfilter aus, dann wird rotateimage etwas schneller.
prinzipell solltest du aber alle bilder im voraus berechnen, 2d-realtimebearbeitung ist (anders als in 3d) seehr langsam. |
||
![]() |
Te(Y)House |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja nur trotz Tformfilter 0 ist es viel zu langsam! Es soll in Realtime sein!
Kann mir vielleicht jemand erklären wie es anhand von der Cos funktion funktioniet? Also einfach ein Bild per Taste zu drehen um z.B: 90° ? |
||
--------------
kcvd.rshost.de ------------- |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sprite erstellen, Textur drauf, drehen
oder: SingleSurfacetechnik (gibts massig Erklärungen im Forum) Realtimedrehungen in 2D sind viel zu lahm |
||
![]() |
Te(Y)House |
![]() Antworten mit Zitat ![]() |
---|---|---|
sind sie auch zu langsam wenn ich es mit Cos irgendwie mache? | ||
--------------
kcvd.rshost.de ------------- |
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Cos ist eine mathematische Funktion, was genau möchtest Du damit machen?!
Wenn Du Pixel für Pixel das Bild auslesen willst, die Koordinaten umrechnen und dann auf den Backbuffer zeichnen möchtest, wird dies vermutlich noch sehr viel langsamer sein als eine Imagerotation. ![]() |
||
![]() |
Te(Y)House |
![]() Antworten mit Zitat ![]() |
---|---|---|
achso... naja um nochmal zu erklären was ich machen will:
Ich will Bilder in Realtime drehen, also wie als würde ich die Funktion Rotateimage benutzen! Doch ist diese trost TFormfilter auf 0 immer noch viiieeellll zu langsam... also suche ich halt nach ner möglichkeit meine Bilder schneller zu drehen? Und glaubt mir, ich will nicht für eine Animation 360 Einzel Bilder Rendern... glaub mir das macht wirklich keine Spaß ![]() Also, help pls ^^ |
||
--------------
kcvd.rshost.de ------------- |
Mr Hopp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nunja...entweder du lädst im Vorraus (Dim Bild(359)), oder du musst eine entsprechende Grafik erstellen und als Animation laden. Aber letzteres willst du ja nicht... Beispiel für ersteres:
Code: [AUSKLAPPEN] Dim vehicle(359)
;Folgender Block lädt das vehicle AutoMidHandle 1 For i=0 To 359 vehicle(i)=LoadImage("gfx\Auto.PNG") MaskImage vehicle(i),1,0,0 RotateImage vehicle(i),i Next AutoMidHandle 0 |
||
Zitat:
Wie poste ich falsch? Nachdem ich Google, die FAQ's und die Boardsuche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen, in den falschen Unterforen, mit kreativen Titeln und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann. |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vorberechnung ist hier die einzige Möglichkeit, wenn Du keine B3D-Funktionen benutzen kannst.
Normalerweise sollten 32 Rotationsstufen ausreichen(also z.B. alle 11,25 Grad). Wenn es ganz flüssig sein soll, kann man hier auch z.B. 5 Grad Schritte machen, denn zwischen z.B. 0 und 1 Grad ist das Bild sowieso identisch, da die einzelnen Pixel ja entsprechend hingerundet werden... |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
![]() |
Te(Y)House |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Dim vehicle(359)
;Folgender Block lädt das vehicle AutoMidHandle 1 For i=0 To 359 vehicle(i)=LoadImage("gfx\Auto.PNG") MaskImage vehicle(i),1,0,0 RotateImage vehicle(i),i Next AutoMidHandle 0 Thx für den Code + die Erklärung! Ich denke das es mir sehr weiterhelfen wird! ![]() |
||
--------------
kcvd.rshost.de ------------- |
![]() |
Te(Y)House |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab da nen Problem:
Zitat: cls
;Dim vehicle(359) Für 360 Dim vehicle(180) ;Folgender Block lädt das vehicle AutoMidHandle 1 ;For i=0 To 359 ; Für 360 For i=0 To 180 vehicle(i)=LoadImage("test.bmp") ;MaskImage vehicle(i),1,0,0 RotateImage vehicle(i),i pro = pro +1 Cls Color 255,255,255 Text 20,20, "Laden..." + pro + " /360" Color 0,0,$666666 Rect 20,40,360,20,0 Color 0,0,$999999 Rect 20,41,x,18,1 x = x +1 Next AutoMidHandle 0 x = 120 y = 140 Repeat SetBuffer BackBuffer () Flip Cls Color 255,255,255 Text 20,20, "Press > for Rotate Right" Text 20,40, "Press < for Rotate Left" text 20,60, "[ESC]" Tformfilter 1 DrawImage vehicle(ji),x,y If Keydown (205) Then ji = ji + 2 EndIf If Keydown (203) Then ji = ji - 2 EndIf If ji >= 359 Then ji = 0 EndIf If ji >= 180 Then ji = 180 If ji <= 0 Then ji = 0 Until KeyDown (1) End Ich sehe die Ladeleiste nur wenn ich in meinem Compiler den Debug-Mode an hab, ist er aus sehe ich sie nicht mehr...!? Wie kann man das umgehen? |
||
--------------
kcvd.rshost.de ------------- |
![]() |
Te(Y)House |
![]() Antworten mit Zitat ![]() |
---|---|---|
hab das Gefühl der geht hier gerade nen bischen unter... deswegen *push* | ||
--------------
kcvd.rshost.de ------------- |
![]() |
Hagbard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das liegt wohl daran, dass das so schnell geht!
Bau mal ein WaitKey() in die For next Schleife, dann siehst du es. Setbuffer Backbuffer() sollte aus der Hauptschleife raus, also davor. |
||
![]() |
Te(Y)House |
![]() Antworten mit Zitat ![]() |
---|---|---|
wieso soll ich Setbuffer Backbuffer() aus der schleife nehmen?
Ein Delay 20 hat es jetzt auch getan ^^ |
||
--------------
kcvd.rshost.de ------------- |
![]() |
AxeBetreff: Optimierung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab den Code mal ein bisschen optimiert und kleinere Fehler beseitigt:
Neuer Code: [AUSKLAPPEN] Graphics 800,600,32,2 ;Auflösung 800*600*32 im festen Fenster SetBuffer BackBuffer() Dim vehicle(360) AutoMidHandle 1 TFormFilter 1 ;Folgender Block lädt das vehicle For i=0 To 360 Step 2 vehicle(i)=LoadImage("test.bmp") RotateImage vehicle(i),i If (i Mod 90)=0 Then;also nur bei 90,180,275° Color 255,255,255 Text 20,20, "Laden..." + i/90*25 + "%" Color 0,0,$666666 Rect 20,40,360,20,0 Color 0,0,$999999 Rect 20,41,i,18,1 Flip Cls EndIf Next x = 120 y = 140 Color 255,255,255 Repeat Flip Cls Text 20,20, "Press > for Rotate Right" Text 20,40, "Press < for Rotate Left" Text 20,60, "[ESC]" If KeyDown (205) Then ji = ji + 2 If KeyDown (203) Then ji = ji - 2 If ji > 360 Then ji = 0 If ji < 0 Then ji=360 DrawImage vehicle(ji),x,y Until KeyDown (1) End |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group