버전

menu_open
Wwise SDK 2019.2.15
통합 세부사항 - GetSourcePlayPosition

소개

상황에 따라, 게임 엔진은 특정 사운드의 현재 재생 위치에 대한 정보를 요구합니다. 예를 들어, 동기화로 비디오 렌더링과 오디오 콘텐츠를 지원하는 게임은 시각적으로 올바르게 렌더링하도록 반드시 사운드의 재생 위치를 질의해야 합니다. 만약 프레임 단위로 완료되어야 하면(입술의 움직임과 대사를 동기화처럼), 마커를 통한 재생 위치의 질의를 더 선호하게 됩니다. 재생 위치의 질의에 대한 또 다른 이점은 소스 파일을 수정할 필요가 없다는 점입니다. AK::SoundEngine::GetSourcePlayPosition() 메소드는 이벤트의 첫 번째 사운드가 재생되어 경과된 시간을 반환합니다.

참고: 사운드 재생을 조금 이동시키는 것과 달리 마커는 사운드 파일에서 발생하는 특정 이벤트를 표시하는 데 유용합니다.

통합

음원의 재생 위치를 질의할 수 있으려면, 반드시 AK_EnableGetSourcePlayPosition 플래그를 the AK::SoundEngine::PostEvent() 메소드에 전달해야 합니다. AK::SoundEngine::GetSourcePlayPosition()은 AkPlayingID로 언제든 호출될 수 있어서, 해당 이벤트와 연결된 음원에 대해 특별히 주의를 기울여야 한다는 걸 사운드 엔진에 알려줍니다.

그러고 나서 재생되는 음원의 현재 재생 위치를 얻기 위해 AK::SoundEngine::PostEvent() 호출을 통해 받은 AkPlayingID를 AK::SoundEngine::GetSourcePlayPosition() 메소드에 전달하여 호출할 수 있습니다.

예제

다음 코드는 AK::SoundEngine::GetSourcePlayPosition() 함수의 사용을 나타냅니다.

(...)
static AkPlayingID g_markersPlayingID = 0;
(...)
(...)
g_markersPlayingID = AK::SoundEngine::PostEvent( AK::EVENTS::PLAY_MARKERS_TEST, GAME_OBJECT_ID_MARKERS,
(...)
AkTimeMs uPosition = 0;
// 게임 반복문에(주기적으로 발생):
AK::SoundEngine::GetSourcePlayPosition( g_markersPlayingID, &uPosition );
// 이제 uPosition을 사용해서 립싱크를 다룹니다.

제한사항

  • 이벤트에 여러 재생 액션이 포함되어 있으면, GetSourcePlayPosition()는 0시간에 발생하는 첫 번째 재생 액션의 대상에 의해서 재생되는 첫 번째 원음의 위치를 반환합니다. 원음 재생이 멈추면, 위치를 반환하는 원음의 정의가 해제됩니다.
  • 연속적인(랜덤 또는 시퀀스) 컨테이너는 현재 재생 중인 사운드의 위치를 반환합니다. 사운드가 많을 경우, 위치를 반환하는 원음의 정의는 해제됩니다. 크로스 페이드나 샘플 정밀 표현 전환에서 이전 음원의 재생이 끝났을 때만 다음 음원이 위치를 반환합니다.
  • 외삽법을 사용했을 때, 다시 반복되어 짧은 시간에 음원 반복은 반복의 끝을 초과할 수도 있습니다.
  • 몇몇 가상 음성은 우선순위가 특정 임계치 아래로 떨어지면 제거됩니다. 이러한 상황에서는 AK::SoundEngine::GetSourcePlayPosition()으로부터 오류 코드를 받게 됩니다. AK::SoundEngine::GetSourcePlayPosition()를 호출할 때 반환 값을 항상 검사해야 합니다.
  • 동적 피치의 변경으로 전환되는 짧은 시간 동안에 재생 위치를 조금 옮기는 결과를 가져올 수 있습니다.
참고
AkInt32 AkTimeMs
Time in ms
Definition: AkTypes.h:61
#define NULL
Definition: AkTypes.h:49
@ AK_EnableGetSourcePlayPosition
Enable play position information for use by AK::SoundEngine::GetSourcePlayPosition().
Definition: AkCallback.h:76
AKSOUNDENGINE_API AKRESULT GetSourcePlayPosition(AkPlayingID in_PlayingID, AkTimeMs *out_puPosition, bool in_bExtrapolate=true)
AKSOUNDENGINE_API AkPlayingID PostEvent(AkUniqueID in_eventID, AkGameObjectID in_gameObjectID, AkUInt32 in_uFlags=0, AkCallbackFunc in_pfnCallback=NULL, void *in_pCookie=NULL, AkUInt32 in_cExternals=0, AkExternalSourceInfo *in_pExternalSources=NULL, AkPlayingID in_PlayingID=AK_INVALID_PLAYING_ID)
AkUInt32 AkPlayingID
Playing ID
Definition: AkTypes.h:60

이 페이지가 도움이 되었나요?

지원이 필요하신가요?

질문이 있으신가요? 문제를 겪고 계신가요? 더 많은 정보가 필요하신가요? 저희에게 문의해주시면 도와드리겠습니다!

지원 페이지를 방문해 주세요

작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.

프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.

Wwise를 시작해 보세요