kinect를 실험하고 있지만 스케일링에 문제가 있습니다. 아래는 kinect-kcb의 코드입니다. 얼굴 추적이 '메쉬'에서 작동하더라도 자체 클래스의 배율 값을 반환하는 데 문제가 있습니다. 아래의 코드는 완벽하게 작동하는 정확한 회전과 평행 이동을 반환하지만, 메쉬는 분명히 크기가 변하는 메쉬 임에도 불구하고 오랜 기간 동안 1을 반환 한 다음 서서히 작아 지지만 0.98 ... 등등하지만 스케일링 값은 정확하지 않습니다.Kinect Scaling in C++
float scale;
float rotation[ 3 ];
float translation[ 3 ];
hr = mResult->Get3DPose(&scale, rotation, translation);
if (SUCCEEDED(hr)) {
Vec3f r(rotation[ 0 ], rotation[ 1 ], rotation[ 2 ]);
Vec3f t(translation[ 0 ], translation[ 1 ], translation[ 2 ]);
face.mPoseMatrix.translate(t);
face.mPoseMatrix.rotate(r);
face.mPoseMatrix.translate(-t);
face.mPoseMatrix.translate(t);
face.mPoseMatrix.scale(Vec3f::one() * scale);
}
이 스케일 값은 코드 thoughout 반복적으로 사용되지만 자주 변경하지 않는 것 (예를 들어, 기능 - 않기 위해) :
hr = mModel->Get3DShape(shapeUnits, numShapeUnits, animationUnits, numAnimationUnits, scale, rotation, translation, pts, numVertices);
hr = mModel->GetProjectedShape(&mConfigColor, mSensorData.ZoomFactor, viewOffset, shapeUnits, numShapeUnits, animationUnits,
numAnimationUnits, scale, rotation, translation, pts, numVertices);
을 넥트 (함수 FaceModel.Scale있다) 그러나 이것은 단지 3D 모델의 초기 배율 값이라고 가정하는 상수 값을 반환합니다. 그리고 사용자가 카메라에서 더 멀리 그리고 멀리 이동할 때 위의 배율 값이 변할 것이라고 가정했습니다.
그래서 당신이 목표를 추측하는 것은 스케일 값을 사용하여 카메라와의 거리를 판단하는 것입니다. – ldgorman
3D 모델에 대한 z 값을 결국 찾았습니다 (더 좋은 방법이 있기를 바랬습니다). 당신의 도움을 주셔서 감사합니다 :). – user1546650