¿Cómo puedo crear un material de pizza de queso elástico y rompible?


21

Quiero crear pizza realista y permitir que el usuario interactúe con ella.

Lo que quiero:

Fotografía de pizza con un trozo levantado

Lo que creé:

captura de pantalla de pizza renderizada, sin una rebanada

Creé el modelo de la pizza (8 piezas) en Blender, luego lo importé a Unity. El pedazo de pizza se ve muy artificial, principalmente porque es un "triángulo rígido".

¿Cómo puedo hacer que el queso se estire y se rompa cuando el usuario mueve una pieza?


1
Mejores modelos, mejores texturas y mejores sombreadores. Tan sencillo como eso.
API-Beast

¿De verdad quieres que el queso se estire y se rompa? Si pudiera ser más específico sobre qué aspecto desea que sea más realista, eso ayudaría a reducir el alcance de la pregunta.
MichaelHouse

2
@ Byte56, entiendo que puedo mejorar la calidad de la pizza mejorando el modelo, las texturas y los sombreadores, pero me interesó el queso. Sí, quiero que sea estirable y rompible. Como el queso de verdad.
Peter Burenkov

66
Personalmente, echaría un vistazo a la simulación de tela en tiempo real y vería qué tan lejos puede llegar de la tela al queso ajustando los parámetros. Manejaría la capa de queso de la pizza como una malla separada y usaría un modelo de resorte / masa para calcular las deformaciones. También he visto sistemas de tela antes, que te permiten rasgar la tela, lo que también querrías para tu queso. Combine esto con un sombreador que combine desde una textura de queso sólido hasta una textura de queso estirado / rasgado basado en la fuerza aplicada a los nodos del modelo de resorte / masa, y le dará un resultado bastante bueno.
Invor

Solo para interpretar al abogado del diablo aquí, ¿estás seguro de que necesitas tener este tipo de animación? Sé que parece extraño preguntar, pero debería ver en las respuestas ya dadas, este es un efecto bastante complejo al que apunta. Obviamente depende del juego (no sé si estás haciendo un simulador de hacer pizza [Conozco personas que pagarían un buen dinero por uno]), pero debes preguntarte si el trabajo que pondrás en esto Realmente agrega suficiente para justificar su esfuerzo. Incluso si tiene mucho tiempo, dedicarlo a otra parte podría pagar más a largo plazo ...
Selali Adobor

Respuestas:


28

La manera simple

Agregue un quad que conecta rebanadas adyacentes entre sí. Texturice esto con una agradable textura de queso derretido, completa con agujeros. A medida que la rebanada se aleja, el quad se estirará naturalmente y, por lo tanto, estirará y sesgará la textura.

Esto debería parecer razonable, aunque no habrá descanso. Lo que hay que hacer aquí es hacer que esa textura sea animada. Itere a través de la animación en función del área de quads (o solo la distancia entre los cortes) en lugar del tiempo. A medida que se aleja más, aparecerán más agujeros debido al progreso de la animación.

Finalmente, cuando se alcanza un umbral de distancia, divida el quad en dos, reduzca programáticamente los dos quads en la dirección de sus cortes adjuntos para reducirlos un poco y mantenga la animación en reproducción que muestra el ajuste. Congele la animación al final.

Para un poco más de dinámica, puede conectar el quad a las dos rebanadas usando una articulación en un motor de física.

El camino difícil

Use un motor de física de cuerpo blando o escriba uno. Defina una sección de tela entre las rebanadas y texturice con queso. Permita que el motor de física modele la dinámica del estiramiento y el ajuste del material.

Este es un método mucho más intensivo, pero más aplicable en general. También puede ser muy incontrolable, pero podría ser un efecto general más convincente.


3
Sugeriría totalmente el primer enfoque.
jhocking

66
Por lo menos, pasa algunas horas probando el primer enfoque (puedes usar múltiples quads fácilmente) antes de pasar unos ... err ... meses escribiendo un motor de física ...
corsiKa 01 de

3
¡Tan hambriento de ver el resultado! Actualícenos cuando lo termine.
John Moses

2
Por un momento, pensé que leía "Use un motor de queso de cuerpo blando" y pensé, wow, la gente escribirá motores para cualquier cosa.
Thomas

2
Unity tiene un motor de física de tela incorporado que admite estiramientos y rasgaduras, por lo que el camino difícil podría no ser tan difícil. Aunque será mucho más costoso computacionalmente.
Ethan Worley

2

Usando una animación preestablecida:

Así que cree una animación preestablecida en un software de modelado 3D como Maya / Blender que tiene características como cuerpos blandos y tela que pueden hacer un buen trabajo simulando el desgarro de la pizza. Exporte la textura de la pizza Y la animación del modelo a Unity (probablemente como un conjunto de modelos .obj o algo así).

La animación del modelo representará el queso estirado y desgarrado utilizando muchos triángulos, que puede cargar como un conjunto de tres mallas en Unity. Son una colección de muchos estados de malla, cada uno representando la pizza de queso en diferentes posiciones de estiramiento. Según el lugar donde el usuario coloca la porción de pizza, saltará a ese 'estado de malla' y mostrará esos triángulos.

Hay algunos problemas, por supuesto. La interacción del usuario es un poco restringida. Si el queso ya está un poco desgarrado, no puede volver al estado 'sin torcer' para esa área de queso. Si la animación preestablecida elimina el segmento 1 y luego el 2, el usuario se verá obligado a eliminar los segmentos en ese orden. El tamaño de los datos exportados puede ser bastante grande, en función de cuán granular sea la malla y cuánto dura la animación de desgarro.

Pero puede parecer muy realista, si el artista modelo hace un buen trabajo al crear la animación preestablecida. Y no tiene que implementar un simulador de cuerpo blando.

Usando la Unidad:

Pero en caso de que le interese, Unity implementa su propia tela Skinned y componentes de tela Interactive . La tela interactiva admite rasgaduras. Pero el soporte para ellos está restringido a solo unas pocas plataformas, la última vez que lo revisé.

Usándote:

Al final, siempre puede implementar su propio simulador de cuerpo blando. Aquí hay una muestra de trabajo de investigación que es bastante popular. Es muy divertido :). Buena suerte.


1

¡Las respuestas de @ originalDaemon son buenas! Creo que hay un camino intermedio que puede obtener mejores resultados que el primer enfoque y requerirá una cantidad razonable de esfuerzo (quizás a diferencia del enfoque "The Hard Way").

Lo que sugiero es que también modele la "red" del queso, para mí se parece mucho a las estalactitas. Modele algunas piezas de queso elástico. Colóquelos aleatoriamente en los bordes del triángulo de delicias y escale a 0 y-axisy cuando el triángulo se retire de sus compadres, escale lentamente en el eje y hasta el tamaño necesario.

Es posible que deba elegir otro eje en lugar de y si planea tirar del triángulo un poco. De cualquier manera, creo que aunque una textura plana sería mucho más fácil y rentable, modelar el queso podría resultar más realista para el primer plano, aunque una textura también podría funcionar. Si elige una textura, tal vez use más de una capa para obtener una sensación más realista. Además, no olvide agregar un poco de vapor para enfatizar el calor de la pizza en la toma.

Otra cosa que noté es que parece que el pepperoni es solo una textura en este momento. Definitivamente consideraría modelarlo o agregar algunos detalles en esa área al modelo existente. Podrías hacer que se deslice hacia abajo con el queso elástico para un realismo adicional.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.