Archive for июля, 2009
Дело было не в бобине… или как заставить плагин FIVe3D_make_typography_v2.0 работать
В своем посте Текст в кривые программно или «Крошим шрифт на кусочки» я жаловался, что у меня не работает плагин FIVe3D_make_typography_v2.0 с помощью которого шрифт преобразуется в AS3 класс.
Оказывается, чтобы плагин FIVe3D_make_typography_v2.0 заработал, его надо класть в папку, где находятся настройки программ - в Windows это:
C:\Documents and Settings\…YourUserNameHere…\Local Settings\Application Data\Adobe\Flash CS4\en\Configuration\WindowSWF
Поскольку эта папка является скрытой, то сначала надо включить показ скрытых папок в свойствах обозревателя.
Кто бы мог подумать! Я совал плагин в папку WindowSWF находящуюся в Program files и уже всю голову сломал пытаясь понять, какого черта он не работает! И ведь в инструкции по установке об этой мелочи ни слова не сказано - поди догадайся. Я узнал о том, как это победить, когда посмотрел урок Building Custom Flash Panels Ли Бримелоу на gotoAndLearn о том, как пишуться плагины к flash IDE.
Что касается получения информации о символах - то все оказалось просто. Плагин FIVe3D_make_typography_v2.0 каждый символ по очереди помещает на сцену - конвертирует в кривые, потом парсит информацию о шейпе, а в итоге в output выдает листинг AS3 класса с описанием шрифта. Все это дело работает благодаря доступу к внутренним функциям Flash IDE, подробнее об этом можно почитать в справочном руководстве к флешу - в разделе Extending Flash. Жаль что этими средствами можно пользоваться только внутри flash IDE. Это я все к тому, что пока мои поиски на тему “можно ли программно device font превратить в кривые” пока не привели к успеху.
И, на закуску, руссифицированный вариант эксперимента со шрифтами.
прячу это малоудачное гавно под кат, ибо теперь есть вариант поудачнее (см. пост выше)
Еще несколько важных фактов о производительности Pixel Blender’а
В блоге Дэвида Ленартса появился интересный тест производительности Пиксел Блендера. В частности интересно, что при работе с фильтами Pixel Blendera:
BitmapData быстрее чем ByteArray а он в свою очередь быстрее, чем Vector.<Number> !
- ShaderJob on BitmapData: 92-99ms
- ShaderJob on ByteArray: 147-172ms
- ShaderJob on Vector.<Number>: 167-192ms
- BitmapData is ~40% быстрее чем ByteArray
- BitmapData is ~47% быстрее чем Vector.<Number>!!
Операторы сравнения дают значительное падение производительности.
В своем тесте Дэвид делает тест, где вычисления не производятся для пикселей с alpha==0. При этом даже если таких пикселей около половины - время вычислений вырастает:
- BitmapData: 134-192ms - ~47% потеря скорости!!!
- ByteArray: 147-172ms - ~22% потеря скорости
- Vector: 192-213ms - ~27%потеря скорости
Не используйте input в качестве output
Лучше иметь два разных BitmapData. Дело в том что Flash player делает временную копию источника, что увеличивает время вычислений фильтра.
- BitmapData: 207-218ms - ~30% потеря скорости
- ByteArray: 256-271ms - ~65% потеря скорости
- Vector: 276-293ms - ~40% потеря скорости
На своем опыте могу сказать, что все эти нюансики складываются иногда в очень неприятные тормоза.
Font Blender. Превращаем текст в математические кривые.
И, наконец, я сделал то, что хотел - дробление и превращения текста в трехмерные, математические, абстрактные фигуры! Для этого пришлось твинить конечные и контрольные точки отрезков. Фактически для каждого обломка надо одновременно анимировать 6 или 9 параметров, в зависимости от типа отрезка. При этом, конечные точки, куда должен прилететь отрезок, вычисляются по формулам фигур лиссажу, которые продемонстрированы здесь и здесь (есть исходники).