Deformando superfícies

10

Estou tentando realizar um comportamento físico deformador para superfícies niveladas, mas não tenho nenhuma idéia de como começar com a implementação até agora.

Independentemente da forma da superfície (planos, cubos, esferas ...), quero ter pequenos recuos nas posições das entidades do jogo (jogadores, inimigos, objetos ...).

É meio complicado de explicar, então ilustrei do que estou falando. Aqui está um exemplo com uma esfera:

jogo de superfície deformando ilustração

Portanto, as superfícies devem poder se deformar um pouco (para parecer uma cama ou um sofá muito macio). Minhas superfícies provavelmente precisam de uma alta contagem de vértices para obter uma deformação suave, mas meu grande problema é a matemática para calcular essa deformação.

Estou programando em C / C ++ com OpenGL, mas qualquer conselho na direção certa será bom.

Constantin
fonte

Respostas:

5

Para uma deformação simples, você pode escolher um ponto na superfície / objeto a ser manipulado e aplicar uma transformação (por exemplo, tradução) a ele. Em seguida, transforme todos os pontos a uma certa distância desse ponto da mesma maneira, mas faça com que a transformação perca força mais longe do ponto escolhido.

Portanto, para fazer as coisas recuarem sob um personagem, escolha o ponto em que ele / ela está e desloque-o para baixo.

Dependendo do efeito que você deseja arquivar, aplique a transformação globalmente, localmente ou em direção / afastada do centro do objeto e / ou use funções diferentes para simular materiais diferentes.

Um exemplo simples de recuar um avião usando as funções de fallback sin / cos pode ser encontrado em www.lighthouse3d.com/opengl/terrain/

Exilyth
fonte
1
Eu recebo um erro 403 proibido no link.
precisa
1
Bem ... 'lil hack está em ordem então (também, diretamente na seção em questão): web.archive.org/web/20100927141645/http://lighthouse3d.com/…
Exilyth