본문 바로가기
기타 공부하기/후디니

파티클 시스템 구현 3-1 / 서브스탭과 시뮬레이션 퀄리티

by 대마왕J 2024. 1. 3.

그럼 이번에는 아래로 빠지는 저 문제를 해결해보자. 

이게 계산이 너무 간격이 크다보니까 계산 리밋을 넘어버리는건데, 
그러면 서브스탭으로 간격을 잘라주면 될 것 아닌가?

그런데 서브스탭은 간격을 잘라주는게 아니라, 간격을 오히려 뛰어넘어 버리는 결과가 나타나게 된다. 만약 서브스탭으로 2로 잘라준다면 
 1                 2                   3                     4  로 계산될 것을
 1               1-1                  2                    2-1 로 계산되는데, 서브스탭 결과는 출력이 안되니 오히려 간격만 늘어난 꼴이 된다. 그러니 더 러프하고, 속도만 두 배 빨라지는 결과가 되는거다. 

이걸 해결하려면? 간단하다. '서브스탭만큼 속도를 느리게 만들어주면 된다' 
그러면
1                    2                   3                    4  가 
1        1-1       2        2-1      3       3-1       4 가 되면서 
속도는 같은데 계산은 정밀해지게 되는 것이다. 

일단 그럼 limit 에서 제어해주게 만들어 보자 

이거 가져다 쓰면 됨 

그럼 벨로시티에 서브스탭 숫자만큼 나눠주면 됨. 
거기다 아예 솔버의 서브스탭에다가도 그 숫자를 적용해주면 됨. 
포인트 펑션이 편하구만. 

대신 서브스탭을 올리면 age도 빨리 먹는다는걸 잊지 말자. 
그럼 age도 서브스탭만큼 곱해주면 되겠네? 

 

여하간 이렇게 해주면

잘 된다. 

근데 힘도 나눠줘야지? 매 프레임당 여러 번 힘이 곱해지면 곤란하니까. 
근데 위치 를 미분하면    속도가 나오고  속도를 미분하면 힘이 나온다
힘을 적분하면  속도가 나오고 속도를 적분하면 위치가 나온다  

그러니까 한 번만으로 곤란하고 제곱으로 해줘야함.

그러면 이렇게하면 서브스탭에 중력적용이 적게 되면서, 중력때문에 범위를 뚫는 것이 줄어들어서 정밀도도 같이 올라가는 결과가 나오게 된다. 

서브스탭도 쉽지 않구만.

 

반응형

댓글