Schwarz und Farbe

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

 

Dreamora

BeitragFr, Feb 01, 2008 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Spiel lieber wieder mit 2D.

Bei der Menge an Fehlverständnis und scheinbarem Unwillen selbst grundlegende Befehle zu lernen bevor du komplexere Dinge machen willst (-> LoadTexture) hast du wenig Chance.

Und auf einem Terrain hast du immer nur eine Textur, du kannst nicht für die ersten 50 meter eine nehmen und für die nächsten 50m eine andere. Versteh net ganz was du mit "auf jeder einzelnen Textur" meinst.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

the FR3AK

BeitragFr, Feb 01, 2008 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube er will das machen was ich in diesem thread geschrieben habe ( leider bin ich immernochnicht zu einer Lösung gekommen -.-)

Megamag

BeitragFr, Feb 01, 2008 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, Draemora.
Ich meine, wenn ich "EntityTexture terrain,grasstex" benutze,
dann wird die 256X256 Textur vielleicht 20 Mal nebeneinander
auf dem Terrain gezeichnet. Und wenn ich "WritePixelFast" auf
"grasstex" anwende, wird auf jeder wiederholten Textur gezeichnet,
es soll aber nur auf einer von den wiederholten Texturen sein.

the FR3AK

BeitragFr, Feb 01, 2008 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Du meinst einfach das die Textur Getilet wird aber du willst nicht dass das gemacht wird sonder das die Textur über das ganze Mesh gestreckt wird...

Megamag

BeitragFr, Feb 01, 2008 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch, klar will ich, dass die Textur mehrmals da ist,
denn sonst würde das **** aussehen. ABer ich will
eben nur auf einer bestimmten den Code von hectic
ausführen.

the FR3AK

BeitragFr, Feb 01, 2008 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja ich versteh was du meinst...
Theoretisch müsste man einfach 2 Texturen übereinander legen und da wo der Wassertropfen oder sonstwas draufkommt wird dann halt an diesem Punkt die untenliegende textur sichtbar...

Aber wenn man nur eine Textur hat und diese verändert wird das bestimmt nix...

Megamag

BeitragFr, Feb 01, 2008 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ganz genau so, aber ich glaube du verstehst mich nicht!
Es ist doch zwanzig mal (oder mehr) die selbe Textur auf
dem Terrain!

the FR3AK

BeitragFr, Feb 01, 2008 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja -.- weil sie getilet wird.
Und da sich die Textur wiederholt und du sie ja änderst wird die Textur überall so eingezeichnet, was eigentlich logisch ist!

Megamag

BeitragFr, Feb 01, 2008 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Korrekt, und das soll anders sein, und ich weiß nicht wie.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 01, 2008 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie Dreamora schon sagte:

Zitat:
Bei der Menge an Fehlverständnis und scheinbarem Unwillen selbst grundlegende Befehle zu lernen bevor du komplexere Dinge machen willst...


Würde auch ich bereits dir dazu raten, sich erstmal mit einfacheren Dingen zu beschäftigen. Es ist ja nicht so, dass du diese eine Sache nicht verstehen könntest. Aber wenn du bereits hier so scheiterst, wirst auch in anderen Dingen nicht weiter kommen (meine Meinung). Letztendlich hast kein Erfolgsgefühl und verlierst schneller die Lust ans weiter machen.

Die von mir beschriebene Methode eignet sich nicht für einen immer wiedergebrauch einer und der selben Textur, davon war auch bis dahin nicht die rede. Von daher wäre es besser gewesen, gleich das ganze Problem kurz aber komplett zu erklären. Wenn deine ''Kacheln'' eine Map sein sollen, so könnte man es mit Quads (bestehend aus jeweils 2 Triangles) machen, und entsprechend nach Bedarf austauschen. Dann könntest du eine ganze Map eben schwarz/weiß oder farbig machen. Das ganze wäre dann aber nicht mehr so pixelgenau, sondern Tileweise und mit etwas mehr Mühe sogar mit Übergängen, die nicht so sehr auffallen. Das ganze liesse sich aber auch sehr gut mit rein 2D machen. Es ist in 2D sogar wesentlich einfacher.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Megamag

BeitragFr, Feb 01, 2008 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist nicht so das ich nicht gewillt bin, etwas auszuprobieren, aber
ich saß 3 Stunden an dem Ganzen und kam zu keiner Lösung (auch wenn
sich das für euch nicht wahrscheinlich anhört). Da wird man ja wohl hier mal
fragen dürfen, oder? Ich weiß eben nicht soviel über BB wie ihr. Ist das
ein Grund mich einfach abzuspeisen mit "Probier's selbst!"? Anscheinend
ist das bei euch genau der Fall. Wobei euch im Grunde ja auch egal sein
kann, ob ich was lerne oder nicht, hm?

BladeRunner

Moderator

BeitragFr, Feb 01, 2008 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt mach hier bitte nicht die beleidigte Leberwurst.
Das Thema ist eben für einen Neueinsteiger zu komplex, da ist es auch mit 3 Stunden nachdenken nicht getan. An sowas sitzt man unter Umständen Tage- bis wochenlang bis man ein gutes Konzept hat.
Du solltest eben erst mal gehen lernen bevor Du zu rennen versuchst.

Und hectic hat schon recht- die Fragestellung war inkomplett. Auch richtiges Fragen will eben gelernt sein.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Dreamora

BeitragFr, Feb 01, 2008 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitz4D hat Folgendes geschrieben:
Es ist nicht so das ich nicht gewillt bin, etwas auszuprobieren, aber
ich saß 3 Stunden an dem Ganzen und kam zu keiner Lösung (auch wenn
sich das für euch nicht wahrscheinlich anhört).
Da wird man ja wohl hier mal
fragen dürfen, oder? Ich weiß eben nicht soviel über BB wie ihr.


Das ist doch genau das Problem auf das wir dich versuchen aufmerksam zu machen.
Dir fehlt es an Grundlagenwissen.
Das heisst du bist gezwugen Stunden mit Trial & Error zu verbringen um auf eine Lösung zu kommen die im Endeffekt dann mit ziemlicher wahrscheinlichkeit dennoch nichts taugt.
Es ist elementar, dass du erst verstehst wie das ganze funktioniert und was es für Möglichkeiten gibt und diese Dinge auch als Werkzeug nutzen zu können.
Selbst wir wissen nicht alles, aber wir sind auch net seit gestern hier ... einige wie ich und andere kamen teilweise von anderen, ähnlichen Sprachen zu B3D und betreiben "die Spielchen" jetzt schon 5-10 Jahre, andere programmieren schon seit Amigazeiten.
Dein Ziel sollte es erst Mal sein dich mit den Befehlen und Möglichkeiten vertraut zu machen, dich daran zu gewöhnen und dann damit sukkzesive komplexere Probleme zu lösen.

Blitz4D hat Folgendes geschrieben:
Ist das
ein Grund mich einfach abzuspeisen mit "Probier's selbst!"? Anscheinend
ist das bei euch genau der Fall. Wobei euch im Grunde ja auch egal sein
kann, ob ich was lerne oder nicht, hm?


Programmieren ist learning by doing. Solange du es nicht selbst tust, wirst du auch nicht verstehen:
1. Was du tust
2. Warum du es so tust wie du es tust
3. Warum es überhaupt das tut was es tut
1 & 2 fallen bei allgemein erfahrenen Programmierern weg, aber 3 bleibt wohl oder übel bei allen Neulingen in Blitz über zum lernen. Da kommst du net drumherum und die Zeit es gründlich zu tun (3+ Monate) solltest du dir einfach nehmen, weil sonst hast du primär Frusterlebnise, nicht erfolgserlebnisse und rastest dann genau so aus, was dir höchstens ne Verwarnung und bei der 3. Verwarnung nen Bann einbringt, nicht jedoch das Spiel was du wolltest oder die Funktionalität die du gerne hättest.

Wenn es uns egal wär, würden wir Postings dieser Art und Threads wo kein "Fortschritt" sei es bezüglich Einsatz / Verständnis des Schreibers oder Annahme von Lösungsvorschlägen ganz einfach schreddern. Das passiert aber nur höchst selten.


Und was dein Problem betrifft: Damit eine Textur auf dem Terrain nicht getilt wird, nutz ScaleTexture und Skaliere sie um die Texturgrösse (TextureWidth, TextureHeight). Dann wird sie nur 1x angezeigt auf dem gesamten Terrain.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

kriD

Betreff: 2D ftw

BeitragFr, Feb 01, 2008 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
und nimm den Ratschlag an und versuch zuallererst 2D ansatzweise zu beherrschen

MfG kriD
Wenn ich du wäre, wäre ich lieber ich!

Megamag

BeitragMi, Feb 06, 2008 16:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ich habe mich nochmal rangesetzt und das insaner-Example
genommen. Ich habe einen Ball erstellt, der auf Space-druck
irgendwo, auf dem Tarrain erscheint, und da wo er hinfällt
soll Farbe sein. Es gibt aber ein Problem:
Code: [AUSKLAPPEN]



;Include "../start.bb"

Graphics3D 640,480,32,1

SeedRnd MilliSecs() 


SetBuffer BackBuffer()

Local Timer=CreateTimer(100)
Local TextureSW=LoadTexture("imageSW.png",1)
Local TextureFarbe=LoadTexture("imageFa.png",2)


Local TX=TextureWidth(TextureSW)
Local TY=TextureHeight(TextureSW)
Local X,Y,ARGB,MX,MY

Const TR=1,TERR=2
Collisions TR,TERR,2,1

tropfen=CreateSphere()
EntityType tropfen,TR
ScaleEntity tropfen,4,4,4
EntityColor tropfen,255,0,0


;/////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////

terrain=LoadTerrain( "hmap.bmp" )
TerrainDetail terrain,500,True
PositionEntity terrain,0,0,0
ScaleEntity terrain,1,50,1
EntityFX terrain,1
EntityType terrain,TERR


;setup multitexturing:
;
;dest=( ( (rock-grass) * track ) + grass ) * lighting
;


EntityTexture terrain,TextureSW,0,0
ScaleTexture TextureSW,TerrainSize(terrain),TerrainSize(terrain)   

camera=CreateCamera()
PositionEntity camera,0,200,0
RotateEntity camera,45,0,0

hwmt=True
HWMultiTex hwmt

While Not KeyHit(1)



If KeyHit(57) Then
PositionEntity tropfen,Rnd(TerrainSize(terrain)),200,Rnd(TerrainSize(terrain))
EndIf

MoveEntity tropfen,0,-2,0
;;;;;;;;;;;;;;;;;;;;;;;;;;
   MX=EntityX(tropfen)
   MY=EntityZ(tropfen)
   
   ;If EntityCollided(tropfen,TERR)=True
      For Y=-19 To 19
         For X=-19 To 19
            ARGB=ReadPixel(MX+X,MY+Y,TextureBuffer(TextureFarbe))
            WritePixel MX+X,MY+Y,$FF000000+(ARGB And $00FFFFFF),TextureBuffer(TextureSW)
         Next
      Next
   ;End If
   
   ;WaitTimer(Timer)
   ;RenderWorld
   ;Flip 0

;;;;;;;;;;;;;;;;;;;;;;;;;;;

   If KeyHit(17) wire=Not wire:WireFrame wire
   If KeyHit(57) hwmt=Not hwmt:HWMultiTex hwmt
   If KeyDown(30) TranslateEntity camera,0,-2,0
   If KeyDown(44) TranslateEntity camera,0,+2,0
   If KeyDown(203) TranslateEntity camera,-2,0,0
   If KeyDown(205) TranslateEntity camera,+2,0,0
   If KeyDown(200) TranslateEntity camera,0,0,+2
   If KeyDown(208) TranslateEntity camera,0,0,-2
   UpdateWorld
   RenderWorld
   Text 0,0,"HWMultiTex "+hwmt
   Text 0,20,MX
   Text 0,40,MY
   Text 0,80,TextureHeight(TextureSW)
   Text 0,100,TextureWidth(TextureSW)
   Text 0,140,TerrainSize(terrain)
   Flip 0
Wend
End

Der Ball trifft auf, und das bunte is immer gespiegelt da, wo der Ball
ist. Es ist schwer für euch, das nachzuvollziehen also probiert den
Code aus, dann seht ihr selbst.

PS: Hier íst alles, was ihr dazu braucht:
http://www.file-upload.net/dow...l.rar.html

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Feb 06, 2008 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Um die Position zu ermitteln musst du ...

Code: [AUSKLAPPEN]
MY=256-EntityZ(tropfen)


... machen, und ggf. am besten noch die farbige Textue in gleicher größe und gleichem Muster wie die SW-Textur ablegen, mit dem einzigem Unterschied, dass sie eben farbig ist.

edit1: Ausserdem solltest du bei 'Flip 0' unbedingt eine Bremse eingebaut/eingeschaltet haben, denn so läuft das Programm einfach nur schlecht (bei mir mit Aussetzern und asyncronem Ablauf).
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Megamag

BeitragMi, Feb 06, 2008 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
1.- Danke, hectic!
2.-Eigentlich sollten die gleich sein. Ich habe mich in der Datei vertan. Embarassed
3.-Was meinst du mit Bremse?
4.-Was passiert, wenn ich größere Texturen/Terrain benutzen will?
Es war mehr Zufall, dass das gestimmt hat...

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Feb 06, 2008 23:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu 1. Gerne doch

Zu 2. Achte noch darauf das du immer quadratische Texturen mit 2^x Kantenlänge benutzt

Zu 3. Mit 'Flip 0' läuft das Programm so schnell es geht. Wenn es 1000 FPS schaffen könnte, dann tut es das auch. Das ist besonders bei 3D-Programmen ein Problem, da zum einen viel Strom verbraten wird (unnötige Umweltbelastung und Gehäuselüfterlautstärke nimmt zu) und vor allem, dass dann oft die Grafikkarte nicht mehr syncron mit der CPU arbeitet. Es kommt dann zu kleinen Aussetzern, wo dann die Grafikkarte 1/4 Sekunde oder so wartet. Das nervt, und wie schon oft gesagt, der Monitor kann es eh nicht anzeigen.

Zu 4. Man sollte sich mit der Größe der Texturen im Rahmen halten. Bereits bei 2048er Texturen kannst du davon ausgehen, dass ein großer Prozentsatz der User diese nicht mehr laden können. Auch bei 1024 ist dies noch vereinzelnd der Fall, was aber mittlerweile meiner Meinung nach vernachlässigt werden kann. Beispiel: Eine 1024x1024 Textur nimmt 4MB Grafikspeicher ein. Eine 2048x2048 benötigt bereits 16MB Grafikspeicher.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group