블로그 이미지
˙Jisoo

카테고리

분류 전체보기 (98)
Programming (35)
Game Project (23)
Almighty Engine (8)
Daily Life (19)
Photo Shots (11)
Total22,054
Today42
Yesterday77


이제 귀찮게 매 오브젝트마다 수정 할 필요 없이 오브젝트매니저에서 오브젝트를 추가하는 것 만으로 모두에게 쉐도우맵이 적용되도록 하였습니다.
셀프쉐도우도 잘 들어가고 있네요~
만들어놓은지는 좀 되었는데.. 애플 발표회 보면서 심심해서 영상 캡쳐하였습니다;;
발표한게 겨우 iPad 라니.. 좀 실망이네요 ㅋ
잠시후에는 축구를 봐야하고.. 점심때는 스키장으로 출발하여야 하는데 밤을 꼴딱새서 난감하군요.. 보드는 안타고 잠만 자게되는건 아닐런지..
저작자 표시 비영리 동일 조건 변경 허락

'Programming > DirectX' 카테고리의 다른 글

GetDeclaration를 이용하여 FVF사이즈 구하기  (0) 2010/04/16
Shadow Map Test  (0) 2010/01/28
충돌처리 과부하 테스트  (0) 2010/01/26
기본적인 충돌처리 구현  (0) 2010/01/21
Shadow Map  (0) 2010/01/16
애니메이션 블렌딩  (0) 2010/01/14
Posted by ˙Jisoo

댓글을 달아 주세요

설레임..

Photo Shots / 2010/01/27 17:44
Canon | Canon EOS 500D | 1/400sec | F/4.0 | 28.0mm | ISO-100


Canon | Canon EOS 500D | 1/320sec | F/4.0 | 28.0mm | ISO-100


드디어 내일 스키장으로 떠납니다.
사진은 작년 12월 말에 대학교 친구들과 비발디파크에 갔을때 찍은 사진입니다.
이번에는 고등학교 동창 친구들과 함께 스타힐리조트(천마산스키장)로 무려 2박3일로 가게되었네요 ㅎㅎ;
친구들과 스키장간게 딱 두번인데 초보끼리만 갔던지라 항상 초보자슬로프에서 놀았습니다.....
마지막으로 비발디파크 갔을때 리프트권 시간 다 되어갈때쯤 슬슬 익숙해져서 아쉬웠는데 2박3일로 가게되어 너무 좋네요 ~_~
이번에는 꼭 중급자슬로프를 정ㅋ벅ㅋ 하고싶습니다 ㅋ_ㅋ
저작자 표시 비영리 동일 조건 변경 허락

'Photo Shots' 카테고리의 다른 글

2월12일 베어스타운 백야 현장 사진~  (0) 2010/02/13
며칠간의 스냅샷  (0) 2010/02/03
설레임..  (2) 2010/01/27
눈 Stop!  (2) 2010/01/06
관곡지 번외편  (2) 2009/07/11
관곡지 사진연습 - PART 2 -  (1) 2009/07/11
Posted by ˙Jisoo

댓글을 달아 주세요

  1. 2010/01/27 18:52 온새미  댓글주소  수정/삭제  댓글쓰기

    잘다녀와 ㅋㅋ



게임에 등장할 오브젝트 관리 클래스가 어느정도 완성된 기념으로 충돌처리 과부하 테스트를 해 보았습니다.
그냥 간단히 슬롯머신의 충돌경계면을 박스로 하지 않고 슬롯머신에 있는 Face단위로 경계를 생성하고 슬롯머신 갯수를 늘려가며 테스트를 진행했습니다.
슬롯머신 110~115개 정도 까지는 cpu점유율 2~5% 정도를 유지하며 60프레임을 유지해주네요.
그리고 120개가 넘어서면서 부터 점유율이 조금씩 올라가기 시작하며 50프레임대로 떨어집니다.
200개 정도가 되니 40프레임대로 떨어지기 시작했습니다.

게임 플레이상 사용할 수 있는 허용갯수는 110~115개 라는 것 인데 슬롯머신 한개에 782개의 Face가 있으니 충돌처리 패스를 한번 거칠때마다 86020 ~ 89930 번의 연산을 진행합니다.
60프레임이 유지된다는 것은 초당 60번의 패스가 진행된다는 것이니 1초동안의 연산량은 5161200 ~ 5395800 회 인 셈이지요.
수치로 보니 대단하네요 CPU의 처리 능력을 간과했나봅니다..
아직 충돌처리 부분을 최적화하기 전인데 최적화가 되고나서의 성능이 기대되네요...
간단히 경계면보다 큰 경계구를 만들어줘서 경계구 안에 있을때만 충돌처리를 진행해도 엄청난 최적화가 이루어질 것 같습니다.
저작자 표시 비영리 동일 조건 변경 허락

'Programming > DirectX' 카테고리의 다른 글

GetDeclaration를 이용하여 FVF사이즈 구하기  (0) 2010/04/16
Shadow Map Test  (0) 2010/01/28
충돌처리 과부하 테스트  (0) 2010/01/26
기본적인 충돌처리 구현  (0) 2010/01/21
Shadow Map  (0) 2010/01/16
애니메이션 블렌딩  (0) 2010/01/14
Posted by ˙Jisoo

댓글을 달아 주세요



이번에 예약판매애 들어간 Battlefield : Bad Company 2 의 싱글플레이 영상입니다.
처음 본 소감은 그래픽이 좋다 보다는 비주얼이 좋다고 느껴집니다. 사실상 요즘 나오는 게임들의 그래픽 수준은 이미 대단한 수준이고 제한된 자원 안에서 어느정도 활용하느냐가 문제겠지요.
배드컴퍼니2의 경우 이질감없이 원경표현을 잘 해준 것 같습니다.
AI의 목소리, 총소리가 주변환경/거리에따라 자연스럽게 어우러지는것들로 봐서 사운드에도 많은 신경을 쓴 것 같네요.
그리고 스코프로 멀리있는 물체를 확대해서 볼때 발견한 것인데 ( 00 : 32 부분 ) 카메라와의 거리에 따라서 쉐도우맵의 크기를 다르게 사용하는듯 하네요.
저번에 쉐도우맵 구현하면서 큰 맵에서는 쉐도우맵의 해상도를 크게 해줘도 깍두기가 생기는 문제가 있었는데 그런걸 보완하기 위해
카메라에서 가까운거리는 쉐도우맵의 해상도를 크게 해줘서 깍두기가 보이지 않게 해주고 먼거리에는 쉐도우맵 해상도를 줄여서 전체적인 쉐도우맵 해상도를 아낀 것 같습니다.
어디선가 관련논문을 본 것 같은데 다시 찾아봐야겠네요.
여튼 이런 놀라운 게임들을 보면서 동기부여도 되지만 한편으로는 이렇게 대단한 게임들이 만들어지는 와중에 기초를 배우는 입장에서 격차가 너무 느껴지기도 하네요... 뭐 열심히 하면 언젠간 따라잡을 수 있겠지요 @_@
저작자 표시 비영리 동일 조건 변경 허락
Posted by ˙Jisoo

댓글을 달아 주세요

Canon | Canon EOS 500D | 1/30sec | F/4.0 | 27.0mm | ISO-400

추운날씨에 도착한 프린터입니다.
잉크가 온도에 예민해서 보통 추운날은 안보낸다더니 그냥 묵묵히 보내네요... 뭐 배송은 빨라서 좋았습니다..ㅎㅎ




Canon | Canon EOS 500D | 1/24sec | F/4.0 | 25.0mm | ISO-250

박스 개봉샷입니다. 언제나 그렇듯 프린터,모니터같은 제품은 박스 개봉샷은 그닥 새로운게 없습니다..




Canon | Canon EOS 500D | 1/30sec | F/4.0 | 25.0mm | ISO-500

우리 판매자분께서 공간활용을 제대로 해주셨네요..
5색 잉크 * 2 + 헤드세정액 입니다.
캐논잉크는 CMYK 인데, K가 BK,PGBK 두개로 나뉘어져서 5색을 사용합니다. 하나는 사진인쇄용 블랙, 또 하나는 일반 문서용 블랙.
뭐가 뭔지는 잘 모르겠네요..ㅎㅎ




Canon | Canon EOS 500D | 1/24sec | F/4.0 | 25.0mm | ISO-640

무한리필킷 입니다. 보통 프린터+무한잉크 구성으로 구매하면 정품잉크 카트리지는 빼고 요놈을 넣어 보내줍니다.
정품잉크는 번들로 따로 판매하면 더 이익이 생기니까요~
어차피 무한잉크/리필킷을 쓰시는분들은 정품 카트리지가 필요없지만 여러가지 이유에서 아직 정품 카트리지를 고집하는분이 많지요..




Canon | Canon EOS 500D | 1/30sec | F/4.0 | 25.0mm | ISO-640

일단 책상위에 올려놓고 대충 사이즈를....
생각보다 좀 큼직허네요....;;




Canon | Canon EOS 500D | 1/4sec | F/5.6 | 55.0mm | ISO-1600

요건 로고 찍고 색감을 조금 바꾼사진입니다. 픽스마 로고가 홀로그램처럼 되어있어 이쁘네요
실제 제품 색은 절대로 블루블랙이 아닙니다! 오해마시길..





Canon | Canon EOS 500D | 1/3sec | F/5.6 | 48.0mm | ISO-1600

버튼 부분은 투박하게 생겼네요.  다행히 전체적인 디자인을 반감시킬 정도는 아닙니다..




Canon | Canon EOS 500D | 1/3sec | F/5.6 | 55.0mm | ISO-1600

트레이를 열었을때 나오는 캐논 로고




Canon | Canon EOS 500D | 1/24sec | F/3.5 | 18.0mm | ISO-800

전체적인 모습
다시보니 투박해보이면서도 엣지가 세련되서 쉽게 질리진 않겠네요




Canon | Canon EOS 500D | 1/50sec | F/1.8 | 50.0mm | ISO-400

잉크 넣다가 흘리는 바람에 수많은 휴지를..... T_T




Canon | Canon EOS 500D | 1/60sec | F/1.8 | 50.0mm | ISO-500

고무마개를 제거해주고 잉크넣고 다시 고무마개를 끼워주는 형식입니다.
안에 압력조절 스펀지가 들어있네요. 이런건 또 처음봅니다 ~_~





Canon | Canon EOS 500D | 1/50sec | F/1.8 | 50.0mm | ISO-800

잉크 넣고 전원 연결하고 체험용 포토용지(4" x 6")로 뽑아봤습니다. 일단 프린터 출력 해상력은 탑 수준이니.. 세밀함은 정말 좋네요
프린터 기기 자체는 참 좋습니다.
무한잉크용 잉크 색감도 꽤 괜찮았습니다. 깊이감 표현은 약간 아쉬웠지만요 ^^;

그동안 프린터가 망가져서 학교 과제도 학교가서 뽑고 그랬는데 진작 바꿀걸 그랬습니다.
학교는 당분간 갈일이 없지만... 컴퓨터 원서들을 컴퓨터로만 보지않고 마구 뽑아볼 수 있으니 좋군요~~
저작자 표시 비영리 동일 조건 변경 허락

'Daily Life' 카테고리의 다른 글

mighty wallet (마이티 월렛 종이지갑)  (2) 2010/02/24
스타힐리조트 후기..  (0) 2010/02/01
Canon iP4760 프린터 개봉기  (2) 2010/01/24
쟈뎅 리얼 핑크 레몬에이드 !  (0) 2010/01/23
GSR NEX 혼수상태에 빠지다  (2) 2010/01/11
카메라 기변  (0) 2009/12/28
Posted by ˙Jisoo

댓글을 달아 주세요

  1. 2010/03/04 17:37  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다

  2. 2010/03/04 17:37  댓글주소  수정/삭제  댓글쓰기

    비밀댓글 입니다


얼마전 G시장에서 착한가격에 쟈뎅 시리즈를 판매한다고 하여 앞뒤 안보고 주문했습니다. -_-;;
보통 헤이즐넛(?) 을 많이 구매하시는 것 같던데 유통기한의 압박때문에 핑크 레몬에이드 ( 레몬에이드 + 석류 ) 를 구매하였습니다.
다른건 유통기한이 2월초 까지였는데 요놈은 3월중순까지라 비교적 여유있어 보인것이죠..
가장 중요한 가격이 2900원에 무료배송이었습니다.. 아무리 유통기한 땡처리라도 너무 저렴해서 뭔지도 모르고 샀지요.
택배비 2500원으로 치면 개당 10원이네요 ㅋㅋ


Canon | Canon EOS 500D | 1/50sec | F/1.8 | 50.0mm | ISO-160

택배 도착.. 크기가 커서 깜짝 놀랐습니다


Canon | Canon EOS 500D | 1/200sec | F/1.8 | 50.0mm | ISO-320

이런식으로 5개씩 묶여있구요..









Canon | Canon EOS 500D | 1/200sec | F/1.8 | 50.0mm | ISO-250

크기가 대략 이정도입니다.
커피믹스 봉투 형태일줄 알았던 저로썬 큰 충격이었지요 @_@



Canon | Canon EOS 500D | 1/124sec | F/1.8 | 50.0mm | ISO-400

그냥 사진 찍어볼려고 유리잔에 담은 사진..
색은 아주 연한 핑크색입니다. 컵에 담아보면 그냥 투명해요.......
맛은.. 그냥 하루에 3번 정도 먹기 좋은맛?
저작자 표시 비영리 동일 조건 변경 허락

'Daily Life' 카테고리의 다른 글

스타힐리조트 후기..  (0) 2010/02/01
Canon iP4760 프린터 개봉기  (2) 2010/01/24
쟈뎅 리얼 핑크 레몬에이드 !  (0) 2010/01/23
GSR NEX 혼수상태에 빠지다  (2) 2010/01/11
카메라 기변  (0) 2009/12/28
2009 . 07 . 14 / 대한이 군대..  (2) 2009/07/15
Posted by ˙Jisoo

댓글을 달아 주세요



게임개발에서 반드시 필요한 기술 중 하나인 충돌처리입니다.
단순히 두 물체간의 충돌여부를 판정하는 것은 수식만 잘 세워놓으면 되기에 그리 어렵지 않다고 생각합니다. (AABB이던 OBB이던)
개인적으로는 벽면이나 오브젝트에 다가갔을때 자연스럽게 뒷처리를 하는것이 더 까다롭다고 생각되네요.. 캐릭터와 맵,오브젝트 등 서로 상호작용해야하는 변수들이 필요하니까요.
기본적으로는 속도와 방향벡터를 서로 공유해야합니다.
3D 게임에서 캐릭터가 벽에 닿았을때 캐릭터를 멈추게 할 것이 아니라 캐릭터에 작용하고있던 벡터값과 벽면의 노멀벡터값을 이용하여 미끄러짐벡터(Sliding Vector)를 되돌려줘서 진행시켜줘야 합니다.

충돌여부를 판단하고 노멀값을 얻기위해서는 여러가지 방법이 있겠지만 저는 삼각형폴리곤 기반으로 제작중입니다.
현재 CollisionMap 생성은 다음과 같이 진행됩니다.

1. 메쉬파일을 불러와 그대로 충돌맵으로 생성
   - 레벨디자인 시에 충돌처리를 위한 면들을 직접 추가해 주었을 경우나 실내같은 간단한 레벨에서 편리합니다.
2. 메쉬파일을 불러와 최적화를 시킨뒤 충돌맵으로 생성
   - 복잡한 지형을 가진 레벨에서 연산을 줄여주기 위해 폴리곤값들을 최소화 해 준 뒤에 충돌맵을 생성합니다.
      동굴같이 울퉁불퉁한 곳은 폴리곤 갯수를 줄여주어도 캐릭터가 움직일때는 어색해보이지 않습니다.
3. 메쉬파일에서 BoundingBox를 생성하여 충돌맵으로 생성
   - 캐릭터간의 충돌, 오브젝트와의 충돌 등에서 해당 메쉬의 모든 삼각형과 충돌연산을 하는것은 말그대로 낭비입니다.
      메쉬의 복잡도도 높고 삼각형의 크기도 작은편이기에 2번의 방법을 쓴다면 오히려 어색한 연산을 보입니다. 버그도 많이 발생할테구요.
      그래서 BoundingBox를 생성하여 충돌맵으로 생성해줍니다. 이럴경우 12개의 삼각형만 가지게 되므로 연산 수가 많이 줄어듭니다.

동영상에서 실내형태의 맵파일은 1번 방법을 이용하였고, 슬롯머신 오브젝트는 3번을 이용한 예 입니다.
모서리 부분마다 점이 찍혀있는데 디버깅모드에서 보이는 충돌맵의 모서리확인용입니다.
일단 이렇게 세가지 방법을 사용중이고 부족하다 싶으면 바운딩박스를 세분화시켜서 2번과 3번의 중간쯤 되는 기능을 추가해줘야겠지요.
그리고 가끔 맵에 낑기는 버그가 있는데 이것부터 수정해줘야겠네요..
저작자 표시 비영리 동일 조건 변경 허락

'Programming > DirectX' 카테고리의 다른 글

Shadow Map Test  (0) 2010/01/28
충돌처리 과부하 테스트  (0) 2010/01/26
기본적인 충돌처리 구현  (0) 2010/01/21
Shadow Map  (0) 2010/01/16
애니메이션 블렌딩  (0) 2010/01/14
Lightmap 돌아오다 !  (0) 2010/01/12
Posted by ˙Jisoo

댓글을 달아 주세요

Shadow Map

Programming/DirectX / 2010/01/16 16:50



캐릭터 관리 클래스를 만들다가 잠깐 그림자 쪽을 건드려 봤습니다.
이것저것 보다가 Depth Buffer를 이용한 쉐도우맵을 적용했습니다.
직접 구현해보고 오픈월드형식 게임에서는 퀄리티가 너무 떨어지는걸 뼈저리게 느꼈습니다 ㅠ.ㅠ
Shadow Map의 해상도를 8192 * 8912 로 엄청 키웠음에도 적용하기에 부족해보입니다..
캐릭터가 약 1.5m 라고 설정해놓으면 영상에서 보이는 한 맵의 전체는 600~700m 정도 됩니다.
그나마 동영상이라 뭉개져서 괜찮아보이지만 깍두기가 장난이 아니네요..

Depth Buffer를 이용한 기본적인 쉐도우맵은 오픈월드형식에서 그냥 갖다 쓰기엔 무리가 있어보이고
축구경기장? 정도의 크기까지는 커버 가능해보입니다.
이런 단점을 보완하기위해 PSM 이니 뭐니 여러가지 기법이 있던데 더 연구를 해봐야죠..
우선 구현방식은 어느정도 깨닫게 되었으니 만들던거 마저 만들고 또 건드려봐야겠네요 +_+

'Programming > DirectX' 카테고리의 다른 글

충돌처리 과부하 테스트  (0) 2010/01/26
기본적인 충돌처리 구현  (0) 2010/01/21
Shadow Map  (0) 2010/01/16
애니메이션 블렌딩  (0) 2010/01/14
Lightmap 돌아오다 !  (0) 2010/01/12
Skinning Animation Using VertexShader  (0) 2010/01/11
Posted by ˙Jisoo

댓글을 달아 주세요





첫번째 동영상은 그냥 애니메이션을 바로 전환 한 것이고, 두번째 동영상은 애니메이션의 트랙이 변경될때 선형보간법을 이용해서 두개의 트랙 (바뀌기전의 트랙과 바뀌어야할 트랙) 을 블렌딩 해 주어서 두 트랙 사이가 부드럽게 연결되도록 한 것 입니다.
기본적으로 DX의 애니메이션 컨트롤러에서 선형보간 ( Linear Interpolation )과 더욱 부드럽게 속도를 증/감 시켜주는 Ease In Ease Out Interpolation 이 제공됩니다.
동영상에서는 블렌딩여부를 자세히 확인하기 위해 0.5초 정도의 긴 시간으로 지정하였습니다. Transition Time 은 눈으로 직접 확인해보며 애니메이션 트랙에 가장 자연스럽도록 지정하는것이 좋겠지요..

'Programming > DirectX' 카테고리의 다른 글

기본적인 충돌처리 구현  (0) 2010/01/21
Shadow Map  (0) 2010/01/16
애니메이션 블렌딩  (0) 2010/01/14
Lightmap 돌아오다 !  (0) 2010/01/12
Skinning Animation Using VertexShader  (0) 2010/01/11
스키닝 구현중 2  (0) 2010/01/09
Posted by ˙Jisoo

댓글을 달아 주세요



먼저 현재 적용되어있던 쉐이더 기반의 라이팅입니다.
스카이돔을 만들면서 생긴 태양의 위치를 기반으로 빛의 방향을 실시간으로 받아옵니다.
부하가 적어 완전실시간으로 음영을 만들어 낼 수 있다는 장점이 있지만 단점은 영상에서 보이듯이 LOD가 적용되었을 때 음영을 처리해주는 버텍스 수가 줄어들어서 보기가 영 좋지 않지요..
특히나 멀리서 볼 때는 더욱 더 심해집니다.

 

그래서 예전에 사용하던 라이트맵을 조금 손봐서 다시 적용하였습니다.
기존에는 라이트맵 계산 후 텍스쳐로 저장하였는데, 이번에는 저장하지 않고 바로 메모리상에서 관리를 하도록 되어있습니다.
연산량도 조금 더 많고 ( 기본적인 라이트 계산 후 2~3번의 블러 과정을 거칩니다 ) 쉐이더처럼 빠른 연산이 불가능하기 때문에 완전 실시간으로 적용하기엔 부하가 커서 일정시간마다 라이트맵을 태양위치에따라 갱신하도록 하였습니다. 
지금은 테스트 목적으로 1초에 한번씩 갱신해주도록 설정되어있습니다.
나중에 적용할 때는 게임의 시간과 실제 시간의 흐름이 같게 설계해놨기에 5분정도에 한번씩 갱신해주면 되겠지요.
라이트맵 계산 과정은 1초에 30~40번 정도 수행 할 수준이라 다행히도 라이트맵 생성시에 끊김현상등은 없습니다.

확실히 라이트맵을 따로 생성해놓으니 멀리서봐도 산처럼 보이네요 ㅎㅎ

'Programming > DirectX' 카테고리의 다른 글

Shadow Map  (0) 2010/01/16
애니메이션 블렌딩  (0) 2010/01/14
Lightmap 돌아오다 !  (0) 2010/01/12
Skinning Animation Using VertexShader  (0) 2010/01/11
스키닝 구현중 2  (0) 2010/01/09
스키닝 메쉬 재구현중..  (2) 2010/01/08
Posted by ˙Jisoo

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함