如何使用透视投影矩阵计算对象比例?

| 我目前正在Flash中使用精灵创建一个小的3D粒子引擎。 使用下面的projectVector函数设置每个精灵的位置。 (viewTransform矩阵是与透视投影矩阵连接在一起的粒子世界矩阵)
var projectedPoint:Vector3D = Utils3D.projectVector(viewTransform, point);
sprite.x = projectedPoint.x;
sprite.y =  projectedPoint.y;
这真的很好,可以将精灵精确放置在它们应该放置的位置:D 我遇到的问题是试图找出如何根据距相机的距离来计算每个粒子的比例。
sprite.scaleX = sprite.scaleY = ??
如果我不使用透视投影矩阵,我通常会这样做。
var scaleRatio:Number = (focus * zoom)/(focus + particle.globalz);
particle.depth = scaleRatio;
sprite.x = particle.globalx * scaleRatio;
sprite.y = particle.globaly * scaleRatio;
// set scale..
sprite.scaleX = sprite.scaleY = scaleRatio;
如果有任何人可以向我展示如何使用ace透视投影矩阵计算\“ scaleRatio \” 谢谢!     
已邀请:
        我敢肯定有一种更简洁的方法可以执行此操作,但是由于您已经知道如何投影点,因此可以执行以下操作:
var tl:Point = sprite.getRect(sprite.parent).topLeft;
var br:Point = sprite.getRect(sprite.parent).bottomRight;

var projectedTL:Point = Utils3D.projectVector(viewTransform, tl);
var projectedBR:Point = Utils3D.projectVector(viewTransform, br);

trace(\"projected width = \"+(projectedBR.x - projectedTL.x));
trace(\"projected height = \"+(projectedBR.y - projectedTL.y));
    

要回复问题请先登录注册