Jak mogę stworzyć elastyczny, łamliwy materiał do pizzy?

21

Chcę stworzyć realistyczną pizzę i pozwolić użytkownikowi na interakcję z nią.

Czego chcę:

zdjęcie pizzy z podniesionym plasterkiem

Co stworzyłem:

zrzut ekranu renderowanej pizzy z brakującym wycinkiem

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?

Peter Burenkov
źródło
1
Lepsze modele, lepsze tekstury i lepsze shadery. Tak proste jak to.
API-Beast
Czy naprawdę chcesz, aby ser się rozciągał i łamał? Jeśli możesz sprecyzować, który aspekt chcesz być bardziej realistyczny, pomogłoby to zawęzić zakres pytania.
MichaelHouse
2
@ Byte56, rozumiem, że mogę poprawić jakość pizzy poprzez ulepszenie modelu, tekstur i shaderów, ale interesuje mnie ser. Tak, chcę, żeby była rozciągliwa i łamliwa. Jak prawdziwy ser.
Peter Burenkov
6
Osobiście przyjrzałbym się symulacji tkanin w czasie rzeczywistym i sprawdziłem, jak daleko można się dostać od tkaniny do sera, zmieniając parametry. Poradziłbym sobie z warstwą sera pizzy jako oddzielną siatką i do obliczenia deformacji użyłem modelu sprężyny / masy. Widziałem też wcześniej systemy tkanin, które pozwalają rozerwać tkaninę na strzępy, co również byłoby potrzebne dla twojego sera. Połącz to z shaderem, który łączy jednolitą teksturę sera z teksturą sera streched / ripped w oparciu o siłę przyłożoną do węzłów modelu sprężyny / masy, i powinno to dać całkiem fajny wynik.
Invor
Aby zagrać tutaj w adwokata diabła, czy na pewno potrzebujesz tego rodzaju animacji? Wiem, że pytanie brzmi dziwnie, ale z odpowiedzi już udzielonych wynika, że ​​jest to dość złożony efekt, do którego dążysz. Oczywiście zależy to od gry (nie wiem, czy robisz symulator robienia pizzy [znam ludzi, którzy zapłaciliby za niego dobre pieniądze]), ale powinieneś zadać sobie pytanie, czy włożysz w to pracę naprawdę dodaje tyle, by uzasadnić twój wysiłek. Nawet jeśli masz dużo czasu, poświęcenie go gdzie indziej może na dłuższą metę spłacić więcej ...
Selali Adobor

Odpowiedzi:

28

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.

OriginalDaemon
źródło
3
Całkowicie zasugerowałbym pierwsze podejście.
jhocking
6
Przynajmniej poświęć kilka godzin na pierwsze podejście (możesz łatwo użyć wielu quadów), zanim spędzisz kilka ... eee ... miesięcy pisząc silnik fizyki ...
corsiKa
3
Tak głodny, aby zobaczyć wynik! Zaktualizuj nas po zakończeniu.
John Moses
2
Przez chwilę myślałem, że przeczytałem „Użyj silnika do miękkich serów” i pomyślałem, wow, ludzie będą pisać silniki do wszystkiego.
Thomas
2
Unity ma wbudowany silnik fizyki tkanin, który obsługuje rozciąganie i rozrywanie, więc trudna droga może nie być tak trudna. Chociaż będzie znacznie droższy obliczeniowo.
Ethan Worley
2

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.

Arun R.
źródło
1

@ 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-axisa 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, yjeś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.

wolfdawn
źródło