AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Texturbearbeitung

Ein Thema von VkPenguin · begonnen am 5. Mär 2013 · letzter Beitrag vom 12. Mär 2013
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#1

AW: Texturbearbeitung

  Alt 6. Mär 2013, 10:09
der Spass liegt für mich aber darin es selbst zu programmieren..
OpenGL und DX machen jetzt auch nicht so wahnsinnig viel automatisch - da kommst du sicherlich noch genug zum Selbermachen. Allerdings sind die 3D APIs gerade was das Handhaben von Texturen angeht doch eine große Hilfe (in Sachen Komfort aber auch Geschwindigkeit).

Dein Problem, dass der von der Windows GDI bereit gestellte Bitmap-Filler keine perspektivische Verzerrungen kennt ist unumgänglich. Du müsstest auf diese einfach Art des Flächen füllens gänzlich verzichten, und im Grunde deine Bitmaps Pixel für Pixel selbst sowohl mappen als auch zeichnen. Ohne eine vernünftige Matrixdarstellung der Welt ist das schon fast ein Ding der Unmöglichkeit (zumindest wird man oft mit Singularitäten und horrend unübersichtlichen und daher fehlerträchtigen Termen konfrontiert).
Beim Textur-Mapping scheint mir eine Grenze deines prinzipiellen Ansatzes einfach erreicht zu sein. Bzw. wäre der Aufwand und die Problemchen die man sich damit mittelfristig einhandeln würden das Ergebnis wohl nicht wert.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#2

AW: Texturbearbeitung

  Alt 6. Mär 2013, 13:21
Auch wenn ich nun natürlich immer noch nicht weiter bin weiß ich immerhin, dass es so, wie ich es mir erst dachte wohl nicht geht. Ich würde aber trotzdem gern auf Erweiterungen verzichten, zur Not lasse ich Texturen eben ganz weg. Einen (natürlich keineswegs optimalen) Weg gibt es aber glaube ich doch (und das würde mir schon reichen, es ist ja nur ein kleines Projekt zum Spaß und zum Üben der Syntax): wenn ich im Code

Canvas.StretchDraw(rect(...)),[TEXTUR]); schreibe, kommt im Prinzip das richtige raus. Nun ist Stretchdraw natürlich weder sonderlich effizient noch geschickt, aber immerhin funktionierts so. Allerdings funktioniert das ja nur mit Wänden, die exakt Rechteckig erscheinen. Seitenwände, also quasi Parallelogramme, kann ich damit nicht füllen. Hat jemand eine Idee, wie das geht? Ich könnte die Bitmap zwar passend zuschneiden/skalieren, aber wie kann ich die Bitmap zur Laufzeit skalieren ?
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Texturbearbeitung

  Alt 6. Mär 2013, 14:02
Das ist eben genau der Knackpunkt, auf den ich quasi hinaus wollte Ohne Matrizen wird diese Transformation zum einen kostspieliger (Trigonometrie ist einfach lahm), und ziemlich hässlich. Du musst deine Bilder Pixel für Pixel anfassen, und jeden quasi wie einen Eckpunkt deiner Geometrie auch durch die Projektionsmethode schubsen. Jetzt ganz kurz und vereinfacht gesagt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.869 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Texturbearbeitung

  Alt 6. Mär 2013, 14:04
P.S. ohne mathematische Kenntnisse tutst du dich auch bei Verwendung von OpenGL oder DX schwer.
Markus Kinzler
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#5

AW: Texturbearbeitung

  Alt 6. Mär 2013, 14:10
Hm. Du scheinst dich da ja gut auszukennen; weißt du denn, wie ich genug über Matrizen lernen kann, um das umzusetzen? Ich kenne Matrizen nur aus dem Matheunterricht und wüsste so jetzt nicht, was das mit Projektionsberechnungen zu tun haben soll

Aber um nochmal kurz auf meinen ursprünglichen Ansatz zurückzukommen: Es gibt wirklich keine Methode wie Stretchdraw(Obenrechts,Obenlinks,Untenrechts,Unten links,Bild)? Also genau dasselbe nur allgemein für Vierecke?

*Edit*: @Mkinzler: Mit Matrizenrechnung bin ich durchaus vertraut, ich hab nur keine Ahnung, wie ich die auf mein Problem anwenden soll..
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.869 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Texturbearbeitung

  Alt 6. Mär 2013, 14:26
Stichwort homogenisierte Koordinaten/Normalvektor. In einer Matrizenoperation kann ein Vektor auf einmal skaliert, rotiert und transponiert werden. Intern arbeiten die Grafikkarten auch mit diesen 4D-Tupeln.

http://iasp2.informatik.htw-dresden....Dgrafik_vp.pdf
http://www.hki.uni-koeln.de/sites/al...e_3dgrafik.pdf
http://www2.informatik.hu-berlin.de/.../3D-basics.pdf
Markus Kinzler

Geändert von mkinzler ( 6. Mär 2013 um 14:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Texturbearbeitung

  Alt 6. Mär 2013, 14:27
Lies den ganzen Thread nochmal durch... Links sind bereits gegeben!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#8

AW: Texturbearbeitung

  Alt 6. Mär 2013, 15:03
Damit werde ich wahrscheinlich erstmal eine Weile zu tun haben, vielen Dank an Euch. Hab es zusätzlich eben mal mit einfachem Skalieren des Patterns probiert, wenn man genug Zwischenschritte einbaut sieht das für den Anfang auch schon gar nicht so schlecht aus, auch wenn es eigentlich natürlich quatsch ist

*Edit* Eine (hoffentlich) ganz kurze Nachfrage noch: Wie kann ich Floodfill so verwenden, dass der Rand ebenfalls gefüllt wird? Also Floodfill+1Pixel in etwa.. Oder muss ich tatsächlich die ganze Fläche erst mit der Farbe des Rands füllen und dann nochmal mit FSSurface die andere Farbe/Textur drüber?

Geändert von VkPenguin ( 6. Mär 2013 um 18:33 Uhr)
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#9

AW: Texturbearbeitung

  Alt 10. Mär 2013, 10:47
Hallo noch einmal,

habe eure Tipps so gut ich konnte umgesetzt (also neu angefangen ). Das neue Programm auf Vektorbasis funktioniert auch schon ganz gut, es sieht zumindest nicht schlecht aus. Ich habe allerdings eine Frage zur Transformationsmatrix (Wie hier erklärt).

Wenn ich das so umsetze, passiert rein garnichts, ich wüsste aber auch nicht, wie es nach dem Modell anders sein sollte.

Laut der Internetseite soll die Transformationsmatrix so aussehen (zum verschieben)

Code:
(X+a)  (1 0 0 0) (X)
(Y+B)  (0 1 0 0) (Y)
(Z+C) = (0 0 1 0)*(Z)
(W)    (a b c 1) (W)
Also zum Beispiel:

Code:
(5+3)  (1 0 0 0) (5)
(6+2)  (0 1 0 0) (6)
(7+1) = (0 0 1 0)*(7)
(1)    (3 2 1 1) (1)
Aber man sieht doch sofort, dass am Ende immer nur ein größerer W-Wert rauskommt und alle anderen gleich bleiben.... wie soll das denn funktionieren?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz