В дополнение к тому, что предложил @pailhead и поговорив с коллегой, я нашел решение.Единственное, что по предположению - это «14», как показано ниже.
function scaleBG(workCam, scaleObj) {
var aspectRatio = window.innerWidth / window.innerHeight;
var alpha = ((workCam.fov / 2.0) * Math.PI / 180);
var beta = (90.0 * Math.PI / 180.0);
var gamma = ((180.0 - alpha - beta) * Math.PI / 180.0);
var c = workCam.far - camZOffset - 1.0;
var a = c * Math.sin(alpha) / Math.sin(gamma);
var b = c * Math.sin(beta) / Math.sin(gamma);
var width = a * 2 / (window.innerWidth / 14);
scaleObj.scale.set(-width, width / aspectRatio, 1);
scaleObj.position.set(camXOffset,0,-c);
}
Изменение масштаба на «14» выглядит хорошо, но я не уверен, что есть лучший способ рассчитать это значение.Однако на данный момент это работает для меня довольно хорошо.
Edit 1
Похоже, значение ширины работает для мобильных устройств, но на настольном компьютере мало.Может, нужно сделать математику на основе ppi?