[2023 01 29] 목소리 더빙, 보이스 도와주는 프로그램 개발 연습 일지 (5) - Whitmem
[2023 01 29] 목소리 더빙, 보이스 도와주는 프로그램 개발 연습 일지 (5)
Develop History
2023-01-29 03:18 게시 b375f0e9270eb997b8a1

0
0
87
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
이번 목표
빠진 클래스를 설계하고 동작 사항을 구성한다.
Scene 관리자
이전 설계를 보면 단순히 오디오 데이터를 나열하고 버퍼를 관리하는 데이터 클래스들만 존재 했다면, 이번에는 이 데이터들을 재생하고 렌더하는 클래스가 필요하다.

2개의 Scene 관리자

상기 ScenePlayerSceneRenderer은 하나의 씬을 처리하는 클래스로, 여러 씬을 합치고 처리하는 것은 외부 Layer에서 처리하는 것을 목표로 한다. 이 Layer에서는 Scene 단위로 처리하는 것을 목표로하며, 만약 프로젝트 내 장면 흐름을 지정하고 장면 흐름대로 재생 해 주는 것은 UI가 담당한다. UI에서 장면을 배치하고, 장면 흐름을 나열하고 재생을 누르면 장면 흐름에 맞게 SceneClass 들이 로드되고 처리된다.
SceneRenderer
특히 SceneRenderer은 씬 하나의 결과물을 렌더링 하는 것으로 ScenePlayer에게도 매우 중요하다. ScenePlayer에서 소리를 재생하기 위해서는 작성된 Obj들의 버퍼가 필요한데, 이 버퍼를 외부에 접근해서 가져오는 것 보다, 전용 렌더러를 통해 모든 수식 작업을 완료 한 뒤 버퍼만 받아 재생하는 것이 좋다. 즉, 재생을 하기 전 렌더러부터 버퍼를 받고, 받은 버퍼 바이트 값들을 활용 해 Player은 오디오 장치를 통해 재생시킬 수 있다.

2개의 Scene 관리자

이 때 SceneRenderer은 CallBack 함수들이 존재하는데, CallBackProgress와 CallBackSuccess를 담아두고, 렌더가 진행 중일 때 현재 퍼센트를 백분율 단위로 CallBackProgress에 반환해 사용자에게 피드백을 줄 때 추후 유용히 사용할 수 있도록 한다. 물론 PD Layer에서는 화면에 출력하는 작업을 고려하지 않으므로, CallBackProgress 에서는 단순히 퍼센트만 반환하도록 하며, (어차피 추후 UI 작업에서 퍼센트를 받기 위해서는 SceneRenderer가 반환을 해야한다.) CallBackSuccess는 완료 되면 호출되는 함수로 SceneRenderer가 완료 된 뒤 버퍼를 가져갈 타이밍을 전해준다. 만약 추후 UI 부분에서 (지금은 UI를 신경쓰면 안되지만) 장면을 여러 개 넣어두고 렌더링을 한다면, 장면 하나가 완료 되면 다음 장면이 렌더링 될 수 있도록 타이밍을 알려줄 수 있다. (적어도 소설, 이야기, 애니메이션, 게임 장면은 순서대로 진행되는 흐름이기 때문에, 순서대로 처리해야 한다.)
다음 목표
이제 본격적으로 개발을 들어가도 되는 것인지 최종 설계를 해 본다.
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.