仅 Aframe 广告牌 Y 轴

Aframe Billboarding Only Y Axis

我正在使用 this component 让图像在 Aframe 场景中始终面向相机。它工作正常,但我需要让广告牌只在 Y 轴上工作,想象图像是一个人,这个人应该只转身跟随相机,而不是在相机靠近时仰望。

知道如何修改该组件来实现吗?

通过将目标的 Y 坐标设置为与对象广告牌相同来管理:

this.vector.y = object3D.position.y;  //this line is new
return object3D.lookAt(this.vector);

This thread 导致仅在 y-axis 上旋转实体的简单解决方案。这是一个 self-contained 组件:

AFRAME.registerComponent('look-at-y', {
  schema: {
    target: {type: 'string', default: 'camera'}
  },
  init: function () { },
  update: function () { },
  tick: function () {
    const targetEl = document.getElementById(this.data.target).object3D;
    const el = this.el.object3D;
    const vec = new THREE.Vector3();
    targetEl.getWorldDirection(vec);
    vec.y = 0;
    vec.add(el.position)
    el.lookAt(vec);
  }
});

这通过在计算要查看的向量时忽略目标实体的 Y 位置来实现。

vec.y = 0 更改为 vec.xvec.z 将改为在其他轴上显示广告牌。为了更进一步,您可以修改此组件以采用“轴”架构参数并动态交换它!