Привет, есть компонент, который перемещает объект из его положения в сцену в положение перед камерой.
Это прекрасно работает, если камера не была повернута, но я не могу учесть ее поворот камеры после поворота.
//Copy the initial datas
this._initialPosition = this._threeElement.position.clone()
this._initialQuaternion = this._threeElement.quaternion.clone()
//Convert fov + reduce it
let fovInRad = AFRAME.THREE.Math.degToRad(this._cameraEntity.fov)/2
let ratio=window.innerWidth/window.innerHeight //Assuming the FOV is vertical
let pLocal,cPos
let sizeY = this._size.y
let sizeX = this._size.x
let sizeZ = this._size.z
sizeX*=this._threeElement.scale.x
sizeY*=this._threeElement.scale.y
sizeZ*=this._threeElement.scale.x
const uSpace= 0.8
sizeY/=2;sizeX/=2
sizeY*=uSpace;sizeX*=uSpace
let tanFov = Math.tan(fovInRad)
let distY = sizeY/tanFov
let distX = ((sizeX/(ratio*tanFov)) < distY) ? distY : sizeX/(ratio*tanFov)
pLocal = new AFRAME.THREE.Vector3(0, 0, -(distX + sizeZ))
cPos = this._cameraEntity.position.clone()
cPos.y += 1.6
this._targetPosition = pLocal.applyMatrix4(this._cameraEntity.matrixWorld.clone())
this._threeElement.parent.worldToLocal(this._targetPosition)
let targetLook = cPos.applyMatrix4(this._cameraEntity.matrixWorld.clone())
this._threeElement.parent.worldToLocal(targetLook)
this._threeElement.position.copy(this._targetPosition)
this._threeElement.lookAt(targetLook)
this._targetQuaternion = this._threeElement.quaternion.clone()
Кажется, проблема заключается в том, что я применяю матрицу камеры.
Любая идея, как найти это целевое положение относительно того, где камера смотрит