Impacter와 Unreal - 게임 물리를 사용하여 Impacter 플러그인 제어하기

사운드 디자인 / 공간 음향 / Wwise에 대한 팁과 도구

소개

Impacter(임팩터)는 Wwise를 위한 새로운 타격음 모델링 플러그인입니다. 플러그인 소개는 이 글을 통해 확인해주세요. 이 글에서는 Impacter를 사용하여 Unreal Engine으로 만든 데모 게임 환경에 사운드를 구현하고 통합해보게 됩니다. Unreal에서 Impacter를 어떻게 사용할 수 있는지 알아보기 전에 먼저 주요 기능을 간략히 알아봅시다. Impacter의 질량(mass)과 속도(velocity) 매개 변수를 구동하기 위해 물리 시스템이 어떻게 사용되었는지 주로 살펴보겠습니다. 물론 다른 게임 엔진을 사용할 수도 있으며, 여기서 소개된 내용은 여러분의 주요 도구에 상관 없이 적용됩니다.

Impacter

Impacter는 서로 다른 사운드의 구성 요소를 교차 합성하고 물리적으로 정보를 받는 변형을 적용하는 음원 플러그인입니다. Impacter에 대한 더 자세한 설명은 라이언 돈(Ryan Done)이 작성한 블로그설명서를 통해 확인하실 수 있지만, 아래에 주요 기능을 간단하게 요약해보았습니다.

 

교차 합성

  • Impacter 안으로 여러 사운드를 로드할 수 있습니다. 이 사운드는 내부적으로 분석되며 '타격음(impact)'과 '골격(body)'이라는 두 가지 구성 요소로 구분됩니다. 타격음은 오브젝트가 부딪힐 때의 초기 충돌을 말합니다. 골격은 초기 충격 후 오브젝트의 울림을 말합니다.
  • 타격음과 골격 구성 요소는 서로 조합하거나 맞출 수 있습니다. Impacter는 각 재생에서 타격음과 골격 구성 요소를 랜덤으로 선택합니다.

 

물리적으로 정보를 받는 매개 변수

  • 질량(Mass)은 타격을 받는 오브젝트의 크기를 말합니다.
  • 속도(Velocity)는 오브젝트가 타격을 받는 강도를 말합니다.
  • 위치(Position)는 오브젝트가 타격을 받는 위치를 말합니다. 이 매개 변수는 음향 모드 현상에 영감을 받아 제작되었습니다. 이 위치를 변형하면 사운드의 공명을 약간씩 변형할 수 있습니다.
  • 조도(Roughness)는 청각적으로 거친 정도를 말하며 사운드의 공명에 주파수 변조(frequency modulation, FM)를 추가하여 구현됩니다.

 

Impacter Unreal Demo

Impacter Unreal Demo(임팩터 언리얼 데모)는 (간단한) 게임 환경에서 Impacter를 시험해보고 여러 가지 사용 방법을 설명하기 위해 개발되었습니다. 다음 섹션에서는 일부 사용 사례를 간단하게 설명하고 Impacter가 게임 물리에 의해 효율적으로 구동되는 방식을 살펴보게 됩니다.

달려가면서 바닥과 부딪힘 (발자국)

이 데모에서는 꽤나 일반적인 방법으로 발자국이 구성되어 있습니다. Wwise에는 다양한 바닥 재질에서의 발자국 소리가 담긴 Switch Container와 이를 제어하는 State Group ('FootstepMaterial')이 있습니다. 게임에서의 바닥 표면은 Wwise에 있는 FootstepMaterial State를 설정합니다.

FootstepSwitchWwise

각 발자국 SFX가 Impacter의 인스턴스를 담고 있기 때문에 같은 비용으로 더 풍부한 결과를 얻을 수 있습니다. 다시 말해 교차 합성을 사용하여 오디오 샘플을 더욱 변형할 수 있죠. 그렇긴 해도 지금까지는 발자국이 꽤나 일반적인 방법으로 구성되어 있습니다.

FootstepsCrossSynthFootstepsVelMass

질량과 속도 매개 변수를 사용하면 결과가 더 흥미로워지기 시작합니다. 이 매개 변수를 사용하면 발자국 소리가 캐릭터의 크기에 따라 변하도록 할 수 있죠. 그리고 CharacterSize라는 추가적인 RTPC를 사용하면 각 발자국 소리의 속도와 질량을 모두 구동할 수 있습니다. Unreal에서는 캐릭터 오브젝트의 크기를 사용하여 CharacterSize RTPC가 구성됩니다. 또한 캐릭터 오브젝트의 크기는 역으로 캐릭터의 속도(및 달리기 애니메이션)에도 영향을 미칩니다. 이 구성을 사용하면 거대하고 느릿한 캐릭터로부터 작고 민첩한 캐릭터로 전환하는 효과를 시뮬레이션할 수 있죠. CharacterSize RTPC를 Impacter의 속도와 질량으로 매핑하면 이러한 내용을 발자국 소리에 쉽게 반영할 수 있습니다.

월드 오브젝트가 충돌할 경우

환경에 있는 각 오브젝트와 표면에는 한 개 이상의 Impacter를 트리거하는 해당 Wwise 이벤트가 있습니다. 각 Impacter 인스턴스에는 RTPC('ImpactVelocity'와 'ImpactMass')와 연결된 속도와 질량이 있으며, 이 요소는 충돌이 일어날 때 게임에 의해 구동됩니다.

Unreal 데모를 제작하고 Impacter를 통합하는 도중 가장 중요했던 작업 중 하나는 바로, 충돌 도중 Unreal 물리 시스템을 쿼리하여 Impacter 사운드가 자연스럽게 반응할 수 있도록 질량과 속도 매개 변수에 합리적인 값을 제공하는 것이었습니다. 이 작업은 ImpacterComponent라는 커스텀 SceneComponent Blueprint에 구현되어 있습니다. 게임 안의 각 Actor Blueprint 클래스에는 하나의 ImpacterComponent가 있습니다 (일부 클래스에는 여러 개가 있습니다). 두 오브젝트 간에 충돌이 일어나면 이 두 오브젝트의 ImpacterComponent가 ImpactComponentCollision을 호출하게 됩니다. 바로 여기에서 Impacter 이벤트가 각 오브젝트에서 트리거되기 전에 Wwise로 전송되는 ImpactVelocity와 ImpactMass RTPC 값이 계산되죠.

ImpactComponentCollision

여기서 몇 가지 용어를 정의해보면 좋을 것 같습니다. 정적 오브젝트(static object)는 절대 이동하지 않는 오브젝트를 말합니다. 반대로 동적 오브젝트(dynamic object)는 월드에서 이동할 수 있죠. 두 오브젝트가 충돌하면 Unreal에서 각 오브젝트의 ImpacterComponent에서 두 개의 충돌 이벤트가 트리거됩니다.

CheckComponentCollision

각 오브젝트는 다음 방식으로 충돌을 처리합니다. On Component Hit 이벤트가 ImpactComponent에서 CheckImpactComponentCollision을 호출합니다. CheckImpactComponentCollision는 'Other Actor'에 ImpactComponent가 있는지를 확인합니다. ImpactComponent가 있을 경우 ImpactComponentCollision이 호출됩니다.

CheckImpactComponentCollision

이 부분을 좀 더 정확하게 이해하기 위해서 발사체가 벽과 충돌하는 구체적인 예시를 살펴봅시다. 벽의 관점에서 볼 때 충돌하는 오브젝트('다른' 오브젝트)는 발사체입니다. 발사체의 관점에서 볼 때 충돌하는 오브젝트('다른' 오브젝트)는 벽입니다. 벽이 발사체와 충돌한다는 생각이 직관적이지 않게 들릴 수 있지만 이 섹션의 나머지 부분을 살펴볼 때 이 두 상황을 염두에 두는 것이 유용합니다. 여기서 주된 개념은 바로 각 오브젝트가 해당 Wwise 이벤트를 트리거하며, 자체적인 물리적 특성과 다른 오브젝트의 특성을 사용하여 ImpactVelocity와 ImpactMass RTPC를 계산한다는 것입니다.

ImpacterComponent는 게임에 있는 모든 오브젝트에서 사용되기 때문에, 물리적으로 그럴듯하며  일반화할 수 있도록 충돌 물리에서 RTPC 값으로의 매핑을 구현하는 것이 목표입니다. 이렇게 하면 사운드 디자이너가 직접 추가 수정을 할 필요 없이 오브젝트의 물리적 특성이 사운드를 충분히 구동할 수 있죠. 레벨 디자이너는 사운드 디자이너가 속도와 질량 곡선을 합리적으로 조정하는 한 사운드가 알맞게 반응할 것이라는 확신을 가지고서 오브젝트를 설계, 배치, 변경할 수 있습니다.

이제 이 부분을 염두에 두고, 충돌이 일어날 때 ImpactComponent가 ImpactComponentCollision 함수를 사용하여 RTPC 값을 계산하는 방식을 살펴볼까요?

질량과 속도

ImpactMass와 ImpactVelocity RTPC 값은 각각 GetImpactMass와 GetImpactForce에서 계산됩니다. 이 두 요소는 모두 ImpactComponentCollision에서 호출됩니다.

GetMassAndVelocity

질량 (GetImpactMass)

질량은 동적 오브젝트의 Unreal 물리 시스템에서 직접 가져오게 됩니다. (참고: 오브젝트가 올바른 질량을 가지도록 하려면 오브젝트에 대해 올바른 밀도(density) 값으로 Physical Material을 구성해야 합니다). 정적 오브젝트의 경우 물리를 시뮬레이션하지 않기 때문에 질량 값이 없습니다. 대신 명시적인 질량 값이 주어지죠. 벽과 바닥의 경우 충돌 도중 질량 RTPC 값을 설정할 때 충돌하는 오브젝트의 질량으로부터 해당 질량 값의 무게가 정해집니다.

GetImpactMass

속도 (GetImpactForce)

오브젝트의 속도는 Impacter에 있는 속도 매개 변수와 직접 매핑할 수 있습니다. 하지만 이 경우 작고 가벼운 오브젝트에 부자연스럽게 큰 충돌음이 생길 수 있습니다. 예를 들어 작고 말랑한 공이 충분한 속도로 금속 표면과 충돌할 경우 이 표면이 큰 타격음을 트리거할 수 있습니다. 그렇기 때문에 타격의 세기를 Impacter의 속도 매개 변수와 매핑하는 것이 낫습니다. 따라서 그냥 속도가 아닌 가속도(momentum) (속도 x 질량)를 사용해야 하죠. 이렇게 하면 보다 가벼운 오브젝트가 더 낮은 ImpactVelocity RTPC 값을 생산해서 '더 약한' 타격음을 만들어낼 수 있습니다. 또한 각 오브젝트의 ImpactVelocity RTPC 값을 계산할 경우 오브젝트의 가속도를 모두 고려해야 합니다. 뿐만 아니라 밀도를 매핑 안으로 직접 가져와서 단단하지 않은 오브젝트가 더 약한 타격음을 만들어내도록 할 수도 있습니다.

질량의 경우 타격하는 오브젝트가 동적이거나 정적인지에 따라 속도의 계산이 약간씩 달라집니다. 타격하는 오브젝트가 정적일 경우에는 ImpactedByStaticObject 함수를 사용하여 강도를 계산합니다. 타격하는 오브젝트가 동적일 경우에는 ImpactedByDynamicObject가 사용됩니다.

ImpactedByStaticObject

StaticForce

여기에서는 타격을 받은 오브젝트의 가속도를 타격하는 오브젝트의 밀도와 곱해서 ImpactVelocity RTPC 값을 얻었습니다. 기억하세요, 여기서 타격하는 오브젝트는 벽이나 바닥입니다.

ImpactedByDynamicObject

DynamicForce

여기서는 각 오브젝트의 가속도의 합(가장 작은 오브젝트의 밀도에 의해 가중됨)을 사용합니다. 이 경우 타격을 받은 오브젝트가 고정적일 수 있기 때문에, 가속도가 0이 되어서 가속도의 합이 타격하는 오브젝트의 가속도와 같아질 수 있습니다.

이제 이 다양한 상황을 충돌 표를 사용하여 정리해볼까요? 그림 1에서는 각 충돌 상황에서 Velocity(속도)와 Mass(질량) RTPC가 계산된 방식을 보여줍니다. 두 정적 오브젝트는 서로 절대 충돌할 수 없습니다.

RTPCCalcMatrix
그림 1: RTPC 계산 행렬

시험 및 개선하기

이렇게 매핑을 구성했으니 이제 발사체를 표면으로 발사하여 어떤 소리가 나는지 시험해볼 수 있습니다.

소리가 영 별로네요! 그 이유는 공이 바닥을 굴러가면서 Unreal 물리적 시스템이 충돌 이벤트를 지속적으로 만들어내기 때문입니다. 굴러가는 공은 딱히 별도의 충돌 이벤트를 갖지 않기 때문에 바닥 표면의 충돌을 비활성화해서 충돌을 멈출 수 있습니다 (혹은 SoundSeed Grain과 같은 다른 플러그인으로 굴러가는 소리를 구현할 수도 있습니다). 하지만 이 지속적인 충돌을 잘 사용하면 무언가가 굴러가는 소리를 수많은 작은 타격음으로 시뮬레이션해낼 수 있습니다. 'Hit the ground rolling'이라는 영어 속담처럼요! 그러기 위해서 먼저 ImpacterComponent에 의해 Wwise 이벤트가 트리거되는 속도를 제한해봅시다.

아까보다는 덜 별로인 것 같지만 메트로놈처럼 너무 일정해서 부자연스럽게 들리네요. 좀 더 자연스럽게 해주기 위해서 Wwise 이벤트 사이의 주기가 조금씩 랜덤일 수 있게 해봅시다. 그러기 위해서 타이머가 재설정되는 주기에 랜덤 상쇄값을 추가해보겠습니다.

좀 더 괜찮아지기 시작하지만, 공이 굴러가면서 반복되는 타격음이 굴러가는 동작에 비해 너무 강한 것 같습니다. 누군가가 계속해서 바닥을 치는 것 같죠. 이를 보완하기 위해서 동작의 방향을 고려해봅시다. 구체적으로 말해 오브젝트의 속도 벡터와 오브젝트의 중앙으로부터 표면의 타격 지점까지의 벡터 사이의 내적을 사용할 수 있죠. 글로 설명하자니 말이 길어지네요. 아래 다이어그램을 통해서 살펴보겠습니다.

DP

d = v.i v = 속도 벡터, i = 표면의 타격 지점에서 오브젝트의 중앙까지.

d를 사용해서 ImpactVelocity RTPC 값의 무게를 정합니다.

StaticForce_DP

오브젝트가 타격을 받는 지점을 향해 곧장 이동할 경우 d = 1 입니다. 공이 바닥을 굴러갈 경우 d가 낮기 때문에 RTPC 값이 감소합니다.

이렇게 해서 사운드 통합이 더 개선되었습니다. 공이 바닥에 처음 떨어지는 것과 그 후 바닥으로 굴러가는 것이 명확히 들리네요.

이렇게 요인을 추가하면 바닥에 굴러가는 것뿐만 아니라 다른 상황에서도 RTPC 계산을 개선해 줍니다. 예를 들어 빠르게 이동하는 오브젝트가 다른 오브젝트와 완전히 맞닥뜨리는 대신 옆을 슬쩍 스쳐 지나갈 경우도 잘 고려해줍니다. 동적 타격 (두 오브젝트가 모두 이동할 경우) 각 오브젝트가 d 값을 가지게 됩니다. 이 두 값의 최대값을 사용해서 두 속도 RTPC 값의 무게를 정합니다. 정적 오브젝트(바닥과 벽)의 경우 (d = 1, 최대일 경우), 타격하는 오브젝트가 정적이며 타격을 받는 오브젝트가 동적일 때 동적 오브젝트의 d가 항상 사용됩니다.

DynamicForce_DP

파괴하기

Impacter는 특정한 유형의 사운드를 위해 설계되었습니다. 이 알고리즘은 진폭 엔벨로프가 지수적으로 감소하며 하나의 주요 과도 신호 영역이 있다고 가정하죠. 다시 말해 사운드는 이런 '모양'이 됩니다:

ImpactWaveformsLateral

뿐만 아니라 다른 종류의 사운드는 어떨지 탐색해보는 것도 가능합니다. Impacter Unreal 데모에서 저는 '부서지고' '깨지는' 사운드를 사용했습니다. 이러한 사운드는 두 개 이상의 과도 신호가 담겨서 알고리즘이 가정하는 바를 깨뜨려버리죠.

MultipleImpactWaveforms

여기서 문제는 사운드에 따라 진폭 엔벨로프가 눈에 띄게 달라져서 골격 컴포넌트(공명 부분)에 부자연스러운 '울림'이 생길 수 있다는 것이었습니다. 발진기(oscillator)와 필터뱅크 진폭은 원본 사운드의 진폭 엔벨로프를 따릅니다. 별개의 진폭 엔벨로프가 있는 타격음 구성 요소와 조합되었을 경우 인위적인 소리가 나게 되죠.

Impacter UI에 있는 inclusion(포함) 체크 상자는 바로 이러한 상황을 위해 설계되었습니다. 이 체크 상자는 여러 사운드의 교차 합성을 탐색해볼 때 문제가 되는 타격/모델 조합을 제외할 수 있게 해줍니다.

Unreal에서 저는 디스트럭터블 메쉬(destructible mesh)를 활용해서 충분한 힘으로 타격했을 때 파괴될 수 있는 상자를 만들었습니다. 파괴 사운드에는 Impacter 인스턴스가 있으며, 이 사운드에는 타격음과 마찬가지로 RTPC와 연결된 질량과 속도가 있습니다.

이러한 파괴 사운드를 구현할 때 사용할 수 있는 또 다른 접근 방법은 바로 오브젝트가 파괴되면서 환경과 (혹은 서로) 타격할 때 각 조각이 Wwise Impacter 사운드를 트리거하도록 하는 것입니다. 이렇게 하면 여러 개의 개별적인 타격음이 서로 조합되어 게임에서 일어나는 물리적 상호작용의 직접 결과로 '부서지거나 깨지는' 소리가 나게 됩니다. Unreal 데모에 있는 파괴될 수 있는 상자는 바로 이 구성의 예시입니다. 처음에 저는 상자가 파괴될 때 트리거되는 '파괴'음을 사용했습니다.

이 파괴음은 과도 신호가 여러 개인 아주 독특한 진폭 엔벨로프를 가지고 있어서 문제가 되었습니다. 영상에서 들어볼 수 있듯이, 큰 상자가 파괴되면서 이에 맞는 물리적 상호작용 없이 여러 개의 과도 신호가 들립니다. 그래서 저는 상자의 각 조각에 ImpacterComponent를 연결해보기로 했습니다. 이 ImpacterComponent는 처음에 비활성화되어 있습니다. 상자가 파괴되면 각 조각에 있는 ImpacterComponent가 활성화되어 충돌에 반응하면서 Wwise 이벤트를 트리거하게 되죠. 이렇게 해서 상자가 파괴되면 조각에서의 각 타격이 자연스럽게 부서지거나 깨지는 소리를 만들게 됩니다.

위치 매핑하기

대부분의 경우 Unreal 데모에서 위치 매개 변수는 전반적으로 사운드를 더욱 변형하기 위해 랜덤화됩니다. 위치 매개 변수는 특정 필터와 발진기의 게인을 감소하여 공명을 변화시킵니다. 비선형적이며 주파수 의존적인 게인 경사도가 사운드의 골격 컴포넌트에 적용되죠. 위치 매개 변수는 이러한 내부 게인 경사도의 위치를 제어합니다. 다시 말해 변화하는 위치가 사운드의 공명을 약간씩 변화시킵니다. 위치가 0으로 설정될 경우 사운드는 '완전한' 공명을 가지게 됩니다. 즉, 게인 감소가 적용되지 않습니다. 내부 게인 경사도는 위치가 0에서 1로 변화하면서 피크 주파수의 게인을 점점 감소하거나 증가시킵니다.

position

Impacter 데모에서 큰 유리벽은 타격 위치와 벽의 중앙 사이의 거리를 ImpactPosition RTPC로 매핑합니다. 이 매핑은 모서리와 가장자리가 '가장 공명적'이며 타격이 중앙을 향해 이동하면서 서로 다른 피크 주파수가 상쇄되도록 역으로 매핑되어 있습니다.

알아두면 좋을 점

신중하게 고려해서 게임 물리를 RTPC에 매핑한다면 타격음을 통합하는 데에 Impacter가 아주 유용한 도구가 될 수 있습니다. 다음은 Impacter로 사운드를 통합할 때 염두해야 할 일반적인 원리입니다:

모든 값에 알맞게 설계하세요

  • 게임의 물리와 통합되었을 때 완전하게 표현될 수 있도록 Mass와 Velocity 매개 변수의 양 끝에서 사운드를 시험하세요.

강도를 사용하세요

  • Impacter의 Velocity 매개 변수는 충돌의 강도에 의해 구동되어야 합니다. 이 매개 변수는 두 오브젝트의 밀도와 가속도를 포함한 다양한 요인에 따라 달라집니다.

계속해서 위치를 변경하세요

  • 사운드 변형을 최대화하려면 보통 Position 매개 변수를 랜덤화하는 것이 좋습니다. 이렇게 하면 사운드의 공명이 약간씩 변화되어서 총알 타격음이나 발자국과 같은 곳에 특히 유용하게 사용할 수 있죠. 

규칙을 깨뜨려도 좋지만, 짧게 유지하세요

  • 이 플러그인은 '타격' 사운드를 위해 설계되었지만, 다른 종류의 입력으로 어떤 결과를 얻을 수 있는지 실험해보는 것은 항상 흥미로운 일이죠. 다만, 긴 샘플을 추가할 경우 특히 주의해주세요. 단순한 타격음의 경우에는 분석 단계가 꽤나 빠르지만, 보다 긴 사운드를 분석할 경우 시간이 오래 걸릴 수 있습니다.

교차 합성을 통해 변형음 만들기에 관한 세 번째 블로그를 기대해주세요!

션 소라한 (Sean Soraghan)

션 소라한 (Sean Soraghan)

Audiokinetic소프트웨어 개발자Audiokinetic의 소프트웨어 개발자인 션 소라한(Sean Soraghan)은 Authoring 도구뿐만 아니라 Unity와 Unreal 게임 엔진 통합을 작업하고 있습니다. 음색의 표현과 시각화에 대한 연구로 공학 박사 학위를 취득했으며, 대규모 시청각 설치와 전시 작업에 참여했습니다. 여가 시간에는 게임과 도구를 개발하는 것을 좋아합니다.

댓글

댓글 달기

이메일 주소는 공개되지 않습니다.

다른 글

라우드니스를 처리하는 최상의 방법, 제 1강: 라우드니스 측정 (1부)

방송과 같은 푸시 서비스, 멀티 플랫폼 상호작용 엔터테인먼트, 인터넷 스트리밍과 같은 다양한 미디어 형식에서 라우드니스는 단지 신호 전달 표준이 아니라 소비자 선호에 직접적인...

12.11.2019 - 작성자: 지에 양 (Jie Yang, 디지몽크)

WAAPI 간소화하기

Wwise 저작 API (Wwise Authoring API, WAAPI)를 사용하신 적이 없으시다면 이 글을 통해 사용해볼 기회가 생기기를 바랍니다. 네, 프로그래머가 아닌...

4.11.2020 - 작성자: Adam T. Croft

새로운 Impacter 플러그인 알아보기

개요 Impacter(임팩터)는 기존의 SoundSeed Impact 플러그인을 영감으로 하는 새로운 음원 플러그인입니다. 이 플러그인은 '타격음' 사운드 파일을 저작 도구로...

20.5.2021 - 작성자: 라이언 돈 (RYAN DONE)

게임 음악은 단순히 그냥 음악이 아니다: 제 2부

게임 음악이란 무엇일까요? 상호작용 음악이란 무엇일까요? 이 질문에 답하기란 생각만큼 그리 간단하지 않습니다. 올리비에 더리비에르(Olivier Derivière)는 이 글을 통해...

27.10.2021 - 작성자: 올리비에 더리비에르 (OLIVIER DERIVIÈRE)

텔 미 와이(Tell Me Why) | 오디오 다이어리 제 3부: 사운드 디자인

텔 미 와이(Tell Me Why)의 오디오 팀에게는 독특하면서도 인상 깊은 서사적 시퀀스를 향상시킬 수 있는 기회가 많았습니다. 저희 시네마틱 및 크리에이티브 디렉터는 영상에 꼭...

19.7.2022 - 작성자: 매튜 피오렌티니 (Mathieu Fiorentini)

Wwise Spatial Audio 2023.1의 새로운 기능 | 개선된 Aux Send Model

Wwise 2023.1에서 새로 제공되는 수많은 기능의 목록을 살펴보셨다면 아마 '개선된 Aux Send Model'이라는 흥미로운 문구를 발견하셨을 겁니다. 도대체 이게 무슨...

14.12.2023 - 작성자: Nathan Harris

다른 글

라우드니스를 처리하는 최상의 방법, 제 1강: 라우드니스 측정 (1부)

방송과 같은 푸시 서비스, 멀티 플랫폼 상호작용 엔터테인먼트, 인터넷 스트리밍과 같은 다양한 미디어 형식에서 라우드니스는 단지 신호 전달 표준이 아니라 소비자 선호에 직접적인...

WAAPI 간소화하기

Wwise 저작 API (Wwise Authoring API, WAAPI)를 사용하신 적이 없으시다면 이 글을 통해 사용해볼 기회가 생기기를 바랍니다. 네, 프로그래머가 아닌...

새로운 Impacter 플러그인 알아보기

개요 Impacter(임팩터)는 기존의 SoundSeed Impact 플러그인을 영감으로 하는 새로운 음원 플러그인입니다. 이 플러그인은 '타격음' 사운드 파일을 저작 도구로...