слегка размытый текст и растровые изображения ПОСЛЕ 3d преобразования - PullRequest
3 голосов
/ 02 февраля 2010

У меня есть серия видеороликов, содержащих как растровые изображения, так и текст. После применения некоторых трехмерных преобразований и перемещения в трехмерном пространстве мой текст и растровые изображения слегка размыты. Это ПОСЛЕ того, как я сбросил все 3d-координаты (т.е. z = 0, вращениеX = 0, вращение Y = 0) кто-нибудь еще сталкивался с этим? Есть ли решение, чтобы вернуть мой четкий текст и растровые изображения обратно?

Ответы [ 4 ]

2 голосов
/ 05 июля 2011

это очень интересная ошибка.

размытие, которое появляется, на самом деле является неправильным сглаживанием или сглаживанием, которое обычно решается путем рендеринга шрифта с тонкими цветами по краям. в этом случае это фактически вызвано трехмерными преобразованиями и может быть решено путем обнуления matrix3D после анимации:

myTextContainer.transform.matrix3D = null;

Вы также можете написать:

myTextContainer.transform.matrix = new Matrix();

но при таком подходе вам придется импортировать flash.geom.Matrix.

обе опции также обнуляют координаты x и y и, возможно, другие важные настройки анимированного экранного объекта, поэтому вам также нужно будет присвоить эти значения переменным и применить их после обнуляя матрицу преобразования .

кажется, что когда шрифт преобразуется, он теряет этот прекрасный цветовой тон. Не преобразованные шрифты имеют эти цветовые детали, а преобразованные шрифты становятся полностью ненасыщенными.

прилагается увеличенный до мелочей шрифт с 12 точками, который демонстрирует эту потерю цветных деталей. верхняя строка не имеет трехмерного преобразования, а нижняя строка была анимирована на сцену с помощью rotationY.

enter image description here

вот то же изображение, насыщенное до 90% для более четкого отображения цветов:

enter image description here

эти цветные детали легче увидеть на сером тексте.

Я полагаю, что эта ошибка присутствует с момента первого появления Flash Player 9 / AVM2. Кроме того, мелкие детали цвета вокруг правильно отрисованного шрифта были гораздо более насыщенными в ранних версиях Flash Player, что, на мой взгляд, заставляло шрифты выглядеть намного лучше - хотя отличие, возможно, не перфекционистами, в отличие от меня. 1034 *

1 голос
/ 02 февраля 2010

Необходимо убедиться, что для свойства matrix3D установлено значение null для любых объектов, к которым применено трехмерное преобразование.

0 голосов
/ 10 августа 2013

Еще лучший ответ - использовать это исправление. Это тот, который я использовал все время.

    /**
     * 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, который у меня есть.

0 голосов
/ 02 февраля 2010

Посмотрел еще один пост по 3d вопросам и наткнулся на решение. Вам необходимо удалить все 3d преобразования, применив новый transfrom.matrix

var tempMatrix: Matrix = new Matrix (); this.transform.matrix = tempMatrix;

...