DrawableVertexPosition 검증
업데이트: 2019/11/07
CubismModel::GetDrawableVertexPositions에서 얻은 값이 모델 내보내기에 의해 어떻게 변화하는지 확인합니다.
Cubsim Core for Native의 csmGetDrawableVertexPositions 함수의 반환값을 그대로 사용하기 때문에 이 API의 확인도 됩니다.
환경은 다음과 같습니다.
확인 환경
확인 환경은 Cubism SDK for Native의 샘플 프로그램을 개조하고, 로그 출력 기능을 사용해 실시합니다.
LAppModel::LoadAssets를 변경하여 ArtMesh의 모든 점의 값을 로그에 출력하도록 하고 있습니다.
void LAppModel::LoadAssets(const csmChar* dir, const csmChar* fileName) { _modelHomeDir = dir; if (_debugMode)LAppPal::PrintLog("[APP]load model setting: %s", fileName); csmSizeInt size; const csmString path = csmString(dir) + fileName; csmByte* buffer = CreateBuffer(path.GetRawString(), &size); ICubismModelSetting* setting = new CubismModelSettingJson(buffer, size); DeleteBuffer(buffer, path.GetRawString()); SetupModel(setting); CreateRenderer(); SetupTextures(); LAppPal::PrintLog("\n[APP]check vertexPositions : %s",fileName); for (csmInt32 i = 0; i < _model->GetDrawableCount(); ++i) { LAppPal::PrintLog("[APP]\t%s",_model->GetDrawableId(i)->GetString().GetRawString()); const Live2D::Cubism::Core::csmVector2 *xys = _model->GetDrawableVertexPositions(i); for (int j = 0; j < _model->GetDrawableVertexCount(i); ++j) { LAppPal::PrintLog("[APP]\t\tx:%6.3f y:%6.3f", xys[j].X,xys[j].Y); } } LAppPal::PrintLog("[APP]end check\n"); }
모델
단순한 4점의 사각형이 캔버스 내에 빠듯하게 배치되어 있기만 한 모델입니다.
이번 확인에서는 Cubism Editor 3.2.00을 사용하여 출력하고 있습니다.
출력 시의 설정은 PixelsPerUnit 2종류, 중앙 위치 3종류로 6종류로 비교합니다.
PixelsPerUnit:1 or 900
중앙 위치: 왼쪽 위 or 가운데 or 오른쪽 아래
index 1: PPU1 왼쪽 위 | index 2: PPU1 중앙 | index 3: PPU1 오른쪽 아래 |
index 4: PPU900 왼쪽 위 | index 5: PPU900 중앙 | index 6: PPU900 오른쪽 아래 |
결과
[APP]model index: 1 [APP]delete model: Haru.moc3 [APP]load model setting: ppu1tl.model3.json [APP]create buffer: ppu1tl/ppu1tl.model3.json [APP]delete buffer: ppu1tl/ppu1tl.model3.json [APP]create model: ppu1tl.moc3 [APP]create buffer: ppu1tl/ppu1tl.moc3 [APP]delete buffer: ppu1tl/ppu1tl.moc3 [APP]check vertexPositions : ppu1tl.model3.json [APP] ArtMesh [APP] x:895.700 y:-5.123 [APP] x: 5.123 y:-5.123 [APP] x:895.700 y:-1989.899 [APP] x: 5.123 y:-1989.899 [APP]end check [APP]model index: 2 [APP]delete model: ppu1tl.moc3 [APP]load model setting: ppu1cent.model3.json [APP]create buffer: ppu1cent/ppu1cent.model3.json [APP]delete buffer: ppu1cent/ppu1cent.model3.json [APP]create model: ppu1cent.moc3 [APP]create buffer: ppu1cent/ppu1cent.moc3 [APP]delete buffer: ppu1cent/ppu1cent.moc3 [APP]check vertexPositions : ppu1cent.model3.json [APP] ArtMesh [APP] x:445.700 y:994.877 [APP] x:-444.877 y:994.877 [APP] x:445.700 y:-989.899 [APP] x:-444.877 y:-989.899 [APP]end check [APP]model index: 3 [APP]delete model: ppu1cent.moc3 [APP]load model setting: ppu1br.model3.json [APP]create buffer: ppu1br/ppu1br.model3.json [APP]delete buffer: ppu1br/ppu1br.model3.json [APP]create model: ppu1br.moc3 [APP]create buffer: ppu1br/ppu1br.moc3 [APP]delete buffer: ppu1br/ppu1br.moc3 [APP]check vertexPositions : ppu1br.model3.json [APP] ArtMesh [APP] x:-4.300 y:1994.877 [APP] x:-894.877 y:1994.877 [APP] x:-4.300 y:10.101 [APP] x:-894.877 y:10.101 [APP]end check [APP]model index: 4 [APP]delete model: ppu1br.moc3 [APP]load model setting: ppu900tl.model3.json [APP]create buffer: ppu900tl/ppu900tl.model3.json [APP]delete buffer: ppu900tl/ppu900tl.model3.json [APP]create model: ppu900tl.moc3 [APP]create buffer: ppu900tl/ppu900tl.moc3 [APP]delete buffer: ppu900tl/ppu900tl.moc3 [APP]check vertexPositions : ppu900tl.model3.json [APP] ArtMesh [APP] x: 0.995 y:-0.006 [APP] x: 0.006 y:-0.006 [APP] x: 0.995 y:-2.211 [APP] x: 0.006 y:-2.211 [APP]end check [APP]model index: 5 [APP]delete model: ppu900tl.moc3 [APP]load model setting: ppu900cent.model3.json [APP]create buffer: ppu900cent/ppu900cent.model3.json [APP]delete buffer: ppu900cent/ppu900cent.model3.json [APP]create model: ppu900cent.moc3 [APP]create buffer: ppu900cent/ppu900cent.moc3 [APP]delete buffer: ppu900cent/ppu900cent.moc3 [APP]check vertexPositions : ppu900cent.model3.json [APP] ArtMesh [APP] x: 0.495 y: 1.105 [APP] x:-0.494 y: 1.105 [APP] x: 0.495 y:-1.100 [APP] x:-0.494 y:-1.100 [APP]end check [APP]model index: 6 [APP]delete model: ppu900cent.moc3 [APP]load model setting: ppu900br.model3.json [APP]create buffer: ppu900br/ppu900br.model3.json [APP]delete buffer: ppu900br/ppu900br.model3.json [APP]create model: ppu900br.moc3 [APP]create buffer: ppu900br/ppu900br.moc3 [APP]delete buffer: ppu900br/ppu900br.moc3 [APP]check vertexPositions : ppu900br.model3.json [APP] ArtMesh [APP] x:-0.005 y: 2.217 [APP] x:-0.994 y: 2.217 [APP] x:-0.005 y: 0.011 [APP] x:-0.994 y: 0.011 [APP]end check
CubismModel::GetDrawableVertexPositions에서 얻을 수 있는 데이터는 XY의 비율은 그대로 PixelsPerUnit의 영향을 받아 출력되는 것을 볼 수 있습니다.
CubismModelMatrix
PixelsPerUnit의 값으로 DrawableVertexPosition의 범위는 크게 변화하지만,
CubismModelMatrix를 사용한 초기화에서는 화면에 맞는 범위에서 초기화되기 위해 중앙 위치만 지정한 것처럼 보입니다.
이 기사가 도움이 되었나요?
네아니요