ddarazy

안녕하세요.
스파인 슬롯에 bounding box type의 좌표를 넣었습니다.
이를 프로그램 상에서 박스 좌표를 이용하여 다른 용도로 사용하고자 하는데
vertices 값을 읽을 수가 없게 되어 있습니다.
메모리의 값을 읽을 수가 없습니다. 라는 메세지가 보이더군요.
json 에는 해당 좌표값들이 들어 있지만
이 좌표를 실시간으로 가져오려고 하니 vertices , verticesCount 에 'disable read to memory'라는 메세지로
내용을 읽을 수가 없습니다.
해당 좌표를 이용하여 모자이크 처리를 하려고 하는데, 이 값을 프로그램 상에서 읽어 들일수 있는 방법은 없을까요?
답변 부탁드리겠습니다.

감사합니다.
ddarazy
  • Сообщения: 2

badlogic

어떤 Spine Runtime을 사용하고 있습니까? C 또는 C ++ 런타임을 사용하는 것처럼 당신이 무엇을 설명하고있는 것으로 들리십니까?

JSON에서 경계 상자를 직접 읽을 필요는 없습니다. 대신, 'Skeleton :: updateWorldTransform ()`을 사용하여 뼈대를 포즈를 취한 다음 현재 바운딩 박스 위치를 읽을 수 있습니다 :
SkeletonBounds bounds;
BoundingBoxAttachment *boundingBox;
boundingBox = skeleton->getAttachment("slot-name", "attachment-name");

// Somewhere in the update loop
skeleton->updateWorldTransform();
bounds.update(*skeleton, true);
Polygon *transformedBoundingBox = bounds.getPolygon(boundingBox);
What Spine Runtime are you using? From what you are describing it sounds like you are using the C or C++ runtime?

You do not have to read the bounding box from the JSON directly. Instead, you can pose a skeleton using Skeleton::updateWorldTransform(), then read the current bounding box position:
SkeletonBounds bounds;
BoundingBoxAttachment *boundingBox;
boundingBox = skeleton->getAttachment("slot-name", "attachment-name");

// Somewhere in the update loop
skeleton->updateWorldTransform();
bounds.update(*skeleton, true);
Polygon *transformedBoundingBox = bounds.getPolygon(boundingBox);
Аватара пользователя
badlogic

Mario
  • Сообщения: 2076

ddarazy

답변 감사합니다. :) 사양에 대한 자세한 내용도 기재했어야 했는데, 급한 나머지 필요한 내용만 기재하였습니다.
Spine runtime 은 cocos2d-x 3.9 c/cpp 런타임을 사용하고 있습니다.
위의 답변 내용과 조금 다르지만 해당 부분과 유사한 함수를 찾아 문제를 해결했습니다.
다른 분들도 저와 같은 문제를 겪을수도 있으니 간단한 소스 코드를 첨부합니다.

==========
spSkeletonBounds *bounds = spSkeletonBounds_create();
spBoundingBoxAttachment *boundingBox = (spBoundingBoxAttachment*)m_skeleton->getAttachment("slot-name", "attachment-name");
m_skeleton->updateWorldTransform();
spSkeletonBounds_update(bounds, m_skeleton->getSkeleton(), true);
spPolygon *polygon = spSkeletonBounds_getPolygon(bounds, boundingBox);
std::vector<float> p1_vertice_list;
for (size_t i = 0; i < polygon->count; i++)
{
p1_vertice_list.push_back(polygon->vertices[i]);
}

==========
위와 같은 방법으로 boundingbox type의 vertices 리스트를 가져올 수 있었습니다.
덕분에 문제 해결을 할 수 있었습니다.
다시한번 감사 드립니다.
ddarazy
  • Сообщения: 2


Вернуться в 한국어 Spine 사용자