Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 11, 2025 06:56

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Nov 20, 2006 05:50 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

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..


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 20, 2006 07:51 
Offline
DGL Member
Benutzeravatar

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 20, 2006 14:12 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 04, 2006 12:54
Beiträge: 263
Tut nicht so als wenn das so schwer ist...

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 20, 2006 17:18 
Offline
DGL Member
Benutzeravatar

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

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 20, 2006 17:52 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

oc2k1 hat geschrieben:
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...

Kannst du mir das nochmal erklären? :P


Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 23, 2006 02:57 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 04, 2006 12:54
Beiträge: 263
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...


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]