Wie kann ich ein dehnbares, zerbrechliches Pizzakäsematerial herstellen?

21

Ich möchte eine realistische Pizza erstellen und dem Benutzer die Interaktion damit ermöglichen.

Was ich will:

Fotografie der Pizza mit einer Scheibe, die angehoben wird

Was ich geschaffen habe:

Screenshot der gerenderten Pizza mit einem fehlenden Stück

Ich habe ein Modell der Pizza (8 Stück) in Blender erstellt und dann in Unity importiert. Das Stück Pizza sieht sehr künstlich aus, hauptsächlich weil es ein "starres Dreieck" ist.

Wie kann ich den Käse dehnen und brechen lassen, wenn der Benutzer ein Stück bewegt?

Peter Burenkov
quelle
1
Bessere Modelle, bessere Texturen und bessere Shader. So einfach ist das.
API-Beast
Wollen Sie eigentlich, dass sich der Käse dehnt und bricht? Wenn Sie genauer festlegen könnten, welcher Aspekt realistischer sein soll, würde dies dazu beitragen, den Umfang der Frage einzugrenzen.
MichaelHouse
2
@ Byte56, ich verstehe, dass ich die Qualität von Pizza verbessern kann, indem ich Modell, Texturen und Shader verbessere, aber ich interessiere mich für Käse. Ja, ich möchte, dass es dehnbar und zerbrechlich ist. Wie echter Käse.
Peter Burenkov
6
Persönlich würde ich einen Blick auf die Echtzeit-Stoffsimulation werfen und sehen, wie weit Sie durch Ändern von Parametern von Stoff zu Käse gelangen können. Ich würde die Käseschicht der Pizza als separates Netz behandeln und ein Feder- / Massenmodell verwenden, um Deformationen zu berechnen. Ich habe auch schon Stoffsysteme gesehen, mit denen Sie den Stoff zerreißen können, den Sie auch für Ihren Käse benötigen würden. Kombinieren Sie dies mit einem Shader, der von einer festen Käsetextur zu einer gestreckten / zerrissenen Käsetextur auf der Grundlage der auf die Knoten des Feder- / Masse-Modells ausgeübten Kraft mischt, und Sie sollten ein hübsches ordentliches Ergebnis erhalten.
Invor
Sind Sie sicher, dass Sie diese Art von Animation benötigen , um den Anwalt des Teufels zu spielen ? Ich weiß, es klingt seltsam zu fragen, aber Sie sollten anhand der bereits gegebenen Antworten sehen, dass dies ein ziemlich komplexer Effekt ist, den Sie anstreben. Offensichtlich hängt es vom Spiel ab (ich weiß nicht, ob Sie einen Pizza-Simulator machen [ich kenne Leute, die gutes Geld für einen bezahlen würden]), aber Sie sollten sich fragen, ob die Arbeit, die Sie darin stecken werden Fügt wirklich genug hinzu, um Ihre Bemühungen zu rechtfertigen. Selbst wenn Sie viel Zeit haben, könnte es sich auf lange Sicht mehr auszahlen, wenn Sie es woanders verwenden ...
Selali Adobor

Antworten:

28

Der einfache Weg

Fügen Sie ein Quad hinzu, das benachbarte Scheiben miteinander verbindet. Texturieren Sie dies mit einer schönen, geschmolzenen Käsetextur mit Löchern. Wenn die Scheibe wegbewegt wird, wird das Quad natürlich gedehnt und somit die Textur gedehnt und verzerrt.

Dies sollte vernünftig aussehen, obwohl es keine Pause geben wird. Was hier zu tun ist, ist, diese Textur zu einer animierten zu machen. Durchlaufen Sie die Animation anhand des Quad-Bereichs (oder nur des Abstands zwischen den Segmenten) anstelle der Zeit. Wenn es weiter weggezogen wird, erscheinen aufgrund der fortschreitenden Animation weitere Löcher.

Wenn eine Distanzschwelle erreicht ist, teilen Sie das Quad in zwei Teile, verkleinern Sie die beiden Quads programmgesteuert in Richtung der angehängten Slices, um sie ein wenig zu verkleinern, und lassen Sie die Animation laufen, in der das Einrasten zu sehen ist. Friere die Animation am Ende ein.

Für etwas mehr Dynamik können Sie das Quad mithilfe eines Gelenks in einer Physik-Engine an die beiden Slices anhängen.

Der harte Weg

Verwenden Sie eine Soft-Body-Physik-Engine oder schreiben Sie eine. Definieren Sie einen Stoffabschnitt zwischen den Scheiben und texturieren Sie ihn mit Käse. Ermöglichen Sie der Physik-Engine, die Dynamik des Dehnens und Schnappens des Materials zu modellieren.

Dies ist eine weitaus intensivere, aber allgemeinere Methode. Es kann auch sehr unkontrollierbar sein, könnte aber insgesamt eine überzeugendere Wirkung haben.

OriginalDaemon
quelle
3
Ich würde den ersten Ansatz völlig empfehlen.
jhocking
6
Wenden
3
So hungrig, das Ergebnis zu sehen! Bitte aktualisieren Sie uns, wenn Sie fertig sind.
John Moses
2
Für einen Moment dachte ich, ich lese "Verwende einen Weichkäse-Motor" und dachte, wow, die Leute werden Motoren für alles schreiben.
Thomas
2
In Unity ist eine Stoffphysik-Engine integriert, die das Strecken und Zerreißen unterstützt, sodass der harte Weg möglicherweise nicht so schwer ist. Obwohl es viel rechenintensiver sein wird.
Ethan Worley
2

Verwenden einer voreingestellten Animation:

Erstellen Sie also voreingestellte Animationen in einer 3D-Modellierungssoftware wie Maya / Blender mit Funktionen wie weichen Körpern und Stoff, die das Zerreißen von Pizza simulieren können. Exportieren Sie sowohl die Pizzatextur als auch die Modellanimation nach Unity (wahrscheinlich als eine Reihe von OBJ-Modellen oder dergleichen).

Die Modellanimation stellt den Käse dar, der unter Verwendung vieler Dreiecke gedehnt und zerrissen wird. Diese Dreiecke können Sie in Unity als Satz von Dreifachnetzen laden. Sie sind eine Sammlung vieler Maschenzustände, die jeweils die Käsepizza an verschiedenen Streckpositionen darstellen. Anhand der Position, an der der Benutzer das Pizzastück positioniert, springen Sie in diesen 'Netzstatus' und zeigen diese Dreiecke an.

Es gibt natürlich ein paar Probleme. Die Benutzerinteraktion ist etwas eingeschränkt. Wenn der Käse bereits ein bisschen zerrissen ist, können Sie für diesen Bereich des Käses nicht in den Zustand "ungerissen" zurückkehren. Wenn die voreingestellte Animation die Segmente 1 und 2 entfernt, muss der Benutzer die Segmente in dieser Reihenfolge entfernen. Die Größe der exportierten Daten kann sehr groß werden. Dies hängt davon ab, wie detailliert das Netz ist und wie lange die zerreißende Animation dauert.

Es kann aber sehr realistisch aussehen, wenn der Modellkünstler beim Erstellen der voreingestellten Animation gute Arbeit leistet. Und Sie müssen keinen Weichkörpersimulator implementieren.

Verwenden von Unity:

Für den Fall, dass Sie interessiert sind, implementiert Unity seine eigenen Komponenten für Skinned Cloth und Interactive Cloth . Das interaktive Tuch unterstützt das Aufreißen. Aber die Unterstützung für sie ist auf wenige Plattformen beschränkt, das habe ich zuletzt überprüft.

Mit Ihnen:

Am Ende können Sie immer Ihren eigenen Weichkörpersimulator implementieren. Hier ist ein Forschungsbeispiel, das sehr beliebt ist. Es macht viel Spaß :). Viel Glück.

Arun R
quelle
1

@ originalDaemons Antworten sind gut! Ich denke, es gibt einen Mittelweg, der möglicherweise bessere Ergebnisse erzielt als der erste Ansatz und einen angemessenen Aufwand erfordert (möglicherweise im Gegensatz zum Ansatz "Der harte Weg").

Was ich vorschlage, ist, das Käse "Netz" zu modellieren, es sieht für mich sehr nach Stalaktiten aus. Modellieren Sie einige Stücke dehnbaren Käses. Positionieren Sie sie zufällig an den Rändern des Dreiecks der Köstlichkeit und skalieren Sie sie auf 0, y-axisund skalieren Sie sie auf der y-Achse langsam auf die erforderliche Größe zurück, wenn das Dreieck von seinen Kompatern entfernt wurde.

Möglicherweise müssen Sie eine andere Achse auswählen, anstatt ydas Dreieck leicht wegzuziehen. In jedem Fall denke ich, dass, obwohl eine flache Textur viel einfacher und kostengünstiger wäre, das Modellieren des Käses für Nahaufnahmen realistischer ausfallen könnte, obwohl eine Textur auch funktionieren könnte. Wenn Sie eine Textur auswählen, verwenden Sie möglicherweise mehr als eine Ebene, um ein realistischeres Gefühl zu erzielen. Vergessen Sie auch nicht, ein wenig Dampf hinzuzufügen, um die Schärfe der Pizza im Schuss zu betonen.

Eine andere Sache, die mir aufgefallen ist, ist, dass es den Anschein hat, dass die Peperoni im Moment nur eine Textur sind. Ich würde definitiv erwägen, es zu modellieren oder dem vorhandenen Modell einige Details in diesem Bereich hinzuzufügen. Sie könnten es mit dem dehnbaren Käse für zusätzlichen Realismus runterrutschen lassen.

wolfdawn
quelle