해결된 질문
작성
·
1.1K
0
아마 성능을 위해 애니메이션 블루프린트 로직이 작업자 스레드에서 돌아가도록 옵션 켜는게 있는 것 같은데요.
많은 다른 예제에서 블루프린트 EventGraph 대신 Blueprint Thread Safe Update Animation 이라는 블루프린트 함수를 대신 사용하고 또, C++ 로도 NativeUpdateAnimation() 대신
NativeThreadSafeUpdateAnimation() 가 있더라구요.
그리고 블루프린트 전용 함수에서도 ThreadSafe 옵션을 켜고 끄는게 있는데 이걸 켜면 일반적인 C++ 함수를 호출할 수 없고, C++ 함수에 Meta = (BlueprintThreadSafe) 지정자를 설정하면 보이긴 하는데요.
여기서 NativeThreadSafeUpdateAnimation() 함수나
Meta = (BlueprintThreadSafe) 지정자를 붙인 C++ 함수에는동기화 기법( mutex 같은)을 사용해서 정말 내부적으로도 멀티스레드 프로그래밍 같이 코드를 짜야 하는건가요???
답변 2
0
네 싱글스레드로 게임 로직과 애니메이션까지 처리하면 부하가 걸릴 수 있어서 엄격한 정확성을 요구하지 않는다면 애니메이션 시스템을 별도의 쓰레드로 돌리는 작업이 프레임의 병목 현상을 줄일 수 있어 합리적인 선택이라고 볼 수 있습니다. 다만 제 강좌는 게임프레임웍을 다루는 것을 목표로 하고 있어서, 이러한 애니메이션 시스템에 대해 설명하지는 않고 있습니다.
아무튼 저 기능을 사용하기 위해 직접 저수준의 자원 핸들링까지 진행할 필요는 없습니다. 이미 언리얼에서 직접 접근하는것이 아닌 간접 객체인 FAnimInstanceProxy를 통해서 안정적으로 원하는 값을 얻어올 수 있도록 기능을 제공하고 있습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
질문하신 Unreal Engine의 애니메이션 멀티스레딩과 관련하여, NativeUpdateAnimation과 NativeThreadSafeUpdateAnimation, 그리고 BlueprintThreadSafe 메타 태그 사용에 대한 내용은 강의 내용과 직접적인 연관이 없는 것으로 보입니다. 따라서 질문에 대한 답변을 찾아드릴 수 있는 기존 답변이 없습니다.
만약 멀티스레딩에 대해 더 알고 싶으시다면, 관련 전문 서적이나 개발 커뮤니티, 공식 Unreal Engine 문서를 참고하시는 것을 추천드립니다.
감사합니다.