일정 크기 까지는 멀쩡한 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-~
> 너무나 다행인 거시다.
댓글 없음:
댓글 쓰기