(programmiersprache egal)eigene3d-engine, wie geht MAPPING?
lima-city → Forum → Programmiersprachen → Basic
angeben
anleitung
beliebige dreiecke
bild
bildausschnitt
dreieck
einfaches dreieck
form
frage
grundlage
http
klebe
koordinate
mappe
punkt
sagen
url
verdeutlichung
verzerrte bild
welt
-
Hallo
Ich bin dabei ,just for fun, eine eigene 3d-engine zu schreiben (freebasic).
Das besondere daran ist das ich sie bewusst in Isometrischer Ansicht habe.
Das funktioniert soweit auch ganz gut, siehe hier:
Der nächste Schritt wäre dann meine Vertices (Dreiecke) noch zu Texturieren.
Ich stelle mir das so vor das ich also eine Bilddatei habe, aus der ein oder mehrere beliebige Dreiecke "ausschneide" und -entsprechend verzerrt- auf meine Vertices klebe.
Nur wie Verzerre ich die Pixel entsprechend?
Gefunden habe ich das hier:
http://www.codeproject.com/KB/GDI-plus/ImageWarp.aspx
und natürlich auf Wikepedia:
http://en.wikipedia.org/wiki/Texture_mapping
Allerdings werde ich nicht wirlich schlau daraus, bzw ich merke das ich in Mathe auch nicht richtig aufgepasst habe und deswegen die Formeln auch nicht 100% nachvollziehen kann.
Kann mir das jemand erklären?
Am besten mit Beispielcode (egal welche Sprache)
p.s.
Eventuell spiet das eine Rolle wie meine Dreiecke ausgefüllt werden.
Ich habe sie nach dieser Anleitung gerastert.
So wie ich's verstanden habe also mit dem in 3d-engines üblichen verfahren.
Beitrag zuletzt geändert: 22.11.2011 17:30:36 von simuliertes -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also ich habe deine Frage jetzt so verstanden:
Du fragst wie Texture Mapping geht,
dafür solltest du uns noch sagen ob du OpenGL oder Directx (oder was auch immer) verwendest das ist aber auch nicht so wichtig. Hier mal die Grundlagen:
Jeder Punkt hat zusätzlich zu seinen drei koordinaten die angeben wo es in der welt befindet noch 2 Texture Koordinaten (U und V). Diese geben an wo der Punkt sich auf der Texture "befindet". Die Bilder haben (zumindest in OpenGL) immer eine Größe von 1. Hat deine Texture Koordinate einen größeren Wert wird die Texture mehrmals nebeneinander gedruckt. Wenn du ein einfaches Dreieck Texturieren willst musst du als UV Koordinaten einfach 3 Punkte in Form eines Dreiecks mit dem min. und max. Wert 0 und 1 angeben.
-
krisi12345 schrieb:
Also ich habe deine Frage jetzt so verstanden:
Du fragst wie Texture Mapping geht,
dafür solltest du uns noch sagen ob du OpenGL oder Directx (oder was auch immer) verwendest das ist aber auch nicht so wichtig. Hier mal die Grundlagen:
Jeder Punkt hat zusätzlich zu seinen drei koordinaten die angeben wo es in der welt befindet noch 2 Texture Koordinaten (U und V). Diese geben an wo der Punkt sich auf der Texture "befindet". Die Bilder haben (zumindest in OpenGL) immer eine Größe von 1. Hat deine Texture Koordinate einen größeren Wert wird die Texture mehrmals nebeneinander gedruckt. Wenn du ein einfaches Dreieck Texturieren willst musst du als UV Koordinaten einfach 3 Punkte in Form eines Dreiecks mit dem min. und max. Wert 0 und 1 angeben.
Tja und das ist leider die (falsche) Standard Antwort die mir google auch immer ausspuckt.
Danke trotzdem...
OpenGL und directX sind 3d-engines.
Ich schreibe meine eigene.
Ich möchte also die direkte Logik dahinter wissen, nicht wie ich openGlDirectXOgre3DMayaBlenderusw sage was wohin zu mappen ist...
Ich formuliere meine Frage mal anders:
Ich habe 2 beliebige Dreiecke die NICHT gleich sind.
Dreieck 1 liegt auf einem Bild.
Dreieck 2 soll jetzt diesen Bildausschnitt auch haben
Aber so verzerrt , wie die Form des Dreiecks nr2 ist
edit:
Zur Verdeutlichung ( Das rechte untere Dreieck sollte dann das verzerrte Bild beinhalten)
Beitrag zuletzt geändert: 22.11.2011 17:53:06 von simuliertes -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage