본문 바로가기
Project

[unity] sound project - 4 days

by 배애앰이 좋아 2020. 7. 3.
반응형

이때까지 한 부분들을 간략하게 정리를 해볼까 합니다.

 

아래 식들은 틀렸으며 후에 다른 글에서 수정한 식을 올릴 예정입니다. 게시글들은 프로젝트를 진행하는 과정들을 정리하는 글임으로 틀린 수식도 하나의 과정이라 생각하여 그대로 올립니다. 혹시나 잘못된 참고를 하실까봐 미리 적어놓읍니다.

 

1. 기본적인 핵심 내용

 

현재 진행 정도 사진

Sound 1 은 원본 소리 / Sound 2 은 사본 소리

Sound 1은 계산 지표만 되고 실제 소리가 나오는 곳은 sound 2 입니다.

 

이때 Sound 2 를 따로 배치해주는 이유 :

현재 유니티 내에서 소리를 배치하였을 때 장애물이 없을 경우에 거리에 따른 소리 감소 및 증가는 계산이 되지만 장애물이 있을 때 소리 감소 계산이 되지 않습니다. 또한 장애물과 굴절, 반사에 따라 소리가 들려오는 방향이 다른 데 그런 부분들을 유니티 내에서 설정해줄 수 없기 때문에 직접 소리 위치를 옮겨서 sound 2처럼 배치해주면 소리가 들려오는 방향을 설정해줄 수 있어 sound 2 를 따로 배치하였습니다.

 

2. Sound 2의 소리 크기 결정 방식

 

사본 공에 해당되는 Sound 1에서 5개에 해당되는 ray가 나와서 앞에 장애물이 있는지 없는지 확인을 합니다. 만약에 장애물이 있어서 ray가 막힌다면 그 갯수를 세어 그만큼 소리를 줄어주게 됩니다. ( 벽이 있다면 소리가 작게 들리는 것이 물리적이기 때문에 )

 

2. Sound 2의 소리 위치 결정 방식

 

식에 적힌 것처럼 모든 벡터들의 평균을 내어서 위치를 결정하는데 이때 벽에 막히지 않는 벡터에 가중치를 곱해줍니다. 그 이유는 벽이 뚫린 쪽으로 소리가 더 크게 들리는 것이 일반적 현상이기 때문입니다. 

 

위 사진처럼 소리가 벽을 지나갈 때 벽 뒤보다 옆으로 지나가는 소리가 클 수 있다는 것을 알 수 있습니다. 이런 부분들을 고려해주기 위해 위에 식과 같이 가중치를 넣어주었습니다.

 

3. 벽에 부딪칠 때 만들어지는 굴절 벡터 생성 식

 

해당 자세한 내용은 [unity] sound project - 3 days 게시글에 자세히 기재하였습니다.

 

4. 문제점 해결 

기존 문제점 : 소리가 더 가깝게 나는 곳이 있음에도 고려가 되지 않음. 이를 해결하기 위해, 소리와 굴절 벡터 사이의 거리를 고려하여 가중치 부여하였습니다.

 

벡터(굴절된 벡터, 벽에 부딪치지 않은 벡터)가 듣는 사람에게 더 가까이 있을 수록 더 높은 가중치를 주어서 sound 2 위치가 기울도록 수정하였습니다. 

반응형

댓글