Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Нужен совет про рисовалку. Это даже заказ :) (http://www.flasher.ru/forum/showthread.php?t=184925)

terpimost 30.09.2012 08:45

Нужен совет про рисовалку. Это даже заказ :)
 
Привет, наверно все видели http://www.psykopaint.com/
Кто-то у нас даже делал клон psykopaint (http://flasher.ru/forum/showthread.php?p=966877), но этот человек мне не ответил.
Я тоже делаю одну простую рисовалку и захотелость сделать рисование какой-нибудь кистью (png изображение),
но bitmapdata.draw() вызывать слишком часто работает очень медленно.
Идея по каждому mouseMove рисовать точку или линии состояющую из PNG изображения кисти и находу проводить какие-то монипуляции.

Ребята, короче как сделана то Psykopaint? Я пробовал делать через PixelBender:
По каждому MouseMove отдаем в PB Bitmapdata c фоном, экземпляр кисти, координаты центра кисти и масштаб кисти, а PB возвращает нам BitmapData на которой уже что-то нарисовано — получается очень медленно и с зависаниями. Возможно потому что PB необходимо туда сюда отдать битмапку всю...

Какие вообще тут варианты есть? Наверняка copyPixels тут не подойдет. Экземпляр кисти меняет цвет на кажой координате учитывая цвет фона.
У кого какие идеи?
Я пока думаю что PB может отрисовывать прямую линию, тогда между MouseMove будет рисовать прямые линии. Но каким образом добится эффекта как в Psykopaint?

Если кто-то может сделать клон Psykopaint с точки зрения работы (интерфейс и прочие шняги не нужны), нужен только код ну и простенький пример с одной кистью, то я купил бы.


Очень жду ответа.

artcraft 30.09.2012 13:51

Без примера кода никто не сможет сказать где именно у вас узкое место.
copyPixels сама по себе достаточно быстрая операция скорее всего проблема не в ней.

Я представляю себе работу кисточки так:
эти три шага повторять каждые 50-100мс
1. узнать траекторию курсора (+ можно интерполировать, для плавности)
2. нарисовать мазок в отдельном спрайте или битмапе
3. склеить с фоном


если вы так и делаете, то просто посчитайте сколько миллисекунд занимает каждый шаг

terpimost 30.09.2012 20:37

На Psykopaint кисть меняет свой вид каждый шаг, т.е. битмапка кисти учитывает данные битмапки фона. Как это делать?
Склеивать мазок с фоном это тоже затратная операция и если так делать то стирашка бы у Psykopaint не работала.
Посмотрите как быстро у них работает кисть https://dl.************/u/3024809/sc...36.27%20PM.png
Разве это копипиксельс? Но как тогда это делать?
Если это рисование вектора на спрайте, то тоже как?

caseyryan 30.09.2012 20:50

copyPixels - довольно быстрая процедура

artcraft 30.09.2012 21:12

Цитата:

битмапка кисти учитывает данные битмапки фона
да, зная координаты курсора, легко можно узнать цвет в этой точке
Цитата:

то стирашка бы у Psykopaint не работала
я думаю что стиралка у них просто копирует пиксели из исходной картинки
Цитата:

Если это рисование вектора на спрайте, то тоже как?
у BitmapData есть метод draw()

udaaff 30.09.2012 21:14

terpimost, картинки необходимо выкладывать на форум.

artcraft 30.09.2012 22:19

Забыл спросить, какой бюджет? :~)


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

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