Sprite skalieren ..

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Verge3000

Betreff: Sprite skalieren ..

BeitragMi, Jun 16, 2004 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie skaliere ich ein Sprite, das ein Bild von 800x600 Größe ist exakt und passend auf den Bildschirm, kurz, so dass es Originalgröße annimmt. Denn bei mir ist ein Sprite von Grund auf erstmal verzerrt.
Woher soll ich wissen was ich denke, bevor ich höre was ich sage?

ChrisAttack

BeitragMi, Jun 16, 2004 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
scalesprite image_handel,x,y
B3D
MSVC++
DX9SDK

Verge3000

BeitragMi, Jun 16, 2004 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja der Befehl ist mir klar. Aber bei

scalesprite titelbild,1,1

ist das Bild verzerrt. Ich bekomm es so nicht auf Originalgröße. Das wäre ja rumprobieren ohne Ende.
Woher soll ich wissen was ich denke, bevor ich höre was ich sage?
 

Dreamora

BeitragMi, Jun 16, 2004 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
muss im verhältnis 4 : 3 gescaled werden, wie der bildschirm ja auch is
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Verge3000

BeitragMi, Jun 16, 2004 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Sagt mir nun leider wenig. Wie müsste der Befehl dann lauten ?!? Confused
Woher soll ich wissen was ich denke, bevor ich höre was ich sage?
 

Dreamora

BeitragMi, Jun 16, 2004 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
ScaleFactor = 200

scalesprite sprite, 4 * scalefactor, 3 * scalefactor

bitte erst überlegen, dann fragen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

imagodespira

BeitragMi, Jun 16, 2004 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin mir nicht sicher, aber ein Sprite wird automatisch von Blitz auf eine größe wie 256x256, 512x512, 1024x1024 usw. skaliert... also wird es schwierig das auf 800x600 exakt zu bekommen...

liege ich da richtig, oder falsch ????


Wenn richtig, dann auf 1024x1024 in der Bildbearbeitung skalieren und dann in Blitz in das richtige verhältnis rechnen lassen... (mit scaleSprite() ).

... wie gesagt, ich kann mich auch täuschen.

Für was brauchst Du so ein großés Sprite? Für ein Hintergrundbild kannst du doch das in 2d machen und den Rest darüberlegen als 3D. So mach ich das...


Hier noch ein Link, damit es Pixelgenau bleibt:

http://www.unrealsoftware.de/n..._bb_3dto2d

Das ist wichtig für HUD´s, vielleicht hilft Dir das weiter.

Verge3000

BeitragMi, Jun 16, 2004 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will einfach nur ein Titelbild machen das einfadet und ausfadet. Hier der Code:

Zitat:
Function intro()

kamera=CreateCamera()
PositionEntity kamera,0,0,-1

titelbild=LoadSprite("grafik\v-titelbild.jpg")

SpriteViewMode titelbild,1

For i# = 0 To 100

EntityAlpha titelbild,i/100

UpdateWorld
RenderWorld

Flip

Next

WaitKey

For i# = 100 To 0 Step -1

EntityAlpha titelbild,i/100

UpdateWorld
RenderWorld

Flip

Next

FreeEntity titelbild

Cls

;
; Intro endet
;

End Function


Leider ist das 800x600 Bild dann sehr in der Höhe verzerrt und so. Graphics3D ist bei mir auch 800x600. Das Sprite also das Bild ist auch 800x600. Doch ich bekomme es nicht genau skaliert.
Woher soll ich wissen was ich denke, bevor ich höre was ich sage?
 

furbolg

BeitragDo, Jun 17, 2004 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
ProjCamMode oder so

Verge3000

BeitragDo, Jun 17, 2004 0:07
Antworten mit Zitat
Benutzer-Profile anzeigen
So, so funktioniert es im Grunde genommen nun:

Zitat:
;
; Intro beginnt
;

intro()

Function intro()

kamera=CreateCamera()

titelbild=LoadSprite("grafik\v-titelbild.jpg")
ScaleSprite titelbild,800,600
PositionEntity titelbild,((0)*2)-800+800,-((0)*2)+600-600,800

SpriteViewMode titelbild,1

For i# = 0 To 100

EntityAlpha titelbild,i/100

UpdateWorld
RenderWorld

Flip

Next

WaitKey

For i# = 100 To 0 Step -1

EntityAlpha titelbild,i/100

UpdateWorld
RenderWorld

Flip

Next

FreeEntity titelbild
FreeEntity kamera

Cls

;
; Intro endet
;

End Function


Das Bild ist nun genau skaliert, jedoch trotzdem ich sag mal ein wenig verpixelt oder verzerrt. Nicht so klar wie ein Image. Kann man nicht ein Image faden oder ist noch was unkorrekt an dem Code?
Woher soll ich wissen was ich denke, bevor ich höre was ich sage?

imagodespira

BeitragDo, Jun 17, 2004 8:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst das Problem umgehen, wenn Du ein Hinterundbild als Image einlädst:

hg = loadimage("bild.bmp")
drawimage hg, 0, 0 ;ausserhalb der Schleife, gleich nach dem Laden

... und dann nicht das Bild fadest, sondern ein schwarzes Sprite erstellst und das fadest...

fade = createSprite()
EntityColor fade, 0, 0, 0 ;die Farbe des Hintergrundes

Bei der Kamera musst Du dann aber den CLSMode ändern:

CameraClsMode kamera, 0, 1 ;dann sollte der Hintergrund nicht gelöscht werden

Verge3000

BeitragDo, Jun 17, 2004 9:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Interessanter Ansatz. Klingt gut und probier ich heute Abend wenn ich von der Arbeit wieder zuhaus bin mal aus.
Woher soll ich wissen was ich denke, bevor ich höre was ich sage?

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group