Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 19.07.2009, 01:48
Герыч вне форума Посмотреть профиль Отправить личное сообщение для Герыч Найти все сообщения от Герыч
  № 1  
Ответить с цитированием
Герыч
 
Аватар для Герыч

блогер
Регистрация: Apr 2009
Адрес: НиНо
Сообщений: 185
Записей в блоге: 12
Cool Рендеринг воды и нечто вроде metaballs

Уже около месяца в свободное время от прошедшей сессии и поездки во Владикавказ к родне я пытаюсь запрогать воду. Сейчас передо мной стоит задача отображения воды на экране. Вода - 100-200 частиц, которые движутся, взаимодействую друг с другом.

Сейчас добился немного похожего на воду вида... но всё это происходит слишком медленно.
Вот мои примеры:
100 частиц
150 частиц
200 частиц

Тут есть примеры без прорисовки воды. Скорость заметно различается...

Для рисования всего этого дела я поступаю так:

Код AS3:
			var particleBitmap:BitmapData=canvas.bitmapData;
			var w:uint=canvas.width;
			var h:uint=canvas.height;
			var rect:Rectangle=new Rectangle(0, 0, w, h);
			var m:Matrix;
			var i:int;
			var p:BaseParticle;
 
			particleBitmap.lock();
			particleBitmap.fillRect(new Rectangle(0, 0, w, h), 0);
 
			bubbles.clear();
 
			for (i=0; i<ptCount; i++)
			{
				p=pt[i];
				m=new Matrix();
				m.createGradientBox(50, 50, 0, p.xx-25, p.yy-25);
				bubbles.beginGradientFill(GradientType.RADIAL, [0xFF,0xFF], [1,0], [60, 255],m);                    //рисую полупрозрачные кружки от центра к краям
				bubbles.drawCircle(p.xx, p.yy, 25);
				bubbles.endFill();
			}
 
			particleBitmap.draw(bubblesShape);
			particleBitmap.threshold(particleBitmap,rect, new Point(0, 0), "<", 0xA0000000);         //отсекаю всё слишком прозрачное
			particleBitmap.colorTransform(rect,new ColorTransform(1,1,1,1,0,0,0,255));               //убираю прозрачность
			particleBitmap.unlock();
По идее код близок к metaballs, да и результат такой же. Теперь вопрос:
кто-нибудь может придумать быстрее?

Создать новую тему   Часовой пояс GMT +4, время: 04:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
metaball , Вода

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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