Как убрать вращение вокруг осей x и y на маркере Vuforia AR - PullRequest
0 голосов
/ 29 января 2019

Я использую Vuforia с маркером AR, чтобы поместить объект на маркер перпендикулярно.Я хочу, чтобы маркер всегда был перед камерой, и это происходит с помощью следующего кода.Проблема в том, что он также вращается вокруг осей X и Y.Я хочу удалить эти повороты.

val oldMatrixArray = firstMatrix44F!!.data
val oldQuaternion = Quaternion.fromMatrix(oldMatrixArray, 0, 4)
val quaternion = Quaternion.fromMatrix(matrixData, 0, 4)
val quaternionLib = QuaternionLib(quaternion.x, quaternion.y, quaternion.z, quaternion.w)
val oldQuaternionLib =
    QuaternionLib(oldQuaternion.x, oldQuaternion.y, oldQuaternion.z, oldQuaternion.w)
Log.d(
    "QuaternionLibRad",
    " X:" + quaternion.x + " Y:" + quaternion.y + " Z:" + quaternion.z + " W:" + quaternion.w
)
Log.d(
    "QuaternionLibRad",
    " Yaw:" + oldQuaternionLib.yawRad + " Pitch:" + quaternionLib.pitchRad + " Roll:" + oldQuaternionLib.rollRad
)
quaternionLib.setEulerAnglesRad(
    oldQuaternionLib.yawRad,
    quaternionLib.pitchRad,
    oldQuaternionLib.rollRad
)
Quaternion.toMatrix(
    matrixData,
    quaternionLib.x,
    quaternionLib.y /*quaternion.y()*/,
    quaternionLib.z,
    quaternionLib.w,
    0,
    4
)
val modelViewProjectionVideo = FloatArray(16)
Matrix.translateM(
    matrixData, 0, 0.0f, 0.0f,
    targetPositiveDimensions.data[0]
)
// Here we use the aspect ratio of the video frame
Matrix.scaleM(
    matrixData, 0,
    targetPositiveDimensions.data[0],
    targetPositiveDimensions.data[0] * videoQuadAspectRatio,
    targetPositiveDimensions.data[0]
)
Matrix.multiplyMM(
    modelViewProjectionVideo, 0,
    projectionMatrix, 0, matrixData, 0
) 

Любая помощь будет оценена.

...