如何解决如何使用透视投影矩阵计算对象比例?
| 我目前正在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));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。