2013-03-16 4 views
0

У меня возникли проблемы с пониманием того, как работает DisplacementMapFilter. В принципе, я пытаюсь создать вращающуюся планету с помощью комбинации рыбий глаз/маскировки.AS3 Fisheye Effect

Кроме того, как мне это сделать с помощью временной шкалы? Я не слишком хорошо знаком с кодированием в нем, но это скорее проект анимации, чем что-либо еще, поэтому классы не могут быть и речи. Извините за недостаток кода - я просто застрял.

+0

Вы посмотрели документацию? http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filters/DisplacementMapFilter.html и примеры? http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filters/DisplacementMapFilter.html#includeExamplesSummary – Dave

+0

@Dave У меня есть, но я не вижу, как вы можете создать эффект рыбий глаз, основанный на пример. – David

+0

Я не уверен, где вы застряли, поэтому я предполагаю, что это при создании изображения. Проще говоря, если вы используете красный для x и зеленый для y, тогда темно-желтый (128 128, что-то) будет означать, что вы не будете двигаться, а темно-красный (128,0, что-либо) будет означать использование полного смещения y и т. Д. вам нужно подумать о том, как вы хотите, чтобы каждый пиксель двигался. В средствах редактирования изображений есть простой способ сделать это, но в комментарии слишком долго объяснять. Если я прав, что это ваша проблема, дайте мне знать, и я отправлю его в качестве ответа. – Dave

ответ

1

Как отмечено в комментариях выше, это, вероятно, отвечает только на половину проблемы;

Создание изображения карты смещения не слишком сложно с помощью правильных инструментов. Предположим, вы используете Photoshop, GIMP, Fireworks или аналогичные.

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

  • Начать заполнение градиентом. Он должен идти от чистого черного слева до темно-красного справа (в частности, 128,0,0). Добавьте вертикальную заливку от черного вверху к темно-зеленому внизу (конкретно 0,128,0) и объедините их с фильтром LIGHTEN или ADD. Теперь у вас должно быть изображение с черными, красными, зелеными и желтыми углами. Сгладьте.

  • Скопируйте это изображение на другой уровень/независимо от того, какой термин подходит для вашего редактора. Примените любой фильтр перемещения, который вы хотите к нему (возможно, рыбий глаз, возможно, ручная смазка, возможно, преобразование перспективы, что угодно)

  • Добавить третий слой между ними. Наводнение заполняет его темно-желтым (128,128,0) и устанавливает его в режим смешивания ADD/ADDITION. Установите верхний слой в режим смешивания SUBTRACT/SUBTRACTION.

Всё. Вы должны получить в основном желтое изображение, которое будет функционировать как карта смещения.

Update:

Чтобы использовать это в примере программы (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filters/DisplacementMapFilter.html#includeExamplesSummary), заменить функцию createBitmapData с этим:

private function createBitmapData():BitmapData { 
    return myBitmapObject.bitmapData; 
} 

где myBitmapObject это имя экземпляра (я думаю) растрового смещения. Есть более аккуратные способы настройки, но это самый простой способ.

+0

Отличное объяснение. Я проверю его и посмотрю, работает ли он. – David

+0

Ненавижу быть беспокойством, но я не могу заставить его работать. Я привязал всю функцию к кадру и изменил его. Имя экземпляра растрового изображения смещения - Fisheye: http://pastebin.com/MegEvcnb. Когда я тестирую SWF, он работает так, как будто кода нет. – David

+0

Ну, это действительно пример кода. Вы не вызывали его, так что это просто функции, которые сидели там, ожидая запуска. Может быть, если вы удалите строки 1,2 и 4, это сработает, но, как я уже сказал, я не знаком с проектами без чистых кодов. Попробуйте найти в Интернете. Также я считаю, что код будет применять фильтр на весь этап, а не конкретный объект, и будет замещаться только на 0,5 пикселя в x и 30 дюймах y, что вы можете не заметить. При попытке заставить его работать, попробуйте с гораздо большими смещениями (может быть, 200), а затем смягчите их, как только вы поймете, что он работает. – Dave

Смежные вопросы