0

我正在尝试获取 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 变换影响的精灵,因此它们始终面向“相机”。

4

1 回答 1

0

文档说你正确地得到了向量,但它的系数似乎没有加在一起形成一个单一的长度值。首先尝试一个未缩放的精灵,并检查您是否收到一个 sqrt(3) 值作为它的长度。如果是,那么您应该使用向量的第 0 个元素作为 X 比例,第 1 个作为 Y 比例。我不确定如何处理第二个元素(在这种情况下,它将是 Z 比例,或者将两个比例除以它,或者乘以它)。希望有帮助。

于 2012-10-06T17:02:50.633 回答