Li algumas informações sobre simulações de física e encontrei uma solução possível. Ele funciona dividindo cada etapa da física em três fases:
1. Pré-etapa:
Cada etapa da física, uma janela cria quatro transformações, duas para cada lado da conexão:
- uma transformação de entrada que transforma a posição, a velocidade (e possivelmente o tamanho e o peso) de um objeto no sistema de coordenadas de destino e
- uma transformação de saída que transforma forças de volta ao sistema original do objeto.
(As janelas estáticas precisam fazer isso apenas uma vez.)
Além disso, os objetos em cada sistema de coordenadas são divididos em três grupos:
Agrupamento de física http://content.wuala.com/contents/Tamschi/Stack%20Exchange/WindowGrouping.png
Objetos em frente à janela (verde).
Um objeto também é contado para esse grupo se ele estiver cruzando o plano da janela ou provavelmente atravessá-lo por trás da janela (não mostrado).
Objetos que cruzam a janela ou provavelmente interceptam-na nesta etapa da física (laranja).
Objetos atrás da janela (azul). Se um objeto voa em direção à parte traseira da janela, ele ainda é marcado como membro do grupo três.
O agrupamento pode ser simplificado se a janela estiver na borda da simulação.
2. Etapa principal:
A física é calculada principalmente como de costume, com algumas exceções:
Os objetos do segundo grupo nunca colidem com os do terceiro e vice-versa.
A transformação de entrada da janela é usada nos objetos do segundo grupo e os resultados são avaliados em relação aos objetos da frente e da interseção do sistema de destino. A força resultante é transformada usando a transformação de saída e aplicada ao objeto original.
(Se um objeto for atingido durante o cálculo, ele deverá ser reagrupado!)
3. Pós-etapa:
Se um objeto do segundo grupo atravessou a janela, ele é movido para o sistema de destino usando a transformação de entrada.
Pensamentos adicionais:
Se as transformações forem preservadas após o cálculo da física, elas poderão ser usadas para acelerar a renderização e facilitar os cálculos de IA. O agrupamento pode ser usado para remover os planos de clipes do processo de renderização.
A desvantagem desta solução é que as janelas precisam ser adicionadas diretamente ao mecanismo de física.