Superficies deformantes

10

Estoy tratando de lograr un comportamiento físico deformante para las superficies niveladas, pero hasta ahora no tengo idea de cómo comenzar con la implementación.

Independientemente de la forma de la superficie (planos, cubos, esferas ...), quiero tener pequeñas hendiduras en las posiciones de las entidades del juego (jugadores, enemigos, objetos ...).

Es un poco complicado de explicar, así que ilustré de lo que estoy hablando, aquí hay un ejemplo con una esfera:

juego de superficie deformante de ilustración

Por lo tanto, las superficies deberían poder deformarse un poco (para que parezcan una cama o un sofá realmente suaves). Mis superficies probablemente necesiten un alto conteo de vértices para obtener una deformación suave, pero mi gran problema es la matemática para calcular esta deformación.

Estoy programando en C / C ++ con OpenGL, pero cualquier consejo en la dirección correcta estará bien.

Constantin
fuente

Respuestas:

5

Para una deformación simple, puede elegir un punto en la superficie / objeto para manipular, luego aplicar una transformación (por ejemplo, traslación). Luego, transforma todos los puntos dentro de una cierta distancia desde ese punto de la misma manera, pero haz que la transformación pierda fuerza cuanto más lejos estés del punto elegido.

Entonces, para hacer una sangría debajo de un personaje, elige el punto en el que está parado y desplaza hacia abajo.

Según el efecto que desee archivar, es posible que desee aplicar la transformación de forma global, local o hacia / lejos del centro del objeto y / o utilizar diferentes funciones para simular diferentes materiales.

Puede encontrar un ejemplo simple de sangría de un plano usando las funciones de caída sin / cos entre www.lighthouse3d.com/opengl/terrain/

Exilyth
fuente
1
Me sale un error prohibido 403 en el enlace.
George Duckett el
1
Bueno ... 'lil hack está en orden entonces (también, directamente a la sección en cuestión): web.archive.org/web/20100927141645/http://lighthouse3d.com/…
Exilyth