Jump to content
Unity Insider Forum

3D Objekt für User "bearbeitbar" machen


Recommended Posts

Hallo Leute!

 

Ich bin gerade mit Unity auf Tuchfühlung gegangen, und habe eine grundlegende Frage:

Kann ich mit Unity dem User via GUI-Schieberegler in einem gewissen Umfang 3D Objekte verändern lassen?

Wie z.B bei einem Kopf dessen Nase der User kleiner, größer machen kann - ein wenig nach oben oder unten schieben kann etc. ?

 

Wobei ich jetzt die Nase nicht als seperates Objekt sehe, dessen Position / Skalierung manipuliert wird, sondern ein Teil eines Meshes ist - quasi dass der User einen oder mehrere Vertices verschieben kann.

 

Wenn ja, in welche Richtung müsste ich mich da schlau machen?

 

Ich würd mich freuen, wenn mirevtl. jemand auf die richtige Fährte helfen könnte :-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm. Target Morphing oder Shapekeys genannt. Das kann Unity so nicht. Das müsstest du in deinem 3D Programm animieren. Und dann in Unity importieren. Sobald die Ani mal in Unity drin ist kannst du natürlich mittels Keyframes zur gewünschten Stelle gehen. Da lauert aber die nächste Hürde. Unity kann ohne Plugin nur Bones Animation, keine Vertexanimation. Auch so ein kleines Kuriosum. Für Blender gibts da aber glaube ich das Metamorph Plugin um das Zeug in Unity reinzubekommen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm. Target Morphing oder Shapekeys genannt. Das kann Unity so nicht. ..... Unity kann ohne Plugin nur Bones Animation, keine Vertexanimation.

 

Hey, danke schon mal für die Antwort!

Nun ja, da ich ja nich genau weiß wo der User die Vertices genau haben möchte, ist einen Animation in MAX eher nicht das passende. Also wenn Vertexverschiebung für den User nicht möglich ist - ist meine überlegung, ob das nicht doch mit seperaten Objekten gelöst werden kann.

 

Um bei dem Beispiel mit dem Gesicht zu bleiben:

 

Wenn ich ein und das selbe Material ( mit Bitmap eines Gesichts ) über die Objekte Kopf und Nase so lege, so dass alles an richtiger Stelle angezeigt wird, ist es fein.

Wenn ich dann später einmal das Bitmap vom Gesicht austausche, muss ich die Nase verschieben / vergrößern um sie der neuen Bildvorlage pi mal Daumen anzupassen.

 

Wäre das ein Lösungsansatz ? Objekte in einem gewissen Rahmen verändern zu lassen?

 

Ziel des Ganzen ist, dem User die Möglichkeit zu geben seinem Avatar sein eigenes Foto zu verpassen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du willst also tatsächlich jedes Vertex einzeln bearbeiten? Ich fürchte sowas musst du dir selberhäkeln, mir ist sowas in Unity noch nicht übern Weg gelaufen. Ich weiss nur dass Vertexbearbeitung per Code ein gehöriges Stück Mathekenntnisse voraussetzt. Und elendsviel Arbeit ist. Das ist mit das verzwickteste was du dir codetechnisch antun kannst. Ich glaube auch kaum dass Unity ein komplettes Toolset für die Meshbearbeitung bereithält. Unity ist ne Spieleengine, kein Modeler.

 

Aber du brauchst doch gar nicht jedes Vertex einzeln bearbeiten. Du kannst doch die Shapekeys auch layern. Das macht man doch bei Lipsync auch so. Die Mundform wird bei den markanten Vokalen aufgenommen, und dann lustig dazwischen hin und hergeblendet. Und sowohl Poser als auch Makehuman gehen genau nach dem Verfahren vor. Du hast ne Hakennase, ne Gnubbelnase, ne lange Nase und ne kurze Nase, und mittels Reglern blendest du nun dazwischen deine gewünschte Form zurecht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du willst also tatsächlich jedes Vertex einzeln bearbeiten? Ich fürchte sowas musst du dir selberhäkeln, mir ist sowas in Unity noch nicht übern Weg gelaufen.

 

Nein, nein - möchte ich ja nicht unbedingt. Das war eben nur das Erste, dass mir in den Sinn kam: Wenn sich das Bild des Gesichts ändert, muss sich auch das Mesh ändern.

 

Du kannst doch die Shapekeys auch layern. Das macht man doch bei Lipsync auch so. Die Mundform wird bei den markanten Vokalen aufgenommen, und dann lustig dazwischen hin und hergeblendet. Und sowohl Poser als auch Makehuman gehen genau nach dem Verfahren vor. Du hast ne Hakennase, ne Gnubbelnase, ne lange Nase und ne kurze Nase, und mittels Reglern blendest du nun dazwischen deine gewünschte Form zurecht.

 

Habe leider mit Poser und Co. noch nicht gearbeitet, kenne daher diese Shapekeys nicht - klingt aber so als wären die Jungs genau das was ich möchte.

 

Also wär die Vorgehendsweise:

  1. ich bastle jetzt verschieden Varianten der Nasen ( 3ds Max ), und die hol ich mir in Unity rein.
  2. dann mache ich in Unity das mit den Shapekeys - wobei ich jetzt noch keinen Schimmer hab was das genau ist und wie das geht.
  3. der User kann am Ende sein eigenes Foto hochladen und den Avatarkopf mit den "Nasenblendern" anpassen - auch noch keinen Plan wie das letztendlich geht ;-)

 

Gibt es da hilfreiche Links zu den Shapekeys oder Tutorials ? Ich finde mometan nur Shapekeys im Zusammenhang mit Blender und ein Blendshape Tool im Unity Store :unsure:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also Unity hat schon alles was man braucht zur Mesh bearbeitung per Code drinen und per Code zwischen zwei Objekte die genau die selbe anzahl an vertices haben zu blenden ist nicht sehr schwer.. allerdings müsstest du um nur gewisse Teile eines Meshes zu morphen genau wissen um welche vertices es sich handelt.. das raus zu bekommen ist dann schon etwas schwerer!

Dazu müsste man sich evtl. nen Plugin schreiben in dem man vertices anwählen kann um diese in eine Liste schreiben zu können, anschließend kann man dann einfach nur die vertices mit denen eines zweiten models blenden oder sogar was am gescheitesten wäre zu der Liste mit den Index Werten jedes Vertices + dessen Positionen speichern um anschließend nur ein einziges Model behalten zu müssen!

 

Ich denke da gibt mehrere Möglichkeiten, grundsätzlich ist es aber möglich soetwas zu machen.. ich hatte hier im Forum auch mal nen kleines Beispiel gepostet indem ich einfach zwischen einer kugel und einem Würfel gemorphed habe... ist jetzt vlt nicht gerade das was du brauchst aber um das prinzip hinter der veränderung von Vertices zu verstehen ist das sicherlich schonmal ein anfang!

 

Hier der Link zum Forum Thread

 

Gruß Stephan

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich hatte hier im Forum auch mal nen kleines Beispiel gepostet indem ich einfach zwischen einer kugel und einem Würfel gemorphed habe... ist jetzt vlt nicht gerade das was du brauchst aber um das prinzip hinter der veränderung von Vertices zu verstehen ist das sicherlich schonmal ein anfang!

 

Hey danke - sieht interessant aus! Hier könnte ich ja ein und das selbe Kopfmesh in verschiedene Varianten bringen - ergo hab ich dann ja die gleiche Vertexanzahl, nur eben mit unterschiedlichen Positionen der Nasen und Augenveriefungen usw.

 

Soweit ich das verstanden haben hast du hier 2 Meshes - Würfel und die Nuss. Funktioniert das dann auch mit mehr als 2 Meshes?

 

Wie würdet Ihr denn das angehen, wenn der User ein Bild von sich als Textur des Gesichts lädt und die Kopfform dann dementsprechend anpassen kann?

Also kein HiPoly-Kopf sondern eher in die Richtung der Xbox-Avatare zum Beispiel - 3-8 Polynase, leichte Augenhöhlen usw.

Oder wär es einfacher dem User die Möglichkeit zu geben gewisse Bereiche der Textur zu verschieben? Also immer der gleiche Kopf und er verschiebt nur die Textur.

Link zu diesem Kommentar
Auf anderen Seiten teilen

klar funktioniert das auch mit mehr als 2 meshes, dann musst du halt ab einer bestimmten position des schiebereglers nicht mehr zwischen den vertices von mesh 1 und 2 morphen sonder mit denen von 2 und 3 oder 3 und 4..

 

willst du das foto das der user hochlädt als Textur verwenden?

also grundsätzlich würd ich sagen der user passt das model auf den kopf an.. alles andere bringt ja kein autentischen ergebnisse :)

wenn dus auch zusätzlich als Textur verwenden willst wirds wieder etwas schwerer.. da hab ich kein plan von weil du dafür dann ja mindestens 3 bilder brauchst, vorne, seite, hinten und diese musst du dann um sie korrekt aufs model zu bekommen auch noch so per code zusammenfügen das du weiche übergänge bekommst!

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn dus auch zusätzlich als Textur verwenden willst wirds wieder etwas schwerer.. da hab ich kein plan von weil du dafür dann ja mindestens 3 bilder brauchst, vorne, seite, hinten und diese musst du dann um sie korrekt aufs model zu bekommen auch noch so per code zusammenfügen das du weiche übergänge bekommst!

 

Glaube SO das autentische Ergebnis werd ich nicht hinbekommen ;-) hatte mir das so vorgestellt, dass nur die Gesichtspartie ( Augen, Nase, Mund ) als Textur vom User geladen werden kann.

 

Hier würde ich wahrscheinlich ein Interface benötigen in dem er sein Foto quasi in einer Maske zentrieren/anpassen kann. Das wird dann auf den Avatarkopf gelegt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich weiß übrigens nicht ob es überhaupt geht das ein user eine Textur bzw. ein Foto in ein Unity Programm/ Spiel hineinläd, ich glaube das geht nur mit AssetBundels die du aber vorher definierst!

Ich denke da musst du auf den Webcam Support in der nächsten Unity Version warten, gibt zwar zur zeit schon mehrere Versuche die Bilder einer Webcam in Unity zu nutzen, aber die funktionieren scheinbar alle nicht besonders gut und nicht auf allen systemen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

:D alles klar

 

Du hast mich übrigens auf ne Idee gebracht, versuch mir jetzt nen Plugin zu schreiben mit dem ich in Unity die Vertex Colors eines Meshes verändern kann .. so könnte man bestimmte teile eines Meshes im Editor einfärben und dann später über die Farben die vertices die zu einer Region bsp. der Nase gehören herausfinden um dann nur diese vertices in ein Array zu speichern!

 

So kann man zum morphen dann die Vertices genau speichern die gemorphed werden sollen :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...