2

저는 강체 시뮬레이션을 잠시 동안 진행해 왔지만이 문제를 어떻게 다룰 지 아직 모릅니다. (이산 충돌 검출을 사용하고 각 접점의 임펄스를 풀기 위해 LCP를 사용합니다.)강체 동역학 침투 보정

고정 된 볼 (C를 중심으로 한 반구)과 볼의 가장자리에있는 입자를 상상해보십시오. 입자가 표면에서 그릇 안쪽으로 굴러갑니다. 그리고 약간의 시간 단계에서 접점 A가 있어야하며, LCP 해석기는 입자의 속도를 벡터 CA에 수직으로 만드는 결과 임펄스를 제공합니다. 그러나 한 번의 타임 스텝을 업데이트 한 후에는 입자가이 속도를 따라 조금씩 움직이면서 실제로 사발에서 빠져 나옵니다. 몇 가지 시간 간격을두고 상황이 악화됩니다. 입자 대신 입방체를 사용하면 입방체가 관통하여 그릇을 통해 가라 앉을 수 있습니다.

그래서 이것을 피할 수있는 방법이 있습니까? 임펄스 방법은 완벽하지 않으며 충돌 응답 후에도 침투가있을 수 있습니다. 나는 어떻게해서 든 침투를 교정 할 필요가 있지만 접촉점에서 표면을 따라 단순히 물체를 움직이는 것은 새로운 관통을 생성 할 수 있기 때문에 좋은 생각이 아닙니다.


편집 :

그것은 그릇이 너무 얇은 것 또는 시간 간격이 너무 큰 존재의 문제가 아니다

. 그 이유는 오일러의 정수가 원 대신 폴리곤을 생성하기 때문입니다. 그리고 다른쪽에 세 번째 객체가 있으면 객체 2와 3에 새로운 침투가 생기기 때문에이 두 객체의 위치를 ​​수정할 수 없습니다. 나는 한 가지 방법은 침투 깊이에 기초한 약간의 탄성력을 더하는 것이라고 생각합니다. 그러나 그것은 충분히 깔끔하지 않습니다.

Bullet 소스 코드를 살펴보고 작업 해보는 것이 좋습니다.

+0

분자 역학 패키지에서 어떻게 해결되는지 확인할 수 있습니다. 앰버 또는 그립 (GROMACS). – Andrey

+0

"강체 동역학 보급" –

+0

타임 스텝을 줄이면 침몰이 감소합니까? – Zouch

답변

0

모든 입자가 침투하도록 단계를 계산하십시오. 관통 된 점에서 발생하는 구형 확률을 계산하고 표면에서 발생 확률을 미러링하고 관통 확률을 삭제하고 해당 확률 맵에서 다른 입자의 확률을 뺀 다음 가장 높은 확률 지점에 입자를 놓습니다.

예 : 그것을 좌우

o ---> | 

      |  o  penetrated to here 

      | %5 %50 %90 

%90 %50 %5 | 

o   | 

확률이 (약 80 %)와 동일하다 그래서 비탄성 충돌하므로 그것은 이제 고정된다.

지금

o ---> o | 

     o |  o  penetrated here 

    -100% | %5 %50 %90 

%90 %0 %-45| 

    o  o | 

그래서 입자는 다시 벽에서 튕겨하지만, 다시 첫 번째 입자에 모멘텀을 준 다른 입자에서 반등 번째 입자가 있다고 가정 할 수 있습니다. 그런 다음 왼쪽 측면의 확률이 더 높아서 최종 속도가 왼손잡이 쪽이됩니다. 모든 침투 된 입자들에 대해 연속적으로 수행한다. (약간만 존재해야한다.) M을 K * L * M * N * N * M 연산 인 다른 모든 파티클 확률 맵으로부터 N 개의 파티클 N * M 확률을 뺀다. M 사이즈 큐브 공간의 K by M