Actionscript 3 3d转换后文本和位图略微模糊

Actionscript 3 3d转换后文本和位图略微模糊,actionscript-3,bitmap,flash-cs4,Actionscript 3,Bitmap,Flash Cs4,我有一系列包含位图和文本的movieclips。 在应用一些3d变换并在3d空间中移动后,我的文本和位图会稍微模糊。这是在我重置所有三维坐标(即z=0,rotationX=0,rotationY=0)之后 还有其他人遇到过这种情况吗?有没有办法把我的清晰文本和位图拿回来?在另一篇关于3d问题的文章中找到了解决方案。 您需要通过应用新transfrom.matrix删除所有三维变换 var tempMatrix:矩阵=新矩阵(); this.transform.matrix=tempMatrix

我有一系列包含位图和文本的movieclips。 在应用一些3d变换并在3d空间中移动后,我的文本和位图会稍微模糊。这是在我重置所有三维坐标(即z=0,rotationX=0,rotationY=0)之后
还有其他人遇到过这种情况吗?有没有办法把我的清晰文本和位图拿回来?

在另一篇关于3d问题的文章中找到了解决方案。 您需要通过应用新transfrom.matrix删除所有三维变换

var tempMatrix:矩阵=新矩阵();
this.transform.matrix=tempMatrix

您需要确保对任何应用了3D转换的对象将matrix3D属性设置为null。

这是一个非常有趣的错误

出现的模糊实际上是不正确的抗锯齿或平滑,通常通过沿边缘使用精细颜色渲染字体来解决。在这种情况下,它实际上是由3D变换引起的,可以通过在动画之后取消
矩阵x3d
来解决:

myTextContainer.transform.matrix3D = null;
你也可以写:

myTextContainer.transform.matrix = new Matrix();
但是使用这种方法,您必须导入
flash.geom.Matrix

这两个选项还将重置为零
x
y
坐标,以及动画显示对象的其他重要设置,因此您还必须将这些值分配给变量,并在使变换矩阵为零后重新应用它们

似乎一旦字体被转换,它就会失去这种精细的色彩。未转换的字体具有这些颜色细节,而转换的字体则完全不饱和

附件是12点字体的放大细节,显示了颜色细节的丢失。顶部字符串没有3D变换,而底部字符串通过
rotationY
在舞台上设置动画

以下是饱和到90%的相同图像,以更清晰地显示颜色:

这些颜色细节在灰色文本上更容易看到


我相信自从FlashPlayer9/AVM2首次推出以来,这个错误就一直存在。此外,在Flash player的早期版本中,正确渲染字体周围的精细颜色细节更加饱和,在我看来,这使字体看起来更好——尽管这种差异对于与我不同的非完美主义者来说可以忽略不计。

更好的答案是使用此修复。这是我一直用的

    /**
     * Fixes the slight distortion that occurs when an object has a 3D transform associated with it.
     * @param   di:DisplayObject    The DisplayOjbect to fix.
     */
    public function fix3DBlur(di:DisplayObject):void {
        di.scaleX = di.width / (di.width - 1);
        di.scaleY = di.height / (di.height - 1);
    }
此函数设置略微偏移的scaleX和scaleY。这看起来很奇怪,但当你使用任何3d属性对对象进行3d调整时,它们会使对象看起来不模糊。您始终可以删除3DTransform,但有时需要它保持原位


我将此函数放在我拥有的Utilities3D类上。

模糊将由矩阵数学中的累积舍入错误引起。我在Silverlight中也注意到了类似的效果。是的,听起来不错,但随后你会丢失3D变换。这会破坏你可能需要的3D变换。这在Adobe Animate-Flash player 25中仍然是一个问题……。谢谢你的解决。