midas+son의 크리에이티브(creative) 이야기

4.12.5에서 4.15.1로 버전 마이그레이션...하면서 또 리팩토링도 하게 되는 중...

이제 거의 막바지


아래와 같이 외부 라이브러리 assimp 사용 하던 것을 적용하려는데

using UnrealBuildTool;

using System.IO;

using System;


public class SonSimulator : ModuleRules

{

public SonSimulator(TargetInfo Target)

    {

        PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" });


        PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });


        // Uncomment if you are using Slate UI

        // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });


        // Uncomment if you are using online features

        // PrivateDependencyModuleNames.Add("OnlineSubsystem");


        // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true

        var AssimpBase = Path.GetFullPath(Path.Combine(ModuleDirectory, "../../Plugins/ThirdParty/Assimp/"));

        PublicAdditionalLibraries.Add(AssimpBase + @"Lib/windows_x64/zlibstatic.lib");

        PublicAdditionalLibraries.Add(AssimpBase + @"Lib/windows_x64/assimp.lib");

        PublicIncludePaths.Add(AssimpBase + @"Include/");

        Definitions.Add(string.Format("WITH_ASSIMP_BINDING={0}", 1));

    }

}


아래와 같은 #include가 안됨

#include <assimp/Importer.hpp>

#include <assimp/scene.h>

#include <assimp/postprocess.h>

이럴땐...VS껐다가 다시 키면 됨...;;

앞으론 뻘짓하지 말고 라이브러리 추가허려면 에디터 껐다가 키자.

http://uniteseoul.com/2017/

유나이트 2017 서울 공식 사이트


언리얼과 마찬가지로 코엑스에서 개최 합니다.

정확한 트랙 스케쥴은 아직 안나왔지만 

미리 등록 가능하네요.


얼리버드는 아쉽게 오늘(3/28) 까지 입니다.

원래 가격은 10만 이고 얼리버드는 5만 입니다.

사전등록으로 5월 1일까지는 또 8만원 입니다.


2일 분량의 입장권이라 비싼 건 아닙니다.(학생이시면 더 쌈)

5월 16~17일 화, 수요일 이틀간 개최됩니다.


==================================

https://event.eventservice.co.kr/unite17/trainingday.asp

트레이닝 데이라고 5월 15일 월요일

초급레벨 유니티 수업과 

중급레벨 VR수업도 들을 수 있습니다.

4.12.5에서 4.15.1로 버전 마이그레이션...하면서 또 리팩토링도 하게 되는 중...


피직스 핸들을 사용하고 GrabComponent 함수로 다른 액터를 잡았었는데 

아래와 같은 Warning이 발생한다.

버전업이 되면서 함수가 분할 되었다.

이전엔 로테이션 부분은 true, false 였는데 함수 자체가 나뉘었으니 용도에 맞게 바꾸자.

Please use GrabComponentAtLocation or GrabComponentAtLocationWithRotation Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.


4.12.5에서 4.15.1로 마이그레이션 중..


ActorComponent를 상속받아 사용한 클래스의 생성자에서 

bWantsBeginPlay = true; 해주는 부분이 있었는데

아래와 같은 warning 이 발생한다.

bWantsBeginPlay was inconsistently enforced and is now unused. BeginPlay will now always be called for Actor Components. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.

내용인 즉슨 

"이제는 ActorComponent는 무조건 BeginPlay()함수를 호출하니 이 변수를 더 이상 안쓴다.

추후에는 삭제될 것이니 계속 유지 한다면 나중에는 컴파일이 되지 않을 것이다." 라는 내용이다.(정확한 번역은 아니고 의미에 맞게 좀 바꿔 해석)

4.12.5에서 4.15.1로 마이그레이션 중..


이전 버전의 프로젝트에서 다른 프로그램 exe파일을 실행해야할 경우가 생겨서

#include <Windows.h>

를 추가 했었는데

이로 인해 새 버전에서 Warning이 많이 뜨게 되었다.

어짜피 언리얼 외부 모듈은 싹 정리 하기로 했으니

이 #include부분과 관련 함수 내부를 주석처리 하였다.


언리얼 프로젝트에서는 외부 종속성을 없애고자 한다.


Warning

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\winnt.h(536): warning C4005: 'TEXT': macro redefinition

1>  c:\program files\epic games\ue_4.15\engine\source\runtime\core\public\HAL/Platform.h(782): note: see previous definition of 'TEXT'

1>  MySystem.generated.cpp

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\winnt.h(17005): warning C4668: '_APISET_RTLSUPPORT_VER' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>  CommonFunc.cpp

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\interlockedapi.h(73): warning C4668: '_APISET_INTERLOCKED_VER' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\processthreadsapi.h(1170): warning C4668: '_WIN32_WINNT_WINTHRESHOLD' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\winnt.h(536): warning C4005: 'TEXT': macro redefinition

1>  c:\program files\epic games\ue_4.15\engine\source\runtime\core\public\HAL/Platform.h(782): note: see previous definition of 'TEXT'

1>  MySystem.cpp

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\securitybaseapi.h(357): warning C4668: '_APISET_SECURITYBASE_VER' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\securitybaseapi.h(472): warning C4668: '_APISET_SECURITYBASE_VER' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\securitybaseapi.h(1302): warning C4668: '_APISET_SECURITYBASE_VER' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\winnt.h(17005): warning C4668: '_APISET_RTLSUPPORT_VER' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8618): warning C4668: 'NTDDI_WIN7SP1' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\interlockedapi.h(73): warning C4668: '_APISET_INTERLOCKED_VER' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\processthreadsapi.h(1170): warning C4668: '_WIN32_WINNT_WINTHRESHOLD' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>  [14/17] Link UE4Editor-MySimulator.lib

1>  MyProceduralMeshComponent.cpp

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\securitybaseapi.h(357): warning C4668: '_APISET_SECURITYBASE_VER' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\securitybaseapi.h(472): warning C4668: '_APISET_SECURITYBASE_VER' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\securitybaseapi.h(1302): warning C4668: '_APISET_SECURITYBASE_VER' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'

1>     Creating library C:\Users\son\Desktop\SonProject\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-MySimulator.lib and object C:\Users\son\Desktop\SonProject\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-MySimulator.exp

1>C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8618): warning C4668: 'NTDDI_WIN7SP1' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'


4.12.5에서 4.15.1 로 마이그레이션....

언리얼 자체적으로 버전 업을 시키면 에러가 퇑퇑퇑 나기 때문에

하나하나 수동으로 옮기면서 마이그레이션 하고 있습니다.


"Modules": [

{

"Name": "프로젝트명",

"Type": "Runtime",

"LoadingPhase": "Default",

"AdditionalDependencies": [

"Engine",

"ProceduralMeshComponent"

]

}

]


에디터에서 ProceduralMeshComponent를 상속받아 클래스를 

새로 만들면 자동으로 uproject에 추가가 되는데

수동 마이그레이션 한다고 이 부분에서 간혹 빠질 수 있으니 하나하나 확인해봅시다.

공부 관련은 아니지만 참가가 바로 공부다라는 생각으로 적습니다.


언리얼 서밋 2017 이 개최 됩니다.

장소는 서울 코엑스

일시는 2017년 4월 22일 토요일


관련 사이트

http://cafe.naver.com/unrealenginekr/14569

(언리얼 공식 카페)

http://www.unrealsummit.co.kr/

(언리얼 서밋 공식 사이트 - 결제)


일반 입장료 6만원으로 싼 편이지만

3월 28일 까지 얼리버드로 50퍼할인 3만원 입니다.

전 어제 이미 등록 했습니다^^

유니티를 먼저 접해본 개발자로서 

이 게시글은 진짜 진국이다.


유니티의 여러 방면에 대해 언리얼과 비교하면서

언리얼 C++이나 블루프린트로 코딩하는 방법까지 이미지로 잘 나와있다.

언리얼의 기초, 기본적인 것들에 대해 상세히 나와있어서

유니티를 안해본 사람이 봐도 도움이 꽤 될 것이라 생각된다.

'공부 > Unreal 4' 카테고리의 다른 글

마이그레이션 중.. uproject 내용 확인  (0) 2017.03.23
언리얼 서밋 2017 개최 소식  (0) 2017.03.23
언리얼 콜리전 프로필네임  (0) 2017.02.28
언리얼 코딩 표준  (0) 2017.02.13
유용한 사이트  (0) 2017.02.06

https://wiki.ucar.edu/display/dasg/Building+3rd+Party+Libraries+on+VS2015


assimp라고 3D오브젝트 포맷의 파일들을 Import하거나 Export하는 오픈소스가 있다.

이를 라이브러리화 시키는 방법이 위의 url 주소로 들어가면 게시되어 있다.

assimp 자체 파일은 구글링을 하거나 GitHub를 찾아보면 나온다.


이전에 미리 만들어 놓은게 있어서 그것을 쓰고 있지만

추후에 버전업이 되면 새로 만들어야 하니 기록용으로 글을 남겨 놓기로 한다.

기본적으로 제공되고 있는 콜리전 체크를 위한 상수값 

ENGINE_API const FName UCollisionProfile::NoCollision_ProfileName = FName(TEXT("NoCollision"));

ENGINE_API const FName UCollisionProfile::BlockAll_ProfileName = FName(TEXT("BlockAll"));

ENGINE_API const FName UCollisionProfile::PhysicsActor_ProfileName = FName(TEXT("PhysicsActor"));

ENGINE_API const FName UCollisionProfile::BlockAllDynamic_ProfileName = FName(TEXT("BlockAllDynamic"));

ENGINE_API const FName UCollisionProfile::Pawn_ProfileName = FName(TEXT("Pawn"));

ENGINE_API const FName UCollisionProfile::Vehicle_ProfileName = FName(TEXT("Vehicle"));

ENGINE_API const FName UCollisionProfile::DefaultProjectile_ProfileName = FName(TEXT("DefaultProjectile"));


사용 예)

mesh = CreateDefaultSubobject<USkeletalMeshComponent>(VehicleMeshComponentName);

mesh->SetCollisionProfileName(UCollisionProfile::Vehicle_ProfileName);


기본 제공 외에도 지정할 수 있다.

예)

mesh->SetCollisionProfileName(TEXT("ProcMesh"));

'공부 > Unreal 4' 카테고리의 다른 글

언리얼 서밋 2017 개최 소식  (0) 2017.03.23
유니티 개발자를 위한 언리얼 엔진 4(url_link)  (0) 2017.03.17
언리얼 코딩 표준  (0) 2017.02.13
유용한 사이트  (0) 2017.02.06
언리얼4 - hexString to 한글  (0) 2017.01.15