Blend Depth : 총 몇 단계 자손 본까지 blend 대상으로 포함을 시키겠다. ex pelvis(3) : pelvis로부터 3단계 자손까지 blend 대상으로 포함 ex thigh_r(-1) : 이 본과 그 하위에 있는 본들을 이 blend 대상으로부터 제외 (허벅지 밑에 하위에 종속되어 있는 본들은 다 블렌드를 하지 않을 것) 강의를 들으며 정리한 내용입니다. 제가 잘 이해했는지 헷갈려서 질문드립니다. Base Pose가 재생되는 기본 포즈이고 , Blend Poses 0의 포즈에서 Layer setup을 통해 pelvis(3) 즉 3단계 자손까지 blend 한다. (하지만 음수인 thigh_l , thigh_r의 자손들은 blend하지 않는다.) 라고 이해하면 될까요?
LoadedAssets에 동시접근하는 이슈를 막기 위해, 언리얼 에디터 로드 전에는 쓰레드가 안전하지 않아서라고 말씀하셨는데 AddLoadedAsset을 GetAsset과 GetSubclass 함수에서 호출할텐데 GetAsset과 GetSubclass 함수를 여러 쓰레드에서 동시에 호출할 일이나 가능성이 있나요? 그리고 에디터가 로딩중이라 GC시스템이등이 초기화되지 않아서 쓰레드가 safe하지 않을때는 쓰레드가 의도하지 않은 메모리에 접근할 확률이 있는지도 궁금합니다 (왜 safe하지 않은지가 궁금해요!)
OnExperienceFullLoadComplete() 이 함수가 모든 GameFeatureAction이 로딩이 완료될 때 호출이 되는 거라면 OnExperienceLoaded델리게이트가 브로드캐스팅을 할 때 AddComponent로 추가한 컴포넌트들이 초기화가 완료되었다는 것이 보장되는 시점일까요?
[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
안녕하세요! 아래 코드는 UPrimitiveComponent의 UpdatePhysicsVolume 함수인데, 컴포넌트의 owner인 액터를 가져와서 그대로 Cast<APhysicsVolume>을 했는데, 액터가 캐릭터일 수도 있을 텐데 이게 어떻게 가능한 것인지 모르겠습니다... 감사합니다 // haker: just get the owner Actor and compare Physics Volume's priority APhysicsVolume* V = Cast<APhysicsVolume>(OtherComponent->GetOwner()); if (V && V->Priority > BestPriority) { if (V->IsOverlapInVolume(*this)) { BestPriority = V->Priority; BestVolume = V; } }
안녕하세요 강사님, 강의에 없는 내용인데 강사님은 이 문제를 어떻게 생각하는지에 대해서 질문하려고 합니다. 현재 GTA 모작을 목적으로 프로젝트를 만들고 있고, 캐릭터를 구현해야하는 상황에서 언리얼 5.6에 메인 스트림으로 들어오게된 MetaHuman을 발견했습니다. MetaHuman이 임의로 캐릭터들의 외관을 커스터마이징해주는 툴 정도로 인식하고 있는데 시민들이나 많은 캐릭터가 존재하는 GTA 프로젝트에 적합하다는 생각을 하고 있습니다. MetaHuman을 내 프로젝트에 어떻게 도입할 수 있는지 확실하지 않는 상태에서 유튜브로 강의로 찾아보며 공부를 하고 있는데 아직 관련 정보가 부족하고, MetaHuman을 이용해서 게임을 만든 사례들이 없어서 불확실성에 심적으로 주저하고 있습니다. 이런 상황에서 2가지 질문을 여쭤봅니다. 1. GTA 프로젝트에서 메타휴먼을 적용시키는 것에 대한 장단점에 대한 견해가 궁금합니다. 2. GTA 프로젝트에 메타휴먼이 적합하다고 생각 하신다면 메타휴먼과 관련된 강의를 추가해줄 수 있을까요?
빌드를 잘하고 테스트를 하고 있는데 일단 저는 HLOD레이어를 두가지로만 해서 테스트 해봤는데 이런식으로 멀리 있는 메시들이 마테리얼이 날라간 체로 보이네요. 그리고 중간부분만 날라가는 현상이 있습니다. 이게 빌드 및 Hlod 적용이 된건가요? 그리고 왜 마테리얼이 날라가는 것처럼 보이는지 모르겠네요
안녕하세요! 강의 진도 자체는 이 강좌보다 좀 더 나간 상태인데, UPROPERTY가 현재 강의에서 설명하는 개념이라 여기에 질문을 남겨봅니다. 언리얼 5.1과 1강에서 설명하는 세팅을 다 완료한 비주얼 스튜디오 2022를 이용해 공부 중입니다. UPROPERTY()를 입력 후, 다음 라인에 변수를 선언하려 할 때마다 끝에 ;를 입력 시 갑자기 ;가 지워지거나 어떨 때는 변수 이름의 일부가 같이 지워지기도 합니다. 테스트를 해 보았을 때 GENERATED_BODY()와 같은 매크로 다음 라인에 변수를 선언해도 똑같은 증상이 있는 것으로 보입니다. 다른 라인에 ;를 입력 후 줄바꿈을 지우거나, 혹은 UPROPERTY를 나중에 입력하는 식으로 하면 결과적으론 제대로 입력되지만 영 불편하여 해결법을 찾아보고자 이리저리 찾아봤으나 마땅한 답이 없어서 질문을 드려봅니다.
16:44 코드를 토대로하여 클라이언트를 한명 추가했을 때, 서버쪽에는 서버 자신과 동적으로 추가된 클라이언트인 플레이어컨트롤러의 원본이 있고(둘다 authority), 클라이언트쪽에는 서버 자신이 참여한 형태인, 복제된 simulatedproxy 와 동적으로 추가된 클라이언트의 복사본 autonomousproxy 2개가 있는건가요? 만약 맞다면, 서버에 있는 각각의 serverrotationyaw 속성을 replication하여 클라이언트 각자 소유한 액터의 변경된 속성을 반영하는건가요?
IA_Move에서 Negate(부정)설정 중 XYZ 박스를 모두 체크하는 것은 특별한 이유가 있나요? (그렇게 하지 않아도 사용하지 않는 축의 영향을 받지 않기 때문에 그런 것으로 이해했습니다.) IA_Move 설정에서 후방 이동(S)과 마우스 Y축 부정의 개념이 살짝 혼동이 생겼습니다. (IA_Look에서 설명해주셨을 때 "엔진에서 Y 축의 양수는 아래 방향을 의미한다."는 말을 듣고 나니, IA_Move의 Y는 그럼 S키 입력에 부호를 바꾸는 것이 아니라(Negate) W키를 반전해야 하는 거 아닌가? 라는 생각이 들어서요.. W,S는 캐릭터를 기준으로 전방, 후방 값이기에 화면을 기준으로 한 Y축 방식과는 다르다고 해석하면 될까요?)
[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
안녕하세요! Activate() 이후 PrimaryComponentTick.SetTickFunctionEnable()이 호출되는데, 이후 GameWorld인지 Owner가 있는지 여부 등을 따져가며 RegisterAllComponentTickFunctions()를 호출할 때도 결국 SetupActorComponentTickFunction()을 통해 인자로 전달된 PrimaryComponentTick의 SetTickFunctionEnable()이 호출됩니다. 왜 이렇게 같은 과정이 굳이 두 번이나 이루어지는지 궁금합니다 물론 두 번째 단계에서는 등록 여부를 확인하여 걸러지지만 실행 조건을 살펴보아도 GameWorld가 아니라는 조건 때문에 두 번 실행될 가능성이 있는 것 같아 질문드립니다. 읽어주셔서 감사드립니다.
아직까지는 커넥션과 소유권에 대해서 잘 이해하지 못하고 있는 상태이며, 궁금한게 있습니다. 13:07 에서 'NetMulticast RPC는 커넥션을 소유하지 않아도 동작한다' 라는 내용이 있는데, 추가적인 정보를 얻어보고자 gpt에 물어보면 자꾸만 '클라이언트와의 커넥션은 필요하지만 소유권이 없어도 된다' 라고 말을 합니다. 그렇다면 gpt가 틀렸다고 보는게 맞을까요? 예를들어 gpt가 이 함수는 서버가 호출해야 하고, 해당 Actor가 클라이언트에 리플리케이션되어야 하며, 해당 클라이언트와 NetConnection이 살아 있어야 전파됩니다. 하지만 소유자(Owner)는 없어도 됩니다. 또는 Multicast RPC는 소유권과 무관하게, 그 Actor를 리플리케이션 중인 모든 커넥션에게 전송된다. 라고 이야기를 합니다. 여기서 gpt는 마치 커넥션이 필수인것처럼 이야기하길래, 현재 제가 뭘 놓치고 있는지 궁금하여 여쭤봅니다. 혹시, 강의의 13:07 에서 설명한 '커넥션' 이라는 개념이 'NetConnection 객체 자체' 가 아니라 '소유자 커넥션' 과 밀접한, 예를 들어 '커넥션을 소유하지 읺아도 된다' 라는 설명이 분수대 Actor의 Owner가 특정 클라이언트(PlayerController)가 아니어도 된다는 말로 해석되는 것인가요?
부록 공부 굳이 해야 할까요? 부록이 왜 있는건지 잘 이해가 안가요.. 똑같은 내용을 복습하는건가요? 만약에 한번만 공부한다고 하면 Haker님 영상을 참고하는게 좋을까요 아니면 부록 영상을 참고하는게 더 효율적일까요? 다 들으면 60시간이고 Haker님 강의, 부록강의 둘 중에 하나를 배우고 쭉 복습하는게 더 효율적이라는 생각이 들어서요