728x90

Adaptive Probe Volumes 이하 줄여서 APV라 하겠다.
유니티에서 제공하는 새로운 Light Probe 시스템이다.

장점으로는
- 멀티플랫폼 지원.
- 사용 방법이 쉽다.

출처 : Unity Korea Youtube

특히 사용방법이 쉬워졌다라는 점은
이전 Light Probe Groups의 경우 이하 LPG는 개별 Probe들을 그림자 영역이라던지, 밝은 영역이라던지 여러 요소를 고려해서 수동으로 잘 배치해줘야 효과를 잘 볼수 있는 많은 작업량과 시간이 필요로 하는 힘든점이 있었다.

하지만 APV에선 볼륨 기반 시스템으로 Probe의 볼륨 영역만 잘 배치해주면 나머지는 유니티가 알아서 맡게끔 배치해주는것이다. 특히 지오메트리 정보를 기반으로 밀도가 필요한부분 덜한부분 이러한 정보를 바탕으로 알아서 Probe를 자동으로 배치해주기 때문에 최적화된 배치를 알아서 해준다는것이다.

그리고 기존 LPG는 연산이 CPU영역에서 이루어진 반면 APV에선 GPU영역에서 이루어지기 때문에 연산도 훨씬 빠르다는 장점이 있다.

출처 : Unity Korea Youtube

그리고 APV에선 Per Pixel Lighting을 지원한다.

기존의 LPG에선 Per Object Lighting으로써 라이팅이 오브젝트에 일괄적으로 균일하게 적용되는 방식이였다.
그래서 균일하게 적용되는 부분이 오히려 위 사진의 왼쪽 트럭처럼 왼쪽 문만 하얗고 본체는 그림자가 져 버리는것처럼 보이는게 어색한 부분이 있다.

하지만 APV에선 픽셀별로 라이팅이 계산되서 위 사진의 오른쪽 트럭처럼 자연스럽게 적용되는 부분이 확연하게 보인다.
물론 픽셀당 연산이 효과는 확실히 좋지만 픽셀마다 계산해야되는 부분이 부담이 될수 있기 때문에. 그보다 좀 더 부담을 줄이고 적용할수 있도록 버텍스 정점을 기준으로 계산될수 있게 Per Vertex 옵션도 있다.

아직까지는 이 APV 기능의 개발과 최적화가 계속 진행중이라는 점에서 현재 개발이 상당히 진행된 프로젝트에는 적용하기 쉽지는 않을거 같고, 신규 개발과 같은곳에서 한번 적용해볼법 한것 같다.

728x90
Posted by 정망스
,
728x90

시네머신은 직접 프로그래밍을 하지 않더라도 인스펙터에 있는 속성들을 세팅만 해주면 피사체의 움직임 혹은 사용자의 컨트롤에 따른 카메라 움직임 처리를 쉽게 할수있도록 유니티에서 제공하는 패키지 이다.

현재 최신 정식배포가 된 버전은 시네머신2 인데. 시네머신2에서 아쉬운 부분은 인스펙터의 복잡한 속성들과 모르는 용어들도 많아서 처음 접하여 사용하는 느낌은 난감한 부분이 많다.

이러한 부분들을 좀 더 개선해서 업그레이드 되서 나온것이 시네머신3 이다.

다만 현재 시네머신3는 유니티 2023.2버전부터 사용이 가능하며 프리버전 즉 아직 베타버전 이라 문제점이 있을수도 있다라는 부분을 유의해야 할것 같다.

기본적으로 크게 시네머신의 구성은 시네머신 카메라, 시네머신 컴포넌트, 시네머신 익스텐션 으로 나뉜다.

우리는 메인 카메라가 있고 이 메인카메라를 컨트롤할수 있어야하는데 그 역할이 시네머신 카메라이다.

동시에 이 메인카메라가 피사체를 따라가거나 회전하거나 그러한 역동적인 추가적인 기능을 할수있도록 하는 역할이 시네머신 컴포넌트이다.

시네머신 컴포넌트를 이용해서 우리가 촬영하는 피사체를 다양한 기능을 통해 이쁘게 촬영할수 있지만 이러한 기능을 좀더 효율적이고 확실하게 제어할수 있도록 몇가지 자그만한 확장도구를 추가할수 있는데 이것이 시네머신 익스텐션이다.

컴포넌트는 예를들어 포지션이면 포지션 로테이션이면 로테이션 1대1로만 붙을수 있지만. 익스텐션은 한꺼번에 여러개를 붙일수 있다.

종류는 아래 링크에서 확인해볼수 있다.

https://docs.unity3d.com/Packages/com.unity.cinemachine@3.0/api/Unity.Cinemachine.CinemachineExtension.html

 

Class CinemachineExtension | Cinemachine | 3.0.1

Class CinemachineExtension Base class for a CinemachineCamera extension module. Hooks into the Cinemachine Pipeline. Use this to add extra processing to the vcam, modifying its generated state Inherited Members Object.FindObjectsByType (FindObjectsSortMode

docs.unity3d.com

시네머신3 에서 달라진점기존 시네머신에서는 돌리 트랙을 이용해서 카메라가 이 트랙을 따라 이동하면서 장면을 비춰 주기 위해서 제공되는 기능인데. 하지만 돌리 트랙에는 약간의 제한이 있다.

트랙의 곡률 이라던지 직각적인 움직이라던지 이런것이 안되고 내부적으로 자체 개선을 하여 트랙을 자연스럽게 만들어 주기 때문이다.

시네머신3 에서는 스플라인 패키지를 제공해서 좀 더 자연스럽게 트랙을 세팅할수 있도록 제공한다.

스플라인은 직선과 곡선 데이터를 쉽게 만들수 있도록 제공하는 패키지이다.

확실히 시네머신3까지 와서 2보다 간결해졋고 더 쉽게 사용할수 있는 기능이 많이 제공되는듯 하다.

다만 아직 베타버전이라는 점에 유의해서 사용해야 할것 같다.

 

728x90
Posted by 정망스
,
728x90

언리얼에서 TFieldIterator을 사용하여 리플렉션으로 속성과 함수들의 검색이 가능하다.

멤버 변수에는 UPROPERTY, 멤버 함수에는 UFUNCTION 매크로를 지정해주어야 가능하다.

 

TFieldIterator<UProperty>타입을 사용하면 속성을 가져올수 있다.

for (TFieldIterator<UProperty> It(ClassInfo1); It; ++It)
{
    AB_LOG(Warning, TEXT("Field : %s, Type : %s"), *It->GetName(), *It->GetClass()->GetName());
    UStrProperty* StrProp = FindField<UStrProperty>(ClassInfo1, *It->GetName());
    if (StrProp)
    {
       AB_LOG(Warning, TEXT("Value = %s"), *StrProp->GetPropertyValue_InContainer(WebConnection));
    }
 }

 

TFieldIterator< UFunction >타입을 사용하면 함수을 가져올수 있다.

for ( TFieldIterator<UFunction> FunctionIterator( MyObjectsClass ); FunctionIterator; ++FunctionIterator )
{
    UFunction* Func = *FunctionIterator;
    
    UE_LOG( LogTemp, Log, TEXT( "%s" ), *FunctionIterator->GetName() ); 
}

 

함수의 경우 NativeFunctionLookupTable 배열을 사용해 현재 클래스에 어떤 함수가 있는지 알수 있다.

함수의 이름을 사용하여 FindFunctionByName함수를 사용해 가져올수 있다.

for (const auto& Entry : ClassInfo1->NativeFunctionLookupTable)
{
    AB_LOG(Warning, TEXT("Function=%s"), *Entry.Name.ToString());
 
    UFunction* Func1 = ClassInfo1->FindFunctionByName(Entry.Name);
    if (Func1->ParmsSize == 0)
    {
        WebConnection->ProcessEvent(Func1, NULL);
    }
}

 

728x90
Posted by 정망스
,
728x90

-게임 인스턴스 (컨텐츠에 관여하는 용도로 사용하기보다, 어플리케이션의 데이터를 관리하는 용도로 많이 사용)

-에셋 매니저

-게임 플레이 관련 액터 (게임모드, 게임 스테이트)

-프로젝트에 싱글톤으로 등록한 언리얼 오브젝트

728x90
Posted by 정망스
,

포트폴리오 동영상

기타 2024. 2. 13. 11:30
728x90

 

[Unreal] 공부용 프로토게임

 

[Unity] 크루세이더 퀘스트

 

[Unity] 허슬(가칭)

 

[Unity] WarChess

 

[Unity] OH MY CRYSTAL

 

[Unreal] 공부용 프로토게임

 

[Cocos2d] PushTrash

 

[Cocos2d] NumberPush

 

[Unity] Number Ping-Pong

 

[Android] KSU
728x90
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침