LoginSignup
4
3

More than 1 year has passed since last update.

[UE4]エディタのビューポートにおけるカメラの画角情報を取得する方法

Last updated at Posted at 2022-01-13

image.png

エディタのビューポートにおける現在の画角情報(Field of View(H))は

GCurrentLevelEditingViewportClient->FOVAngle;

を使うことで取得することができます。なので、

MyBlueprintFunctionLibrary.h
#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"

UCLASS()
class MYPROJECT_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
    GENERATED_BODY()

    UFUNCTION(BlueprintCallable)
    static float GetLevelViewFov();
};
MyBlueprintFunctionLibrary.cpp
#include "MyBlueprintFunctionLibrary.h"
#include "LevelEditorViewport.h"

float UMyBlueprintFunctionLibrary::GetLevelViewFov()
{
    return GCurrentLevelEditingViewportClient->FOVAngle;
}
MyProject.Build.cs
using UnrealBuildTool;

public class MyProject: ModuleRules
{
    public MyProject(ReadOnlyTargetRules Target) : base(Target)
    {
        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

        // UnrealEdを追加
        PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "UnrealEd" });
    }
}

という感じでプロジェクトのC++コードを書いて、
image.png
ノードを配置すると、
Animation.gif
現在の画角情報を取得できます。EditorUtilityWidgetで実装すると、レベルを実行しなくても取得できるので便利です。

今回使用したGCurrentLevelEditingViewportClientは他にもプロパティが沢山あったり、UEditorLevelLibraryにもカメラ情報取得用の関数が色々用意されているのでご興味のある方はぜひ一度見てみてください!
【UE4】【C++】メモ:EditorのViewportの設定をBlueprintに公開してみる【★★★★】

最後に、今回のコードはエディタ専用機能なので、実際に組み込む際はエディタモジュールで実装することをおすすめします。
おしまい

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3