안기훈_자료_보존용_계정 MYPI

안기훈_자료_보존용_계정
접속 : 2875   Lv. 49

Category

Profile

Counter

  • 오늘 : 234 명
  • 전체 : 242946 명
  • Mypi Ver. 0.3.1 β
[Unreal 게시판] clipping을 적용하는 방법 (0) 2014/05/14 PM 10:07
Question>

UDK로 UI를 만들고 있음.

큰 사각형 안에 작은 사각형 영역이 있고,
그 작은 사각형 안에서 다양한 image를 출력되게 하려고 함.
( 한마디로 clipping을 적용해서, image를 그리려고 함.^^;;;;;;; )

어떻게 접근하면 되겠는가?

-------------------------------------------------------------

Answer>

관련 내용은 cliping 관련 함수를 이용하면 간단히 해결됩니다.^^

큰 사각형의 좌측 상단 좌표를 (0, 0), 크기를 (100, 100)이라고 가정하고,
작은 사각형의 좌측 상단 좌표를 (10, 10), 크기를 (80, 80)이라고 가정했을 때,
작은 사각형만 그리기 위해서, 아래와 같이 clipping 함수를 호출합니다.

vector2d vtResvOrg, vtResvClip;

vtResvOrg.x = canvas.OrgX;
vtResvOrg.y = canvas.OrgY;
vtResvClip.x = canvas.ClipX;
vtResvClip.y = canvas.ClipY;

canvas.SetOrigin( 10.0f, 10.0f );
canvas.SetClip( 80.0f, 80.0f );

이후 그리는 pixel들은 작은 사각형의 영역 안에서만 그려지게 됩니다.^^

다 그리신 다음에 원래 상태(clipping이 적용되지 않는 상태)로 복귀하려면,
아래와 같이 clipping 함수를 호출합니다.

canvas.SetOrigin( vtResvOrg.x, vtResvOrg.y );
canvas.SetClip( vtResvClip.x, vtResvClip.y );

대부분의 경우,
vtResvClip.x와 vtResvClip.y에는 화면의 전체 해상도 크기가 들어 갑니다.
(예> iPhone 4S에서 clipping을 사용한다면, 해상도가 960 * 640 이라서리..^^;;;
vtResvClip는 ( 960.0f, 640.0f )가 될 가능성이 높습니다.)

하지만,
clipping안에서 또 cliping을 사용하는
특별한 상황(clipping이 중첩되는 상황)도 있을 수 있기 때문에..@_@;;;;
본문의 예처럼 별도의 변수로 보관했다가, 그리는 작업 후에 복원하는 게 안전합니다.^^


P.S.
unreal engine 3, 4의 경우, class UCanvas에
상기 내용과 관련된 변수와 함수가 있습니다.
이를 이용하시면, clipping을 구현하실 수 있습니다.

P.S.2
unreal engine 3의 경우, 초기 build는 clipping을 지원하지 않습니다.
unreal engine 4의 경우, 4.1.0 기준으로 아직 clipping을 지원하지 않는 듯합니다.^^;;;

P.S.3
clipping 기능이 급하시다면,
사각형의 겹침 영역을 계산하는 함수(intersection을 구하는 함수)를
님이 만드셔서 구현하셔야 할 듯 싶네요.
( 제가 그렇게 해결해서, 이런 얘기를 하는 건 절대로 아닙니다.^^;;;;;;;; )







Tag:
안기훈, Kee Hoon Ahn, Unreal, UDK, iPhone, iPad, app, 앱, iOS

신고

 
X