아웃라인의 일정한 두께 조절..

2D, 3D, 다각형, 픽셀 등 게임의 그래픽 프로그래밍에 관한 포럼입니다.

Moderator: 류광

Locked
비회원

아웃라인의 일정한 두께 조절..

Post by 비회원 »

안녕하세요
현재 툰쉐이딩은 잘되고 아웃라인 렌더링도 잘 되긴 합니다.
그런데 문제는 백페이스를 노멀방향으로 확대해서 그려주고는 있지만
거리에 따라 두께가 달려져서 고민중입니다.

그 아웃 라인의 두께를 일정하게 고정시키는 방법이 없을까요?

저 아래에서도 이 문제에 관한 쓰레드가 있긴 하지만 결론이 나지 않아
다시 한번 쓰레드를 열었습니다 ^^

좋은 방법있으면 알려주세여 ㅠ.ㅠ.....
궁금이
Posts: 237
Joined: 2005-01-19 11:06
Location: ProjectS

Post by 궁금이 »

저는 캐릭터와 카메라의 거리 값을 얻어서 일정하게 나오도록 매 프레임 계산해주었는데.. -_-;
비회원

Post by 비회원 »

궁금이 wrote:저는 캐릭터와 카메라의 거리 값을 얻어서 일정하게 나오도록 매 프레임 계산해주었는데.. -_-;
스케일 팩터를 카메라하고 케릭터의 거리 값으로 하셨다구여?
훔..

간단한 예제를 훔쳐 볼 수 있을까여 ㅡㅡ;
궁금이
Posts: 237
Joined: 2005-01-19 11:06
Location: ProjectS

Post by 궁금이 »

저번 프로젝트에서 했던건데..

카메라 기본값과 자기캐릭터를 대상으로 해서 가장 이쁜(-_-;;)스케일 기본값을 얻은 후에..
나머지 캐릭터는 거리에 따라서 스케일값을 계산했습니다..
머 그냥 생각해봐도 그리 어렵지는 않았는데..

그리고 일정 거리 이상 멀어지면.. 그냥 아웃라인 안 그렸고..
일정 거리 이하 일때도 고정값으로 예외처리하는 식으로 했습니다..

쓰고보니.. 노가다로 했네.. -_-;
전외솔
Posts: 518
Joined: 2002-07-03 01:24

1픽셀 굵기로 하고싶다면..

Post by 전외솔 »

비회원 wrote:
궁금이 wrote:저는 캐릭터와 카메라의 거리 값을 얻어서 일정하게 나오도록 매 프레임 계산해주었는데.. -_-;
스케일 팩터를 카메라하고 케릭터의 거리 값으로 하셨다구여?
훔..

간단한 예제를 훔쳐 볼 수 있을까여 ㅡㅡ;

폴리곤 오프셋 = thickness x dist x fovx / width

thickness : 픽셀단위의 외곽선 두께 (pixel 단위)
dist : 카메라와 오브젝트의 거리 (사용하는 좌표단위)
width : 화면 가로 해상도 (pixel 단위)
fovx : x 축 방향으로의 카메라 절두체 각도 (radian)

외곽선 두께가 일정하다면 width, fovx, thickness는 상수일테니, 변할 수 있는건 거리밖에 없습니다.
비회원

참고가 되셨으면 합니다.

Post by 비회원 »

카메라 공간에 위치 시킨다음 팽창시키는 방법입니다.


http://dpfvm.byus.net/blog/?no=39
비회원

Post by 비회원 »

답변주신 궁금이님, pinewood님 비회원(?) 님 감사 드립니다 ^^
pinewood 님이 안내해 주신 방법대로 했더니 원하는 결과물이 나왔습니다 ^^

그럼 좋은 하루 되세요.. ^^
conaman
Posts: 313
Joined: 2002-07-27 12:01
Location: (주)게임빌
Contact:

..

Post by conaman »

같은 고민을 하다가 아티클을 하나 작성했습니다.

참고하십시오.

http://blog.naver.com/conaman/20054742163
심 형근
Posts: 526
Joined: 2002-08-19 23:30

공식에 대한 질문입니다.

Post by 심 형근 »

zDistance * tan( screenThickness * fovH / scrHeight )
[출처] 스크린 좌표계의 1픽셀을 3D좌표계의 크기로 맵핑하기|작성자 백승지
공식을 계속해서 보다가 간신희 이해한 부분은 다음과 같은데, 제가 제대로 이해하고 있는지
궁금합니다.

1. fovH / scrHeight = 1 픽셀당 할당되는 라디안 각도
2. screenTickness = 몇픽셀 움직일것인지 원하는 값.
3. tan ( 각도 ) = 세로 / 가로 의 절대 값 비율을 알려줌.
(View Frustum 을 눕혀서 볼때의 Z 가 가로가 됨).
4. zDistance(가로) * 세로/가로 = 대략 가로는 사라짐.
5. 세로만 남음.. 이 값이 바로 해당 픽셀을 이동시키기 위해서 3D 뷰공간에서 노말만큼 미는값.

수학실력이 많이 부족하여 제가 제대로 이해하고 있는지 아직 더 생각을 해보고 있는데.
대략 맞게 이해하고 있는지 확인해주셨으면 합니다.
conaman
Posts: 313
Joined: 2002-07-27 12:01
Location: (주)게임빌
Contact:

Re: 공식에 대한 질문입니다.

Post by conaman »

심 형근 wrote:
zDistance * tan( screenThickness * fovH / scrHeight )
[출처] 스크린 좌표계의 1픽셀을 3D좌표계의 크기로 맵핑하기|작성자 백승지
공식을 계속해서 보다가 간신희 이해한 부분은 다음과 같은데, 제가 제대로 이해하고 있는지
궁금합니다.

1. fovH / scrHeight = 1 픽셀당 할당되는 라디안 각도
2. screenTickness = 몇픽셀 움직일것인지 원하는 값.
3. tan ( 각도 ) = 세로 / 가로 의 절대 값 비율을 알려줌.
(View Frustum 을 눕혀서 볼때의 Z 가 가로가 됨).
4. zDistance(가로) * 세로/가로 = 대략 가로는 사라짐.
5. 세로만 남음.. 이 값이 바로 해당 픽셀을 이동시키기 위해서 3D 뷰공간에서 노말만큼 미는값.

수학실력이 많이 부족하여 제가 제대로 이해하고 있는지 아직 더 생각을 해보고 있는데.
대략 맞게 이해하고 있는지 확인해주셨으면 합니다.
tan(각도) = 세로 / 가로

이 부분에서 가로는 결론적으로 1이 됩니다. 따라서 1을 갈 때에 세로로 얼마나 가게 되느냐가 결정되죠..
결국 z축으로 1을 갈 때에 tan(각도)만큼 커지게 되는 것이죠..

1 : tan값 = zDistance : 결과값

따라서 원하는 zDistance에서의 확대크기는 zDistance * tan(각도)가 되는 겁니다.

제가 질문을 제대로 이해하고 답변했는지 모르겠네요~^^
conaman
Posts: 313
Joined: 2002-07-27 12:01
Location: (주)게임빌
Contact:

..

Post by conaman »

아무래도 제가 작성한 공식은 정확한 공식이 아니라 평균 1픽셀 크기를 만드는 공식인 것 같네요~~~
더 많은 생각을 해야 할 것 같습니다.
Locked