Я использую 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
)
Любая помощь будет оценена.