es kennen ja sicherlich ein paar von euch Programme wie BodyPaint, DeepPaint, zBrush etc..
Die programme ermöglichen es direkt auf das 3D Objekt zu malen..
Was ich mich frage, wie machen die programme das?
Mein ansatz wäre eine Textur zu Projezieren, und der user malt dann auf dieser Textur. Sobald sich dann die kamera ändert wird die Textur in eine normale 2D Textur gebaked (wobei ich auch da nicht wüsste wie das geht).. aber irgendwie muß es doch anders gehen, oder?
Falls da jemand ideen hat, oder sogar weiß wie's geht.. saaagt's mir bitte~
Aya~
PS: Einen einzigen punkt vom 3D Objekt auf die UV Koordinaten umrechnen bekäme ich sogar auchnoch hin.. aber man will ja nicht nur einen pixel zeichnen, sondern z.B. nen kreis mit dem radius von 100 pixeln..
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Hallo Aya,
ich habe vor einiger Zeit einen 3D-Modeller gemacht (er ist zu ca. 90% fertig, ein wenig archaisch, aber ganz praktisch). Fürs Texturieren habe ich ziemlich viel im Internet recherchiert und das hier: http://www-ui.is.s.u-tokyo.ac.jp/~takeo/papers/i3dg2001.pdf gefunden. Vielleicht hilft es Dir weiter. Solltest Du Schwierigkeiten mit dem englischen Text haben, kann ich Dir helfen.
Ich bin nicht immer online, also habe ein wenig Geduld, wenn ich nicht gleich antworte.
Traude
Am einfachsten geht es so:
ein FBO mit einer größe von 2x2 und float32 präzision erzeugen. Die Projektionsmatrix durch eine passende Pickmatrix ersetzten (oder einfach einen Buffer mit Bildschrimauflösung benutzen, der dann solange gültig bleibt bis das objekt bewegt wurde). Dann die Texturkoordinaten als Farbe benutzten, rendern, buffer zurücklesen. 4 Benachbarte Pixel aussuchen, überprüfen ob die Texturkordinaten gültig sind (Sie sollten hablwegs ähnlich und nicht der clearcolor entsprechen), die kordinaten unter dem Mauszeiger sind entsprechen dem Mittelpunkt des "Pinsels" , die Differzenzen müssen in die Skalierung des Pinsels eingerechnet werden.
Das Toll kann sowohl die Skalierung vom Monitor übernehmen (Wie eine Spühdose, die alles einfärbt was vom Tool überdekt wird) oder einen Stifft, der das Objekt mit gleichedicken Strichen bbemahlen kann
Wichtig wäre halt das schon Texturkoordinaten exestieren.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich denke die machen das nicht anders als Lightmapper, mit dem Unterschied man muss den Cursor noch in den 3D Space bringen.
Prüfen ob ein Polygon getroffen wurde(kürzeste kollision auf z achse), Mausposition auf dem Polygon in den texturespace bringen und dann kann man ganz normal 2d zeichenoperationen ausführen. Ratsam wäre noch die letzte position in der 2d textur zu speichern, um Winkel für Brushes zu ermöglichen.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Am einfachsten geht es so: ein FBO mit einer größe von 2x2 und float32 präzision erzeugen. Die Projektionsmatrix durch eine passende Pickmatrix ersetzten (oder einfach einen Buffer mit Bildschrimauflösung benutzen, der dann solange gültig bleibt bis das objekt bewegt wurde). Dann die Texturkoordinaten als Farbe benutzten, rendern, buffer zurücklesen. 4 Benachbarte Pixel aussuchen, überprüfen ob die Texturkordinaten gültig sind (Sie sollten hablwegs ähnlich und nicht der clearcolor entsprechen), die kordinaten unter dem Mauszeiger sind entsprechen dem Mittelpunkt des "Pinsels" , die Differzenzen müssen in die Skalierung des Pinsels eingerechnet werden.
mhh.. ok, wenn ich die UV Coordinaten einfach als Farbe benutze ist es garkein problem die UVCoordinate unter dem mauszeiger zu bestimmen.. aber, wenn ich jetzt nen kreis mit nem duchmesser von 100pixeln zeichnen will, dann kann ich den ja nicht einfach auf der 2D Textur an die berechnete UVCoordinate zeichnen.. zum einen weil die UVs ja verzerrt sein können, und zum anderen weil ich an einem seam (rand) sein kann..
Ich könnte jetzt natürlich alle farben auslesen die in dem kreis sind, aber dann muß ich da immernoch irgendwie den kreis draufzeichnen...
Deswegen ja einen 2x2 Pixelblock holen, mit dessen hilfelässt sich bestimmen wie groß der zu bemahlende bereich wirklich ist. Die Graka macht es übrigends zum bestimmen des richtigem Mipmaplevels genauso...
Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.