[언리얼 엔진] 언리얼 에디터 기즈모 (Gizmo)

    기즈모란?

     에디터에서 레벨에 배치된 액터를 선택하면 선택한 액터 중심에 기즈모(Gizmo)가 출력된다. 해당 기즈모를 통해 위치, 크기, 회전 등을 조절할 수 있다. 

    엔진 코드

     문득 어떻게 기즈모의 코드가 궁금하여 검색을 해보았는데 Gizmo를 검색어로 아무리 찾아보아도 찾을 수 없었다. GizmoComponent가 있었으나 해당 코드는 아니였다.

     

     결론부터 말하자면 레벨 에디터의 선택 오브젝트에 대한 기즈모 코드는 "UnrealWidget.h" 파일의 FWidget 클래스로 구현되어 있었다. 왜 클래스 명이 FWidget인지는 모르겠지만 한동안 찾아 헤매었는데 까먹지 않기 위해 기록해 놓자.

    렌더 관련

     레벨 에디터에서 기즈모가 렌더되는 코드부분이 궁금하여 찾아보았다. "UnrealWidgetRender.cpp"에 구현된 FWidget::Render 함수에서 현재 설정된 WidgetMode를 확인하여 각각의 렌더 함수가 호출된다.

    //UnrealWidgetRender.cpp
    //FWidget::Render
    
        switch( ViewportClient->GetWidgetMode() )
        {
            case WM_Translate:
                Render_Translate(View, PDI, ViewportClient, WidgetLocation, bDrawWidget);
                break;
    
            case WM_Rotate:
                Render_Rotate(View, PDI, ViewportClient, WidgetLocation, bDrawWidget);
                break;
    
            case WM_Scale:
                Render_Scale(View, PDI, ViewportClient, WidgetLocation, bDrawWidget);
                break;
    
            case WM_TranslateRotateZ:
                Render_TranslateRotateZ(View, PDI, ViewportClient, WidgetLocation, bDrawWidget);
                break;
    
            case WM_2D:
                Render_2D(View, PDI, ViewportClient, WidgetLocation, bDrawWidget);
                break;
    
            default:
                break;
        }

    마치며

     레벨 에디터의 선택 액터 기즈모 동작에 대한 엔진 코드를 확인하고자 한다면 "UnrealWidget.h" 의 FWidget 클래스를 확인해보자

    반응형

    댓글

    Designed by JB FACTORY