본문 바로가기
Project

sound project - 2020.10.8

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

1) 각 위치에 따른 주변 지형과의 기울기 크기 구하기

- 기울기가 클수록 높이 차가 크다는 것을 가르키기 때문에 이를 통해 소리의 감소 값을 조정해줄 예정이다.

 

현재 테스트 지형

 

한 지점에 대해 주변 지형 기울기 정도를 구하는 방법은 아래와 같이

기울기를 계산한 각 plane = plane 위치를 기준으로 위쪽-아래쪽 y 값 차이 a 를 구하고, 왼쪽-오른쪽 y 값 차이 b를 구해서 a*a + b*b를 해서 루트 한 값으로 설정

 

기울기 크기 구하는 방법

 

위 수식으로 구한 값을 색깔로 나타내는데 색깔이 가진 의미,

 

 

위 수식으로 구해서 색깔로 나타내본 결과 ( Terrain 기울기 Color map )

 

기울기 크기 표시 결과 맵 ( Terrain  기울기  Color map ) 

 

각 지점에 따른 높이를 색깔로 표현한 맵 (Terrain 높이  Color map)

 

보시다싶이 평면에서는 0 값이 뜨며 제일 높은 봉오리에서 붉은 색 값이 뜬다. 또한 산 주변으로 기울기 값이 있는 것을 확인할 수 있다. 또한, 높이가 비슷했던 봉오리에서는 청색으로 기울기 차가 크지 않는 것을 확인할 수 있다.

 

빨간 색 박스 : 평면으로 기울기 크기 값이 0 에 가까운 값이 뜨는 것을 확인할 수 있다.

주황색 박스 : "각 지점에 따른 높이를 색깔로 표현한 맵"에서 주황색 박스를 보면 두 plane의 높이가 비슷한 것을 볼 수 있는데 "기울기 크기 표시 결과 맵"에서 이것을 잘 반영하여 기울기 크기 값이 낮은 것을 볼 수 있다.

검은 색 박스 : 높이 차가 심하게 나는, 즉, 경사가 심한 봉오리 위치로 기울기 크기 값이 1에 가까운 큰 값을 가지는 것을 볼 수 있다.

 

2) 이때까지 측정한 값 더해서 최종 결과 내기 

- 지형에 따라 소리 크기 변화 map 구하기

- 위의 결과를 얻기 위해 지형의 높이 분석, 기울기 분석하여 실제로 소리가 퍼지는 양상에 계산해줌.

- 계산 수식 : 소리 크기 color map * Terrain 높이 Color map * terrain 기울기 color map = 지형을 따른 소리 크기 color map (이때, terrain 높이 color map 값 0 ~ 1 사이 값을 가짐. / terrain 기울기 color map 값 0 ~ 1 사이 값을 가짐.)

 

< 전체적인 결과 >

 

처음 지형을 가지고 테스트한 전체 결과

 

< 최종 결과 >

 

최종 이미지

 

최종 이미지는 Terrain 높이 Color map * 소리 크기 color map * terrain 기울기 color map 방법한 이미지이다.

이때 색깔이 나타내는 의미 :

 

색깔의 의미

 

아래는 마지막으로 실제 소리가 색깔에 따라 컸다 작았다 잘 들리는지 테스트 해본 결과 및 전체 과정 동영상 :

 

 

3) 소리를 이용한 npc의 움직임

Test 1. 소리 1개의 위치와 소리 크기를 직접 알고 있다는 전제 하에 npc 움직임

 

navmesh

Plane에 캐릭터를 두고 sound가 들리면 이동하게 하기 -> navmesh 전체 plane에 적용.

-> 캐릭터가 사운드를 잘 듣고 이동하는지 test 하기 위해 Sound volume을 체크해서 0이상 이면 sound position으로 이동. (sound volume, position 값을 직접 알고 있어야함.)

 

Test 2. 소리 개의 위치와 소리 크기를 직접 알고 있다는 전제 하에 npc 움직임

 

사운드가 2개 일 때

Plane에 캐릭터를 두고 sound가 더 크게 들리는 사운드로 이동하게 하기

-> Sound1sound2의 volume 크기를 비교해 더 큰 쪽으로 이동. (sound volume, position 값을 직접 알고 있어야함.)

 

Test 3. 소리 1개의 위치와 소리 크기를 모르고 있다는 전제 하에 npc 움직임

 

KakaoTalk_20201008_011248594.mp4
0.11MB

 

Plane에 캐릭터를 두고 Sound 1의 소리 크기를 이용해 캐릭터 이동.

-> 기존과 같이 100개의 plane을 생성하고 player가 움직일 수 있도록 navmesh plane을 똑같은 위치에 생성.

-> player의 위치에서 상하좌우로 listener 움직이며 소리를 측정해 소리 크기가 더 큰 쪽으로 이동하게 만들며 가며 plane의 번호를 저장.

-> 캐릭터와 sound1과의 거리가 4이하가 되면 끝낸다.

-> 마지막에 저장해둔 길로 다시 한번 더  전체적인 이동을 보여준다.

 

Test 4. 소리 2개의 위치와 소리 크기를 모르고 있다는 전제 하에 npc 움직임

 

KakaoTalk_20201008_011249851.mp4
0.08MB

 

Plane에 캐릭터를 두고 Sound 1의 소리 크기를 이용해 캐릭터 이동.

-> player의 위치에서 상하좌우로 listener 움직여 sound1 sound2의 소리 크기를 검사한다. (소리를 단 객체에서만 소리의 크기를 측정할 수 있다)

-> 상하좌우 소리가 가장 큰 방향으로 이동한다.

-> 캐릭터가 sound1sound2 중 하나와 거리가 4이하가 되면 끝낸다.

-> 마지막에 저장해둔 길로 다시 한번 더  전체적인 이동을 보여준다.

 

4) 추후 계획

1.장애물 있을 때에 sound 2를 적용해서 npc 움직임 테스트 해보기

2.소리가 2npc 움직임 테스트 해보기

3.소리가 움직일 때의 npc 움직임 테스트 해보기

반응형

댓글