Schwarz und Farbe
Übersicht

Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube er will das machen was ich in diesem thread geschrieben habe ( leider bin ich immernochnicht zu einer Lösung gekommen -.-) | ||
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Korrekt, und das soll anders sein, und ich weiß nicht wie. | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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? |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
![]() |
kriDBetreff: 2D ftw |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
1.- Danke, hectic!
2.-Eigentlich sollten die gleich sein. Ich habe mich in der Datei vertan. ![]() 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... |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group