균일하지 않은 스프라이트 치수를 가진 스프라이트 시트를 어떻게 처리 할 수 ​​있습니까? 스프라이트 시트의 경우, 각

균일하지 않은 스프라이트 치수를 가진 스프라이트 시트의 경우, 각 개별 스프라이트에 대한 경계 사각형 을 어떻게 얻을 수 있습니까?

내가 결정하고 싶은 것은 : offset_x, offset_y, width, height

여기에 이미지 설명을 입력하십시오

지금까지 모든 스프라이트의 치수 가 동일한 스프라이트 시트 만 사용했습니다 . 이 경우 특정 스프라이트를 얻기 위해 x 및 y 오프셋을 지정하면됩니다. 그러나 균일 하지 않은 치수의 스프라이트 시트의 경우 에는 작동하지 않습니다.

편집 : 의견과 답변을 읽은 후 질문을 더 포괄적으로 작성하도록 질문했습니다. 게임에서 스프라이트 시트를 사용하는 실제 과정. 이전에는 사람들이 불균일 한 크기의 스프라이트 시트를 생성하는 이유와 처리 방법에 대한 질문이 포함되어있었습니다.



답변

동일하지 않은 차원의 대부분의 스프라이트 시트에는 일반적으로 스프라이트의 앵커가있는 일종의 메타 데이터가 있습니다. 풀 알파 픽셀을 제거하고이 데이터가 수동으로 생성되지 않도록 필요한 데이터를 제공하는 등 많은 도구가 있습니다.

이 메타 데이터가 없으면 직접 작성해야합니다. 가장 정확한 방법은 당신이 당신의 질문에 말한 것입니다, 그것은 손으로 직접하는 것입니다. 시간이 걸리지 만 새로운 스프라이트를 만드는 것보다 빠를 것입니다.


답변

이미지에 대한 분석을 수행하여 각 스프라이트의 경계 사각형을 찾고 경계 사각형을 정렬하고 (아마도 최소 X, Y를 증가시켜) 스프라이트 시트의 프레임에 해당하는 경계 영역 세트를 갖게됩니다.

이 프로세스는 비교적 비용이 많이들 수 있으므로 게임 빌드 프로세스의 일부로 오프라인에서 수행하는 것이 좋습니다. 그런 다음 경계 영역 정보를 해당 스프라이트 시트 이미지와 함께 저장 한 파일로 직렬화 할 수 있습니다. 런타임에 이미지와 경계 정의 파일을 모두로드하고 각 개별 스프라이트에 액세스하는 데 필요한 정보가 있습니다.

그러나 그것은 말보다 쉽습니다. 기본적 으로 머신 비전 문제인 기능 감지 및 특히 얼룩 감지 를 수행하려고합니다 . 또한 이미지를 흑백으로 임계 값을 지정하고 가장자리 감지 기술을 사용할 수 있습니다 . 이러한 기술의 관련 수학은 내가 할 수있는 것보다 링크에서 훨씬 잘 설명되어 있으며, 그 수학을 직접 구현하지 않으려는 경우 도움을 줄 수있는 라이브러리가 몇 가지 있습니다. 다음 링크 세트가 가장 유망한 것 같습니다.


답변

나는 그런 종류의 비 균일 스프라이트 시트를 위해 나만의 도구를 만들었습니다. 오프셋 등을 편집 할 수 있습니다. 다음은 아이디어를 제공하는 스크린 샷입니다.


답변

texturepacker를 확인하십시오

http://www.texturepacker.com/

원하는 설정에 따라 이와 같은 파일을 출력합니다.

    {
    "filename": "image_front_1",
    "frame": {"x":1,"y":160,"w":34,"h":52},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":2,"w":36,"h":40},
    "sourceSize": {"w":36,"h":40}
},
{
    "filename": "image_front_2.png",
    "frame": {"x":36,"y":160,"w":34,"h":52},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":0,"w":36,"h":42},
    "sourceSize": {"w":36,"h":42}
},
{
    "filename": "image_front_3.png",
    "frame": {"x":71,"y":160,"w":34,"h":52},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":0,"w":34,"h":52},
    "sourceSize": {"w":36,"h":42}
},
{
    "filename": "image_front_4.png",
    "frame": {"x":106,"y":160,"w":34,"h":52},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":0,"w":34,"h":52},
    "sourceSize": {"w":36,"h":42}
}

이 데이터를 사용하면 이미지에서 별도의 사각형을 쉽게 잡을 수 있습니다.


답변

spritebuddy.com 은 저에게 큰 도움이되었습니다. 사이트 자체에 대한 도움말을 찾을 수 없지만 이 Google 그룹스 게시물에서 실제로 도움 이됩니다 . 스프라이트의 경계를 자동 추측하여 조정하고 애니메이션 시퀀스로 정렬 할 수 있습니다. 그런 다음 JSON 또는 XML로이 모든 메타 데이터 파일을 추출합니다. 그런 다음 게임에서 해당 데이터 파일을 구문 분석하여 올바른 경계 사각형을 얻으십시오.


답변