Notice
Recent Posts
Recent Comments
05-21 07:17
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

Unity - Essentials of real-time audio 본문

Unity

Unity - Essentials of real-time audio

알 수 없는 사용자 2023. 6. 20. 13:27

Audio 추가

 게임에서 BGM, 효과음 등은 시청각의 재미에 있어서 굉장히 중요하다. unity에서 URP 템플릿을 새로 생성하고, https://assetstore.unity.com/packages/essentials/tutorial-projects/foundations-of-audio-183075에서 다운받은 에셋을 import해주자.

 Project 창에서 다음과 같은 폴더에 EssentialsAudioScene을 더블클릭하여 예시 장면(Scene)을 열 수 있다.

 

 이제 미리 다운받은 에셋을 플레이 버튼을 눌러 테스트 가능하다. 배경 음악을 넣기 위해 빈 오브젝트를 하나 만들고, Audio component를 넣어줄 것이다.

 

 Audio를 넣기 위해 Audio Source 컴포넌트를 넣어준다.

 

 Audio에서 AudioClip 프로퍼티에 import한 폴더의 Audio 폴더에 Music을 더블 클릭해준다. 오디오가 어떤 파형으로 되어 있는지 확인하고 싶을때는 프로젝트 창에서 해당 오디오.ogg를 클릭해서 인스펙터 창에서 볼 수 있다. 그리고 파형을 클릭하면 해당 위치부터 음악이 흘러나오게 할 수 있다. 이때 배경 음악을 추가하면 장면의 어디에서든 똑같은 볼륨으로 음악이 재생이 되는데, 실제 공간에서 흘러나오는 것처럼 하게 하려면 이동하는 위치에 따라 볼륨이나 피치가 바뀌는 오디오를 추가할 수 있다. 이를 3D 사운드라고 한다.

 카메라가 사용자의 눈이라면 오디오 리스너(Audio Listener)는 귀 역할을 한다. 씬에서는 부엌에서 이동하는 사용자를 나타내는 Character라는 게임 오브젝트가 있으며, 다음과 같이 구성된다.

  • Main Camera
  • Built-in Audio Listener
  • Capsule Collider

 이제 Character의 자식 Object들을 까보자.

 

 위의 초록색 부분을 Collider, 여기에서 머리 부근에 Camera가 달려있는 것을 확인할 수 있다(Character를 선택해 F를 누르자). 또한 이 계층 구조에서 Main Camera를 선택하여 Audio Listener 컴포넌트를 확인할 수 있다. 여기는 프로퍼티가 아예 없어서 아무것도 뜨지 않는 것을 볼 수 있다.

 

 

3D 음향 제작

 오디오 클립은 씬의 오디오 리스너 위치에 따라 다르게 들리는데, 이제 3D 음향을 씬 내에서 틀어만 주면 된다. 계층 창에서 회색으로 되어 있는 오브젝트 BoilingPot이 있는데, 회색의 의미는 이 오브젝트는 지금 비활성화되어 있다는 의미이다. 해당 BoilingPot을 클릭해 Inspector 창의 이름 왼쪽에 체크박스를 클릭하여 활성화시켜주자.

 

 이제 플레이 버튼을 통해 테스트한다. 씬에서 끓는 물소리가 나면 되는데 아직 3D 음향 효과를 넣어주지 않았기 때문에 어디에서든 똑같은 볼륨으로 들릴 것이다. 3D 음향을 넣어주기 위해 냄비 오브젝트의 BoilingWaterAudio에 가준다.

 여기서 Loop 프로퍼티는 해당 소리가 끝나면 0초부터 다시 시작하는 무한 재생 여부이고, 이 소리를 3D 사운드로 전환하기 위해 Spatial Blend(공간 혼합)을 오른쪽 끝까지(1로 설정) 해준다. 얘는 0~1의 값을 가지며, 0은 2D 소리 (Non-spatialized), 1은 3D 소리(Fully spatialized)가 된다. 이제 다시 게임을 시작하면 3D 음향 효과를 볼 수 있다. 더 세부적인 설정을 위해 맨 밑의 3D Sound Setting을 통해 Audio Listener와 Audio Source의 거리를 통해 Fade-in, Fade-out을 설정할 수 있다.

 

 Min Distance를 0.5로 설정하고 Max Distance의 값을 1로 설정하면 [0, 0.5] 구간 내에서는 최대 볼륨이, 0.5에서 1까지는 Logarithmic Rolloff의 형태의 함수(?)로 소리가 줄어듦을 알 수 있다. 거리가 1 이후부터는 아예 안들리게 된다.

 오디오 DCC들을 통해 오디오 소스들을 만들어 낼 수 있으며, 대부분은 Audition, Logic Prom Reaper, Audacity와 같은 오디오 툴을 통해 음향 효과와 음악을 레코딩, 편집, 믹싱할 수 있다. 또한 다음과 같은 링크에서 오디오 어셋을 다운받을 수 있다.

 

에셋스토어

여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.

assetstore.unity.com

 

 

 위에서 살펴본 모든 것들을 종합해 이젠 움직이는 음향효과를 내볼 것이다. 흔히 일상 생활에서 구급차가 가까워졌다가 멀어지면 파장의 형태가 바뀌는데 이를 도플러 효과(Doppler effect)라고 한다. 이는 소리나 빛 등의 파동이 관찰자와 파동원 사이의 상대적인 운동으로 인해 주파수가 변하는 현상을 말한다. 처음 프로젝트로 돌아와서 Ball에 다음과 같이 스크립트를 입력할 것이다.


using UnityEngine;

public class BallTransform : MonoBehaviour
{
    public Vector3 positionChange;
    public bool front = true;

    private void Update()
    {
        if(front) transform.position -= positionChange;
        if(!front) transform.position += positionChange;
        if(transform.position.z < -5) front = false;
        if(transform.position.z > 5) front = true;
    }
}

 그리고 이 스크립트 컴포넌트가 들어간 오브젝트에 3D 음향을 넣어준다. 3D  음향에서 Doppler Level을 통해 도플러 효과가 더 쎄지거나 더 약해지거나 설정이 가능하다.

 

 이제 Position Change의 z값을 0.02로 수정하여 도플러 효과를 체험할 수 있다.

 

 

'Unity' 카테고리의 다른 글

Unity - The real-time industry  (0) 2023.06.22
Unity - Essential of real-time 2D  (0) 2023.06.22
Unity - Essentials of programming in Unity  (0) 2023.06.20
Unity - Project: Essentials of real-time 3D  (0) 2023.06.19
Unity - Real-time Creation  (2) 2023.06.19
Comments