Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как граммотно создать цветовую карту для DisplaceMap? (http://www.flasher.ru/forum/showthread.php?t=113113)

Crash512 19.06.2008 00:34

Как граммотно создать цветовую карту для DisplaceMap?
 
Вложений: 2
Доброго времени суток, господа!

Вопрос в следующем: как создаются карты для эффекта DisplacementMapFilter? Посмотрев исходник товарища iNils, я увидел, что вот такая карта (см.вниз) делает такое искажение (см.вниз-вправо). Как добиться других искажений, я плохо понял. Пытался эксперементировать с градиентов в фотошопе, но выходит всякий неадекват. Нужны мне следующие формы - (см. прикреплённый файл с формами).

Код:

var bmp = BitmapData.loadBitmap("displacementMap2");
mc.filters = [new DisplacementMapFilter(bmp, new Point(),1, 4, 0, 450, 'color',0xffffff, 0x00)];

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

Если кто может помочь советом, я буду очень благодарен. Заранее всем спасибо...

Волгоградец 19.06.2008 10:29

http://www.flasher.ru/forum/showthread.php?t=112053

silin 19.06.2008 12:56

имхо, дешевле будет получить карту не градиентами, а через setPixel, обычной арифметикой вычисля смещение
подправленный на setPixel пример из хелпа:
Код:

import flash.filters.DisplacementMapFilter;
import flash.display.BitmapData;
import flash.geom.Point;


var txtBlock:MovieClip = createTextBlock();
var mapBitmap:BitmapData = createMap(txtBlock._width, txtBlock._height);
var filter:DisplacementMapFilter = new DisplacementMapFilter(mapBitmap, new Point(0,10), 1, 1, 0, 200, "clamp", 0, 0);

txtBlock.filters = [filter];

function createMap(w:Number, h:Number):BitmapData
{
        var bmp:BitmapData = new BitmapData(w, h);
        for(var i=0;i<w;i++){
                for(var j=0;j<h;j++){
                        var r=int(128*(1+i/w*j/h));
                        bmp.setPixel(i,j,r<<16);
                }
        }
        return bmp;
}

function createTextBlock():MovieClip
{
        var txtBlock:MovieClip = this.createEmptyMovieClip("txtBlock", this.getNextHighestDepth());
        txtBlock.createTextField("txt", this.getNextHighestDepth(), 0, 0, 0, 0);
        txtBlock.txt.autoSize="left";
        txtBlock.txt.text = "TEXT & filter";
        txtBlock.txt.setTextFormat(new TextFormat("_sans",48,0, true));
        return txtBlock;
}



Часовой пояс GMT +4, время: 13:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.