четвер, 30 вересня 2010 р.

PerlinNoise + DisplacementMap

Про те, що можна зробити цією комбінацією - можна знайти дуже дагато інформації. А ось ще один варіант:



Клас Fog, основні функції (я ще не знаю, як сюди правильно вставляти код):

private function _doMagic(event: Event): void {
  _canva.lock();
  _drawBMPD();
  _drawLines();
  _smooze();
  _canva.unlock();
}

private function _drawBMPD(): void {
  _val += 0.5;
  _pointOffset1.x = _val;
  _pointOffset2.x = _val * 0.1;
  _deformationMap.perlinNoise(_middleWidth, _middleHeight, 3,
    6456, true, true, 2 | 1,
    false, [_pointOffset1, _pointOffset2, _pointZero]);
}

private function _drawLines() : void {
  varline : Line;

  for(var i: int = 0; i < lines.length; i++) {
    line = lines[i];
    line.draw();
    _canva.draw(line);
  }
}

private function _smooze() : void {
  _canva.applyFilter(_canva, _canva.rect,
    _pointZero, new BlurFilter(3, 2, BitmapFilterQuality.MEDIUM));
  _canva.applyFilter(_canva, _canva.rect,
    _pointZero, new ColorMatrixFilter([ 1, 0, 0, 0, 2,
        .004, 1, 0, 0, 1,
        .003, 0, 1, 0, .5,
        0, 0, 0, 1, 0]));
}

Основна частина функціїї draw класу Line:

for(var w: int = 0; w < _deformationMap.width; w++ ) {
  _value = _deformationMap.getPixel(w, _yIndex) * 0.00001;
  graphics.lineTo(w * _scaleMapX, _value * _scaleMapY);
}

4 коментарі:

  1. Але ж ресурси воно їсть... ух)

    ВідповістиВидалити
  2. Офтоп
    Плін, мало того що іде на жж для підтвердження, так ще й капчу пропонує, після якої знов іде на жж для підтвердження.

    Блогспот)

    ВідповістиВидалити
  3. та ну, як для флешу це ще нормально їсть. у мене всього 10% проца.

    ВідповістиВидалити
  4. да, ця штука зроблена ще досить таки легкою як для флеша на такий ефект - я з нею проморочилась довго на цей рахунок.

    ВідповістиВидалити