Эфект пыли @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
На страницу 1 2  >  Страница 1 из 2 [ Сообщений: 37 ] 
*   Список форумов / Технологии изображения / Flash » ответить » создать топик « | »
Автор Сообщение
Ihor Муж.
новый человек
0
Сообщения: 60
Зарегистрирован: 22.12.05
Откуда: Ukraine - Lviv
Заголовок сообщения: Эфект пыли
Сообщение Добавлено: 9 Август 2006, 13:16:36 
Подскажит пожалуйста как сделать эфект пыли.
Если видили чтонибуть подобное скиньте линк чтобы посмотреть.
eddy444 Муж.
Модератор
315
Сообщения: 14467
Зарегистрирован: 05.05.03
Откуда: NSK
Сообщение Добавлено: 9 Август 2006, 13:52:39 
не пылесолсить с недельку. Сами поняли что спросили? я - нет.
Ihor Муж.
новый человек
0
Сообщения: 60
Зарегистрирован: 22.12.05
Откуда: Ukraine - Lviv
Сообщение Добавлено: 9 Август 2006, 14:23:31 
eddy444, я спросил как это сделать на флэше
Король Муж.
участник
18
Сообщения: 1352
Зарегистрирован: 24.07.04
Сообщение Добавлено: 9 Август 2006, 14:49:53 
Ihor, ты этого не спрашивал


Цитата:
Подскажит пожалуйста как сделать эфект пыли.
Если видили чтонибуть подобное скиньте линк чтобы посмотреть.


_________________
Здравствуй, Олимпийский!
Мигель Муж.
участник
75
Сообщения: 1453
Зарегистрирован: 09.01.04
Откуда: http://design-cafe.ru
Сообщение Добавлено: 9 Август 2006, 14:51:30 
какой пыли?
Лунной, марсианской?
Земной из под дивана, из системного блока, с книжных полок?

Пыли на экране, на полу, на земле, туче летающей пыли или пыли на которой написано
"помой меняя вся чешуся!"

Конкретнее, плз.

_________________
_____
Работа Изображение Работы Изображение О Работе
Ihor Муж.
новый человек
0
Сообщения: 60
Зарегистрирован: 22.12.05
Откуда: Ukraine - Lviv
Сообщение Добавлено: 9 Август 2006, 16:10:02 
Мигель, мне нужно сделать много пыли в комнате
Ihor Муж.
новый человек
0
Сообщения: 60
Зарегистрирован: 22.12.05
Откуда: Ukraine - Lviv
Сообщение Добавлено: 9 Август 2006, 16:11:13 
Король, тут думаю понятно что спрашиваю о флэше, раздел сам за себя говорит
karamba Муж.
старожил
209
Сообщения: 6498
Зарегистрирован: 17.08.05
Откуда: Киев. А шо?
Сообщение Добавлено: 9 Август 2006, 16:37:39 
Ihor, по-моему вы над всеми издеваетесь. Здесь телепатов пока не видно.
eddy444 посоветовал дельно. Потом фоткаете и во флеш (раз во флешевом топике вопрос задали).

_________________
клетчатый!
Ihor Муж.
новый человек
0
Сообщения: 60
Зарегистрирован: 22.12.05
Откуда: Ukraine - Lviv
Сообщение Добавлено: 9 Август 2006, 17:13:12 
karamba, мне нужно сделать анимацию, фотография тут не в тему
karamba Муж.
старожил
209
Сообщения: 6498
Зарегистрирован: 17.08.05
Откуда: Киев. А шо?
Сообщение Добавлено: 9 Август 2006, 17:19:11 
Ihor, вы допишетесь до того, что тему закроют и правильно сделают!
Вы можете по-людски описать что именно и как вы себе видите? Или за вас надо еще придумать, как, какая и на чем эта пыль будет и что в ней надо анимировать?

_________________
клетчатый!
Мигель Муж.
участник
75
Сообщения: 1453
Зарегистрирован: 09.01.04
Откуда: http://design-cafe.ru
Сообщение Добавлено: 9 Август 2006, 17:33:47 
оффтопик:
Короче ребята, такая тема.
Я сайт придумал.
Значится - много пыли.
Анимция флешовая.
ПОдскажите, на что пыль положить, чтобы было красиво?
И еще вопрос - чем сайт наполнить, чтобы пыль была втему?

_________________
_____
Работа Изображение Работы Изображение О Работе
eddy444 Муж.
Модератор
315
Сообщения: 14467
Зарегистрирован: 05.05.03
Откуда: NSK
Сообщение Добавлено: 9 Август 2006, 18:14:18 
Ihor, анимацию чего?

PS Фотография во флэше очень в тему. Она отлично в него вставляется и анимируется.
nuran
«Лектор»
46
Сообщения: 1569
Зарегистрирован: 21.05.04
Сообщение Добавлено: 9 Август 2006, 19:12:54 
анимацию пыли? ищите всё про системы частиц и зубрите actionscript

_________________
blog : flash / unity
kotletov
новый человек
3
Сообщения: 27
Зарегистрирован: 23.04.05
Откуда: музгва
Сообщение Добавлено: 9 Август 2006, 20:39:24 
рандомом линесы накидай на екран, вот тебе и пыль :chih:
Король Муж.
участник
18
Сообщения: 1352
Зарегистрирован: 24.07.04
Сообщение Добавлено: 9 Август 2006, 22:02:35 

nuran писал(а):
анимацию пыли? ищите всё про системы частиц и зубрите actionscript


.. и получится 3Д-куб

_________________
Здравствуй, Олимпийский!
Eduard Муж.
участник
61
Сообщения: 1629
Зарегистрирован: 24.09.03
Откуда: St.Petersburg , Moscow
Сообщение Добавлено: 9 Август 2006, 22:42:38 
Можно сделать вручную анимацию векторных частиц пыли, либо вручную анимацию png картинок с множеством пылинок, еще можно круговые градиенты анимировать тоже на плотную пыль похоже, или комбинировать все сразу. Можно сделать интерактивные частички пыли (сдвиг от мышки), но скрипт получится тяжелый так как частичек должно быть много.

я делал и не раз, вот например http://flashtown.org/motor/aw04/
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 9 Август 2006, 23:29:17 
собственно nuran дело говорит.
но, боюсь, по-русски об этом нигде еще не написано.

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

благодаря объекту BitmapData d 8ке появилась принципиально новая возможность:
достаточно создать кучу точек-объектов, обсчитать их позицию
и нарисовать на BitmapData объекте.

я сейчас напишу простой пример для нагдядности и закину сюда.
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 10 Август 2006, 00:13:01 
код достаточно воткнуть в рут пустого ролика и тестануть.

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

Код:
import flash.display.BitmapData;
//
this.setBitmapPointClass = function() {
   delete this.setBitmapPointClass;
   var BitmapPoint = function (x, y) {
      this.init(x, y);
   };
   AsBroadcaster.initialize(BitmapPoint);
   BitmapPoint.update = function(picture) {
      this.broadcastMessage("onUpdate", _root._xmouse, _root._ymouse, picture);
   };
   var tmp = BitmapPoint.prototype;
   tmp.init = function(x, y) {
      BitmapPoint._listeners[BitmapPoint._listeners.length] = this;
      this.x = x;
      this.y = y;
      this.xstep = 0;
      this.ystep = 0;
      this.elastic = .1+_global.Math.random()/10;
      this.friction = .89+_global.Math.random()/10;
   };
   tmp.onUpdate = function(x, y, picture) {
      this.xstep += (x-this.x)*this.elastic;
      this.xstep *= this.friction;
      this.x += this.xstep;
      //
      this.ystep += (y-this.y)*this.elastic;
      this.ystep *= this.friction;
      this.y += this.ystep;
      picture.setPixel(this.x, this.y, 0xFF0000);
   };
   _global.BitmapPoint = BitmapPoint;
   ASSetPropFlags(_global, 'BitmapPoint', 7, 1);
};
this.setBitmapPointClass();
// ---------------------
this.onEnterFrame = function() {
   for (var i = 0; i<50; i++) {
      new BitmapPoint(random(Stage.width), random(Stage.height));
   }
   if (BitmapPoint._listeners.length>1000) {
      this.onEnterFrame = this.reDraw;
   } else {
      this.reDraw();
   }
};
this.reDraw = function() {
   var picture_bmp:BitmapData = new BitmapData(Stage.width, Stage.height);
   _global.BitmapPoint.update(picture_bmp);
   _root.attachBitmap(picture_bmp, 10);
};
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 10 Август 2006, 00:34:32 
а в этом примере более наглядно видно, что это за частицы.
распределил по гауссиане.

Код:
import flash.display.BitmapData;
//
this.setBitmapPointClass = function() {
   delete this.setBitmapPointClass;
   var BitmapPoint = function (x, y) {
      this.init(x, y);
   };
   AsBroadcaster.initialize(BitmapPoint);
   BitmapPoint.update = function(picture) {
      this.broadcastMessage("onUpdate", _root._xmouse, _root._ymouse, picture);
   };
   BitmapPoint.explore = function() {
      this.broadcastMessage("onExplore", _root._xmouse, _root._ymouse, picture);
   };
   var tmp = BitmapPoint.prototype;
   tmp.init = function(x, y) {
      BitmapPoint._listeners[BitmapPoint._listeners.length] = this;
      this.x = x;
      this.y = y;
      this.xstep = this.ystep=0;
      this.elastic = .1+_global.Math.random()/10;
      this.friction = .89+_global.Math.random()/10;
      this.resetPosition();
   };
   tmp.resetPosition = function() {
      var dist = gaussianRandom()*100;
      var rotation = _global.Math.PI*_global.Math.random();
      this.dist_x = dist*Math.cos(rotation);
      this.dist_y = dist*Math.sin(rotation);
   };
   function gaussianRandom() {
      var a, b, c;
      do {
         a = 2*_global.Math.random()-1;
         b = 2*_global.Math.random()-1;
         c = a*a+b*b;
      } while (c>=1);
      return b*_global.Math.sqrt((-2*_global.Math.log(c))/c);
   }
   tmp.onUpdate = function(x, y, picture) {
      this.xstep += (this.dist_x+x-this.x)*this.elastic;
      this.xstep *= this.friction;
      this.x += this.xstep;
      this.ystep += (this.dist_y+y-this.y)*this.elastic;
      this.ystep *= this.friction;
      this.y += this.ystep;
      picture.setPixel(this.x, this.y, 0xFF0000);
   };
   _global.BitmapPoint = BitmapPoint;
   ASSetPropFlags(_global, 'BitmapPoint', 7, 1);
};
this.setBitmapPointClass();
// ---------------------
this.onEnterFrame = function() {
   for (var i = 0; i<50; i++) {
      new BitmapPoint(random(Stage.width), random(Stage.height));
   }
   if (BitmapPoint._listeners.length>1000) {
      this.onEnterFrame = this.reDraw;
   } else {
      this.reDraw();
   }
};
this.reDraw = function() {
   var picture_bmp:BitmapData = new BitmapData(Stage.width, Stage.height);
   _global.BitmapPoint.update(picture_bmp);
   var k = 5;
   while (k--) {
      BitmapPoint._listeners[random(BitmapPoint._listeners.length)].resetPosition();
   }
   _root.attachBitmap(picture_bmp, 10);
};
nuran
«Лектор»
46
Сообщения: 1569
Зарегистрирован: 21.05.04
Сообщение Добавлено: 10 Август 2006, 04:34:59 
http://local.wasp.uwa.edu.au/~pbourke/m … index.html

_________________
blog : flash / unity
nuran
«Лектор»
46
Сообщения: 1569
Зарегистрирован: 21.05.04
Сообщение Добавлено: 10 Август 2006, 04:39:03 

_iv писал(а):
но, боюсь, по-русски об этом нигде еще не написано



полно статей, просто они не для AS заточены, а под Си, Яву и др.
http://www.google.ru/search?hl=ru&q=%D1 … Google&lr=


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

благодаря объекту BitmapData d 8ке появилась принципиально новая возможность:
достаточно создать кучу точек-объектов, обсчитать их позицию
и нарисовать на BitmapData объекте.



Ты наверно хотел сказать нормально визуализировать, потому что система частиц — это набор точек, взаимодействующих между собой по определённым правилам.

_________________
blog : flash / unity
diflux Муж.
участник
8
Сообщения: 1051
Зарегистрирован: 10.07.02
Откуда: Moscow
Сообщение Добавлено: 10 Август 2006, 11:09:12 
nuran, _iv, Не смущайте автора топика, если он такие вещи спрашивает, значит флеш сегодня утром открыл, максимум вчера.
eddy444 Муж.
Модератор
315
Сообщения: 14467
Зарегистрирован: 05.05.03
Откуда: NSK
Сообщение Добавлено: 10 Август 2006, 12:03:35 
нормально все. Несколько неожиданно, что столь, мягко говоря, некорректно поставленный вопрос привел к столь вообще полезным комментариям.
diflux Муж.
участник
8
Сообщения: 1051
Зарегистрирован: 10.07.02
Откуда: Moscow
Сообщение Добавлено: 10 Август 2006, 12:18:11 
eddy444,
Ага,
главное между собой всё выяснить :)
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 10 Август 2006, 22:36:44 
побаловался: гейзер
Код:
import flash.display.BitmapData;
//
this.setBitmapPointClass = function() {
   delete this.setBitmapPointClass;
   var BitmapPoint = function (x, y) {
      this.init(x, y);
   };
   AsBroadcaster.initialize(BitmapPoint);
   BitmapPoint.update = function(picture) {
      this.broadcastMessage("onUpdate", picture);
   };
   var tmp = BitmapPoint.prototype;
   //
   var gravity = 1;
   var ground = 600;
   var center = Stage.width/2;
   tmp.init = function(x, y) {
      BitmapPoint._listeners[BitmapPoint._listeners.length] = this;
      this.x = x;
      this.y = y;
      this.xstep = this.ystep=0;
      this.elastic = .01+_global.Math.random()/10;
      this.friction = .89+_global.Math.random()/20;
   };
   function gaussianRandom() {
      var a, b, c;
      do {
         a = 2*_global.Math.random()-1;
         b = 2*_global.Math.random()-1;
         c = a*a+b*b;
      } while (c>=1);
      return b*_global.Math.sqrt((-2*_global.Math.log(c))/c);
   }
   tmp.onUpdate = function(picture) {
      if (this.y<ground) {
         this.ystep += gravity;
         this.xstep *= .98;
      } else {
         this.ystep -= gravity;
         this.xstep += (center-this.x)*.01;
         this.xstep *= this.friction;
         var dist = this.x-center;
         if (dist>-5 && dist<5) {
            this.ystep += -Math.random()*30-10;
            this.xstep += -Math.random()*6+3;
         }
      }
      this.ystep *= this.friction;
      this.x += this.xstep;
      this.y += this.ystep;
      picture.setPixel(this.x, this.y, 0xFF0000);
   };
   _global.BitmapPoint = BitmapPoint;
   ASSetPropFlags(_global, 'BitmapPoint', 7, 1);
};
this.setBitmapPointClass();
// ---------------------
this.onEnterFrame = function() {
   for (var i = 0; i<50; i++) {
      new BitmapPoint(random(Stage.width), random(Stage.height));
   }
   if (BitmapPoint._listeners.length>1000) {
      this.onEnterFrame = this.reDraw;
   } else {
      this.reDraw();
   }
};
this.reDraw = function() {
   var picture_bmp:BitmapData = new BitmapData(Stage.width, Stage.height, true);
   _global.BitmapPoint.update(picture_bmp);
   _root.attachBitmap(picture_bmp, 10);
};
eddy444 Муж.
Модератор
315
Сообщения: 14467
Зарегистрирован: 05.05.03
Откуда: NSK
Сообщение Добавлено: 11 Август 2006, 10:05:43 
_iv, Спасибо, а я давно мечтаю получить систему аналогичную 3д редакторам - когда можно быстро создать эффект с частицами, генерируемыми эмиттером любой сложной (а еще лучше анимируемой ) формы, и собирающимися в коллектор другой сложной формы (в максе это аналог старенького плагина sand blaster) пусть у самих частиц были бы простейшие настройки - скорость гравитация и масса.
Может побалуешся на подобную тему какнибудь? :))
Кстати растровую картинку на пиксели таким образом наверное тоже можно "распылить" ?
nuran
«Лектор»
46
Сообщения: 1569
Зарегистрирован: 21.05.04
Сообщение Добавлено: 11 Август 2006, 11:42:58 
eddy444, ах, мечты, мечты, а главное — на халяву


eddy444 писал(а):
Кстати растровую картинку на пиксели таким образом наверное тоже можно "распылить" ?



можно

_________________
blog : flash / unity
Harlequin Муж.
соучастник
5
Сообщения: 935
Зарегистрирован: 01.05.04
Откуда: Moscow
Сообщение Добавлено: 11 Август 2006, 12:50:49 
Спасибо, Иван, попробовал - очень прикольно. Я штучки с подобным эффектом раньше руками отрисовывал.

_________________
{ Арлекин Interactive }
eddy444 Муж.
Модератор
315
Сообщения: 14467
Зарегистрирован: 05.05.03
Откуда: NSK
Сообщение Добавлено: 11 Август 2006, 19:59:53 
когда мне нужно чтото под конкретный проект - я плачу, причем нормально. А "побаловатся" - да нахаляву.
Punk T-34 Муж.
участник
1
Сообщения: 1265
Зарегистрирован: 17.02.06
Откуда: Бахрейн
Сообщение Добавлено: 11 Август 2006, 22:52:28 
так анимация частиц использует 3d матрицу или я чего-то не понял? Где можно узанть об этом по-подробнее?

оффтопик:
_iv, результат первого варианта кода похож на соплю, на пальце от которой не можешь отделаться, забавно :)

_________________
• NORDSKILL •
nuran
«Лектор»
46
Сообщения: 1569
Зарегистрирован: 21.05.04
Сообщение Добавлено: 12 Август 2006, 10:26:20 
Punk T-34, я же ссылку дал, выше смотри

_________________
blog : flash / unity
nuran
«Лектор»
46
Сообщения: 1569
Зарегистрирован: 21.05.04
Сообщение Добавлено: 12 Август 2006, 10:28:35 
если надо в 3d — делаешь три координаты, если надо на плоскости — две, вот и вся разница

_________________
blog : flash / unity
Мигель Муж.
участник
75
Сообщения: 1453
Зарегистрирован: 09.01.04
Откуда: http://design-cafe.ru
Сообщение Добавлено: 12 Август 2006, 11:03:16 
Сам периодически открываю illusion и думаю - надо написать класс Particles. Что бы все эти мелочи организовать в кучу...
И как обычно нет времени.

_________________
_____
Работа Изображение Работы Изображение О Работе
BrunecV Муж.
соучастник
44
Сообщения: 572
Зарегистрирован: 14.01.05
Откуда: //тундра
Сообщение Добавлено: 17 Август 2006, 11:27:19 
Суппер!!! Хорошо быть "Монстром" :laugh:
Да к стати про растр очень интересно, но как!? :lamer:

_________________
Любитель
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 1 Сентябрь 2006, 16:58:14 
сорри за долгое молчание - я был в отпуске.
попробую по-порядку.

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

так что не всё так просто.
сделать не проблема, проблема сделать так, чтобы не тормозило.

распыление картинки:
да, это вполне возможно, просто нужно учесть, что картинка не может взорваться вся,
если она содержит более 500-1000 пикселов - по причине тормозов.
т.е. можно сделать взрыв картинки размером не более 30x30.

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

также довольно интересный вариант получается, если динамически срисовывать битмап с экрана и баловаться уже с ним.
Нокс с этим как-то игрался, я сейчас попрошу его что-нибудь показать.
*   Список форумов / Технологии изображения / Flash « | » » ответить » создать топик
На страницу 1 2  >  Страница 1 из 2 [ Сообщений: 37 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100