我正在尝试获取 3D Sprite 的派生位置和缩放并将它们设置为 2D Sprite。
我设法做到了这样的第一部分:
var p:Point = sprite3d.local3DToGlobal(new Vector3D(0,0,0));
billboard.x = p.x;
billboard.y = p.y;
但我无法正确获得缩放部分。我正在尝试这个:
var mat:Matrix3D = sprite3d.transform.getRelativeMatrix3D(stage); // get derived matrix(?)
var scaleV:Vector3D = mat.decompose()[2]; // get scaling vector from derived matrix
var scale:Number = scaleV.length;
billboard.scaleX = scale;
billboard.scaleY = scale;
...但结果显然是错误的。
PS。有人可能会问我想要实现什么。我正在尝试创建“广告牌”3D 精灵,即受除旋转之外的所有 3D 变换影响的精灵,因此它们始终面向“相机”。