Texture doesn't exists - warum?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Megamag

Betreff: Texture doesn't exists - warum?

BeitragDo, Jun 05, 2008 10:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo. Ich sitze immer noch am Schuss und habe folgenden Code:
Code: [AUSKLAPPEN]
Pshot = LoadSprite("GFX\MinMis.bmp")
Ptex = LoadAnimTexture("GFX\MinMisStripe.png",1,16,16,1,4)
EntityTexture Pshot,Ptex
HideEntity Pshot
ScaleEntity Pshot,.35,.35,.35

Da kommt aber immer die Meldung "Texture doesn't exists ".
Dabei wird das Kommando
Code: [AUSKLAPPEN]
EntityTexture Pshot,Ptex

hervorgehoben. Ohne das Kommando funktioniert es.
Was habe ich falsch gemacht?

garret

BeitragDo, Jun 05, 2008 10:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Spontan fallen mir drei Ansätze ein, da der Fehler ja übersetzt heißt: Textur existiert nicht!

1. Die Grafik ist im falschen Ordner oder du hast dich beim Namen verschrieben.

2. Du hast die Demo, die meines Wissens nach keine .png-Dateien, sondern nur .bmp öffnen kann.

3. Das Format der Textur stimmt nicht, aber wie es sein muss, damit kenne ich mich nicht aus.


MfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

Megamag

BeitragDo, Jun 05, 2008 10:32
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Nein, die ist im richtigen Ordner, sonst wäre der Fehler ja schon beim Laden gekommen.

2. Nein, ich habe die Vollversion und, davon mal ab, es auch mit bmp versucht.

3. Doch, das ist 64x16, hat vier Frames mit je 16x16.

Hier:
user posted image

Trotzdem danke.
 

Dreamora

BeitragDo, Jun 05, 2008 11:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Textur ist nicht quadratisch und 2er potenz.
Das verletzt den DX7 standard und wird auf verschiedenen karten und vor allem neuen Treibern dazu führen, das die Texturen garnimmer geladen werden weil die Grafiktreiber heute im unterschied zu früher nimmer dem Programmierer den Müll nachtragen.

Da Blitz die animtextures via UV handhabt musst du also deine Textur vorweg 2er potenz quadratisch machen. In deinem fall wär das hier wohl 32x32 falls du nur die 4 frames willst.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Megamag

BeitragDo, Jun 05, 2008 11:45
Antworten mit Zitat
Benutzer-Profile anzeigen
64x64 müsste es dann sein, da ein Frame 16x16 ist.

Es geht, dh. es kommt kein Fehler, aber jetzt wird NUR das
2. Frame angezeigt. Wieso nur das zweite?
Hier das Bild:
user posted image

Und hier nochmal der Code:
Code: [AUSKLAPPEN]
Pshot = CreateSprite() ;LoadSprite("GFX\MinMis.bmp")
ScaleEntity Pshot,.35,.35,.35
Ptex = LoadAnimTexture("GFX\MinMisQuad.png",1,16,16,1,4)
EntityTexture Pshot,Ptex
HideEntity Pshot
 

Dreamora

BeitragDo, Jun 05, 2008 11:56
Antworten mit Zitat
Benutzer-Profile anzeigen
naja du lädst ab frame 2 4 frames da.
Denn du gibst 1,4 an
-> das erste frame is frame 1, die frames starten bei 0 -> 2. Frame
-> du lädst 4 frames -> 2, .., 5 wobei das 5te natürlich schwarz ist.

Aber wenn ich so drüber nachdenk könnte auch das der grund sein warums oben net geht. Du hast ne textur mit 4 frames und versuchst 5 frames zu laden. kann logischerweise net gehen.
Lesen der dokumentation ( zb https://www.blitzforum.de/help/LoadAnimTexture ) hilft ungemein Wink

und 32x32 wär auch gegangen, deine frames sind 16x16 gross
2x2 davon = 32x32
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Megamag

BeitragDo, Jun 05, 2008 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, ich habe jetzt 0,3 angegeben, aber da bewegt sich immer noch nichts...
 

Dreamora

BeitragDo, Jun 05, 2008 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
bewegen wird sich auch nichts. das frame musst du manuell setzen.
das ist keine zaubermagie oder so, von selbst wird sich das frame net ändern. mit loadanimtexture sagst du nur was für die animierte textur genutzt werden soll. aber die timing routine um das ganze zu animieren etc musst du dazu selbst schreiben.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Megamag

BeitragDo, Jun 05, 2008 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, also mache ich eine Variable, erhöhe
sie in der Hauptschleife, wenn sie höher als 3
ist, setzte ich sie wieder auf 0 und ich Texturiere
das Sprite immer wieder neu. Danke.
 

Dreamora

BeitragDo, Jun 05, 2008 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn du nur 1 sprite hast ja.
ansonsten, nein.

dann nutzt du types, hast etwas was "event types" überwacht und wenn ein event "switch frame" aktiv wird, wird das frame aktualisiert und auf dem sprite entsprechend ein neues frame gesetzt und ein neues event erzeugt das in XY millisekunden aktiv wird. sprite handle und aktuelles frame wären dann im event type gespeichert.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Megamag

BeitragDo, Jun 05, 2008 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe eine "Updatefunktion" für die Schüsse, in der
man das machen könnte.
 

Dreamora

BeitragDo, Jun 05, 2008 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
wäre eine möglichkeit, würde es aber in ne eigene update funktion packen, updateAnimation wo du dann jede type instance durchgehst bzw. am besten sortierst du die "animation event" type objekte nach ihrer "ablaufzeit" so das du nur solange durchgehen musst bis du das erste objekt gefunden hast das nicht mehr aktiv ist und dann mit exit abbrechen kannst. spart dir viel zeit
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Megamag

BeitragDo, Jun 05, 2008 13:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab's jetzt mal so probiert:
Code: [AUSKLAPPEN]
Function update_pshot()
 For ps.T_Pshot=Each T_Pshot
  TranslateEntity ps\ent,0.5,0,0
  TurnEntity ps\ent,0,8,0

  If ps\frame<4 Then
  ps\frame=ps\frame+1
  Else
  ps\frame=0
  EndIf
 
  EntityTexture ps\ent,ps\tex,ps\frame
 
  ;create_PshotAlp(EntityX(ps\ent),EntityY(ps\ent),EntityZ(ps\ent),ps\ent)
  If EntityX(ps\ent)>20 FreeEntity ps\ent: Delete ps
 Next
End Function

Aber es wird das erste Frame angezeigt, dann eine weiße Box, 1. Frame, weiße Box und immer so weiter. Wieso?
 

Dreamora

BeitragDo, Jun 05, 2008 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm warums weiss und net weiss ist kann ich grad net sagen, bin mir jedoch net sicher dass Sprites für animierte texturen genutzt werden können (vermeide sprites normalerweise, da jeder sprite ne eigene surface ist. sowas wie Draw3D oder eigenes Single Surface Sprite system ist besser). Was ich aber sagen kann ist das du keine animation bekommst wenn du bei jedem update das frame raufdrehst weil dann ändert das frame 60-XXXX mal pro sekunde was viel zu schnell ist.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Megamag

BeitragDo, Jun 05, 2008 13:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch, geht.
Wenn ich den Speed auf 0.1 runtermach, dann
sieht man einen wechsel. Aber das Kästchen kommt trotzdem.
Frame 1
Frame 2
(eig. Frame 3) Kästchen
(eig. Frame 4) Kästchen
usw.
 

Dreamora

BeitragDo, Jun 05, 2008 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
hab jetzt grad nochma gelesen was du oben geschrieben hast.
du musst 0,4 machen, net 0,3, solltest du das noch haben. denn 0,3 würde heissen das du nur 3 frames hast, net 4.

Die parameter sind: start frame, anzahl frames
net start frame, end frame
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Megamag

BeitragDo, Jun 05, 2008 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast recht Embarassed
Jetzt geht's!
Danke, Draemora!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group