Chcę stworzyć realistyczną pizzę i pozwolić użytkownikowi na interakcję z nią.
Czego chcę:
Co stworzyłem:
Stworzyłem model pizzy (8 sztuk) w Blenderze, a następnie zaimportowałem ją do Unity. Kawałek pizzy wygląda bardzo sztucznie, głównie dlatego, że jest „sztywnym trójkątem”.
Jak sprawić, by ser się rozciągał i łamał, gdy użytkownik przenosi kawałek?
Odpowiedzi:
Prosty sposób
Dodaj quad, który łączy sąsiednie plastry ze sobą. Teksturuj to z ładną, stopioną konsystencją sera, z dziurami. Gdy plasterek zostanie odsunięty, quad zostanie naturalnie rozciągnięty, a tym samym rozciągnie i przekrzywi teksturę.
Powinno to wyglądać rozsądnie, chociaż nie będzie przerwy. Tutaj należy uczynić tę teksturę animowaną. Powtarzaj animację w oparciu o obszar quadów (lub tylko odległość między plasterkami) zamiast czasu. W miarę oddalania się pojawi się więcej dziur z powodu postępującej animacji.
W końcu, gdy zostanie osiągnięty próg odległości, podziel quad na dwa, programowo zmniejsz dwa quady w kierunku ich dołączonych plasterków, aby je nieco zmniejszyć i zachować animację, która pokazuje przyciąganie. Zatrzymaj animację na końcu.
Aby uzyskać nieco większą dynamikę, możesz przymocować quad do dwóch wycinków za pomocą złącza w silniku fizyki.
Trudna droga
Użyj silnika fizyki miękkiego ciała lub napisz go. Zdefiniuj odcinek tkaniny między plasterkami i teksturuj go serem. Pozwól silnikowi fizyki modelować dynamikę rozciągania i przyciągania materiału.
Jest to metoda o wiele bardziej intensywna, ale bardziej ogólnie stosowana. Może to być również bardzo niekontrolowane, ale może być ogólnie bardziej atrakcyjnym efektem.
źródło
Korzystanie ze wstępnie ustawionej animacji:
Utwórz więc wstępnie ustawioną animację w oprogramowaniu do modelowania 3D, takim jak Maya / Blender, które ma takie funkcje, jak miękkie ciała i materiał, które mogą wykonać dobrą robotę, symulując rozrywanie pizzy. Wyeksportuj zarówno teksturę pizzy ORAZ animację modelu do Unity (prawdopodobnie jako zestaw modeli .obj lub podobne).
Animacja modelowa będzie przedstawiać ser, który jest rozciągany i rozdzierany za pomocą wielu wielu trójkątów, które można załadować jako zestaw trójkątów do Jedności. Są zbiorem wielu stanów siatki, z których każdy reprezentuje serową pizzę w różnych pozycjach rozciągania. W zależności od tego, gdzie użytkownik ustawi plasterek pizzy, przejdziesz do tego „stanu siatki” i wyświetlisz te trójkąty.
Oczywiście jest kilka problemów. Interakcja użytkownika jest nieco ograniczona. Jeśli ser jest już trochę rozdarty, nie można wrócić do stanu „nie rozdarty” dla tego obszaru sera. Jeśli wstępnie ustawiona animacja usuwa plasterek 1, a następnie 2, użytkownik będzie zmuszony usunąć plastry w tej kolejności. Rozmiar eksportowanych danych może stać się dość duży, w zależności od stopnia ziarnistości siatki i czasu trwania animacji zrywania.
Ale może wyglądać bardzo realistycznie, jeśli modelista wykona dobrą robotę podczas tworzenia wstępnie ustawionej animacji. I nie musisz implementować symulatora miękkiego ciała.
Korzystanie z Unity:
Ale w przypadku, gdy jesteś zainteresowany, Unity wprowadza własne elementy ze skóry i tkaniny z tkaniny interaktywnej . Interaktywna ściereczka wspomaga rozrywanie. Ale wsparcie dla nich jest ograniczone tylko do kilku platform, ostatnio sprawdziłem.
Za pomocą ciebie:
Ostatecznie zawsze możesz wdrożyć własny symulator miękkiego ciała. Oto przykładowy artykuł badawczy, który jest dość popularny. To świetna zabawa :). Powodzenia.
źródło
@ originalDaemon odpowiedzi są dobre! Myślę, że istnieje środkowy sposób, który może dać lepszy wynik niż pierwsze podejście i wymaga rozsądnego wysiłku (być może w przeciwieństwie do podejścia „The Hard Way”).
Sugeruję, że zbyt modeluje serową „sieć”, dla mnie wygląda to jak stalaktyty. Modeluj kilka kawałków rozciągliwego sera. Losowo umieść je na krawędziach trójkąta smakowitości i przeskaluj do zera,
y-axis
a gdy trójkąt zostanie usunięty z jego kompanów, powoli przeskaluj je na osi y z powrotem do wymaganego rozmiaru.Może być konieczne wybranie innej osi zamiast,
y
jeśli planujesz delikatnie odciągnąć trójkąt. Tak czy inaczej, uważam, że chociaż płaska tekstura byłaby o wiele łatwiejsza i bardziej opłacalna, modelowanie sera może okazać się bardziej realistyczne do zbliżeń, chociaż tekstura może również działać. Jeśli wybierzesz teksturę, możesz użyć więcej niż jednej warstwy, aby uzyskać bardziej realistyczny efekt. Nie zapomnij też dodać odrobiny pary, by podkreślić ujęcie pizzy w ujęciu.Zauważyłem też, że pepperoni jest teraz tylko teksturą. Zdecydowanie rozważę jego modelowanie lub dodanie pewnych szczegółów w tym obszarze do istniejącego modelu. Możesz sprawić, że zsunie się z elastycznym serem dla dodatkowego realizmu.
źródło