Pharos University ME 253 Fluid Mechanics II - ppt video online download

Pharos University ME 253 Fluid Mechanics II - ppt video online download : External External Flows Bodies in motion, experience fluid forces and moments. Examples include: aircraft, automobiles, buildings, ships, submarines, turbo machines. Fuel economy, speed, acceleration, stability, and control are related to the forces and moments. Airplane in level steady flight: drag = thrust & lift = weight.

UE5, 생성자를 이용한 Mesh 만들기, ue5 Live Coding 컴파일 위치, Programming Quick Start (c++), Tutorial

 

Unreal Engine (UE5)를 이용하여, Actor에 대한 Mesh를 만들어보고, Blueprint로 구현할 수 있는 함수들을 만드는 과정을 배워보겠습니다. 처음에 너무 삽질을 많이 했습니다. 이러한 부분들을 해결해드리고자 해당 포스팅을 작성하였습니다. 

또한, UE5를 시작할 때, 컴파일 하는 위치도 잘 모르겠고 정보도 너무 없어서 천천히 UE5 문서를 보면서 따라 해보면서 같이 성장해보시죠.

또한, Unreal Engine은 코딩을 못하더라도, Blueprint를 이용하여 게임을 만들 수가 있습니다. 하지만, 더 많은 기능은 c++코딩을 통해 구현해서 넣어줄 수 있습니다. 

C++ 코딩이 Unreal에서 보여지기 위해서는 몇 가지 Specifier들을 알아야 합니다. 대표적으로

UPROPERTY, UFUNCTION 매크로가 있습니다. 어느 위치에 넣어 줄 것인지, 어느 부분에서 수정이 가능한 영역인지를 포함하고 있습니다. 나중에 사용할 때, 하나씩 알아보겠습니다.

사전작업

안전한 코딩을 위해서 c++ Visual Studio에서 C++를 사용한 게임 개발을 설치해주셔야 합니다. 


다음으론 개별 구성요소에서 .NET Framework를 설치해주시면, 안전한 환경에서 작업을 수행할 수 있습니다.

저는.. 초기에 UE5에서 컴파일 자체가 안되서 문제가 있었습니다..


실습

UE5 실습 문서를 따라하는 과정입니다.

먼저 UE5를 Game에서 Blank C++을 선택해서 Project 하나 만들어보겠습니다.



먼저 시작하면, 보이는 창들입니다. 우리가 중점적으로 알아두어야할 것은 Compile 아이콘 입니다. 이 부분이 UE4와 달라서 찾는데 한참 걸렸어요.. 단축키로는 ctrl + alt + f11! 컴파일을 해야지 cpp에서 작업한 것이 UE 화면에 보입니다. (Visualstudio에서 빌드 하지 말고 UE 화면에서 바로바로 하면됩니다.)


컨텐츠 탐색창(Contents Drawer)를 열고 C++ class를 추가해주도록 합시다.

그러면 부모 클래스로 어떤걸 선택하는지 물어보는데, 대표적으로는, pawn, actor, Character들이 있습니다. Pawn은 움직일 수 있는 물체를 말하고, Actor는 기능을 가진 물체들입니다. Actor가 제일 만만하니 Actor를 클릭해서 만들어 주도록 하겠습니다.


만들면 자동으로 Visual Studio가 켜지면서 Cpp 파일과 header 파일을 같이 보여줍니다. 
아래와 같지 않을 경우 추가 옵션들을 다운 받고 다시 시도해보시길 바랍니다.


UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* VisualMesh;

이제 Header 파일에 아래 코드를 추가해주도록 합시다. 이는 해당 Actor의 Mesh Component를 멤버변수로 선언하는 것입니다. 

UPROPERTY (VisibleAnywhere)는 어디서 나타내는 Specifier입니다. 

UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* VisualMesh; //MeshComponent


VisualMesh는 생성자에서 Set을 해주어야 하는데, 다른 곳에서 하면은 팅김현상이 발견됩니다. 생성자 부분의 코드를 보면 과정은 다음과 같습니다.

1. Mesh라는 이름을 Asset을 만듭니다.
2. Object로 쓸 Mesh를 이미 주어진 Asset에서 찾습니다.
3. Mesh를 성공적으로 찾았다면, 해당 Mesh의 Object를 VisualMesh로 Set해줍니다.
4. Set한 mesh의 위치를 정해줍니다. (로딩시)
VisualMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
VisualMesh->SetupAttachment(RootComponent);

static ConstructorHelpers::FObjectFinder<UStaticMesh> CubeVisualAsset(TEXT("/Game/StarterContent/Shapes/Shape_Cube.Shape_Cube"));

if (CubeVisualAsset.Succeeded())
{
    VisualMesh->SetStaticMesh(CubeVisualAsset.Object);
    VisualMesh->SetRelativeLocation(FVector(0.0f, 0.0f, 0.0f));
}



이제 이 Mesh가 Runtime 동안 떠 있도록하는 기능을 구현하는 부분으 Tick에 구현해줍니다.
Tick은 Runtime에서 Frame이 바뀌는 동안 어떠한 액션을 취할 것 인지를 정해줍니다.

코드를 보면, 현재 frame에 존재하는 위치 정보와 각정보를 가져옵니다. 
다음으로는 현재 위치 및 각 정보를 조금 변경한 뒤, Set을 통해 UE object에 반영합니다.


FVector NewLocation = GetActorLocation();
FRotator NewRotation = GetActorRotation();
float RunningTime = GetGameTimeSinceCreation();
float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
NewLocation.Z += DeltaHeight * 20.0f;       //Scale our height by a factor of 20
float DeltaRotation = DeltaTime * 20.0f;    //Rotate by 20 degrees per second
NewRotation.Yaw += DeltaRotation;
SetActorLocationAndRotation(NewLocation, NewRotation);
이제 UE와 C++ 코드를 연동시키는 작업만 남았습니다. 헤더파일과 소스파일을 저장하고 초기 화면에 보여주었던 우측아래 컴파일 버튼을 클릭만 해주시면됩니다. 



잘 성공하면 초록색으로, 성공하지 못하면 빨간색으로 나타납니다. 성공했을 경우 아래와 같이 Cube 모양으로 Class가 생성된 것 을 볼 수 있습니다.








댓글

이 블로그의 인기 게시물

[Introduction to Topology] 위상수학 Chapter1 집합 이론

UE5, 위젯 간 파라미터 패싱 하는법! ( parmeter Passing widget to widget) How to Cast !), Widget Blueprint and MenuAnchor