2018년 7월 2일 월요일

[20180702] cocos2d-x 3.15 Projection Matrix Problem

20180629 : 발견( facebook 에서 옮겨옴 )

일정 크기 까지는 멀쩡한 Tile Sheet 가 600 초중반 이상으로 커지면 상, 하, 좌, 우가 짤리고 중간 부분에서 Tile 이 늘어난다.
( 내가 이거 확인하려고 한땀 한땀 pixel 단위로 다 확인했다구~! )

가로나 세로 한쪽만 넘어가는 경우 해당 방향에서만 문제가 생긴다. 미묘하게 scale 비슷한 것이 일어나는 느낌인데... 자세한 것은 뜯어봐야 알 것 같다.

이런 종류의 문제를 미연에 방지하고자 패턴 조립단계에서부터 크기와 위치 값을 정수 로 한정 했고 Pattern 조각들도 정수값에 딱 맞는 사이즈를 가지며 반으로 잘라도 그냥 정수다.

덕분에 내 코드 부분은 빠르게 확인이 마무리 되었고, 다음작업으로 맘편하게 Texture Render 관련 cocos 코드를 디비게 되었다.

cocos야 나한테 왜이러냐~!~! 왜이러냐고~~!~!

( '_')y-~

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

20180702 : 진전( facebook 에서 옮겨옴 )

지금의 tile sheet 짤림 문제는...

cocos가 perspective view 를 깔아놓고 거기에 2D view 를 올리다 보니 발생한 문제같다.

지금 보니 Render to Texture 만의 문제가 아니다.
해상도가 늘어나면 1 픽셀이 짤려 나가는 것은 그냥 일어난다.

Projection Matrix 설정에 문제가 있는거지...

난 또 국지적인 문제인줄 알았잖아.

이전에 shader 작업하면서 이런 저런거 만들때 z 값이 들어가면 아무렇지도 않게 3D View 로 보이길레 이게 뭔가 했는데...

그~~~~으~~~런 거였구나~~~~아.

하아.
벽보고 욕이나 좀 해야겠다.

( '_')y-~

> 이제 이걸 어쩐다.

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

20180702 : 해결

3D 뷰 에서 크기와 시야각이 고정되어 있는데 2D View에 이격이 발생한다면 그것은 기준점의 문제일 것이다.

...라는 가정하에 eye 를 설정하는 코드를 살펴 보았다.

float Director::getZEye(void) const
{
     return ( _winSizeInPoints.height / 1.1566f );
}

위치를 비율로 잡는 거야 알겠는데 왜 1.1566f 인가?
...라는 의문으로

cocos2d-x git CCDirector.h
...에서 최신 버전의 코드에 어떤 변경점이 있는지 확인해 보았다.

float Director::getZEye(void) const
{
    return ( _winSizeInPoints.height / 1.154700538379252f );//(2 * tanf(M_PI/6))
}

...와 같이 코드가 바뀌어 있었다.

> PI 는 180` 도 기준
> / 6 이면 30`
> * 2 면 60'
> getZEye 를 사용하는 코드에 보면 기준 시야각이 60` 이다.
> 설정 파일에 쳐 넣어 좀. -_-+++

그래 이런 심각한 문제를 아무도 눈치채지 못하고 넘어갔을리가 없지.

적용했고 잘 돌아간다.

( '_')y-~

> cocos 인간들아 내 시간 물어내라.
> 물어내라고.  T_T
> 이 시점에 가장 빡치는 부분은 내가 cocos 관련 주요 이슈 메일을 받고 있고
> 꾸준히 읽어왔다는 것이다.
> 아... 승질나.


< Changes >

< Complete Verification >

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

20180706 : 뒷 이야기

cocos projection matrix 버그 잡고 났더니
화면 scroll 될때마다 눈에 밟히던 화면 지글거림도 사라졌다.

툴 작업중에 버그를 발견하지 않았다면...
후반 작업에서 지글거림 해결하겠다고 갖은 삽질을 했을텐데.끔찍.

( '_')y-~

> 너무나 다행인 거시다.

댓글 없음:

댓글 쓰기