Как преобразовать изображение, чтобы показать давление, оказываемое прикосновением? - PullRequest
1 голос
/ 04 ноября 2011

Допустим, у меня есть приложение для Android, которое показывает изображение подушки. Когда кто-то касается изображения и нажимает на экран, я хочу, чтобы изображение трансформировалось, чтобы показать эффект давления. например Если кто-то нажимает на изображение подушки, на месте прикосновения должно появиться углубление, как если бы оно было нажато в действительности.

Я искал в интернете указатели на то, как это сделать, но не смог их найти. Существуют ли алгоритмы преобразования изображений, которые могут имитировать нажатие чего-то мягкого?

Все указатели на код, библиотеки или исследовательские работы были бы великолепны.

Я не хочу, чтобы это было абсолютно идеально. Любой достаточно хороший алгоритм будет полезен.

Ответы [ 5 ]

2 голосов
/ 04 ноября 2011

У вас несколько подходов, но это по сути художественная проблема.

Дешевый способ У меня была бы анимация перехода от «без давления» к «сильнейшему давлению» с прозрачным фоном. Затем я поместил бы анимацию поверх рисунка подушки, сопоставив значение давления с соответствующим кадром в анимации. Вы также можете использовать анимацию для всей подушки и позволить пользователю толкать ее только в центре.

Научный путь вы можете смоделировать подушку с помощью модели конечных элементов (http://en.wikipedia.org/wiki/Finite_element_method), визуализировать ее с помощью инструмента для 3d-моделирования, например, blender) и каким-то образом интегрировать результат в ваше приложение.

2 голосов
/ 04 ноября 2011

я нашел эту библиотеку Java, которая, кажется, имеет много встроенных фильтров обработки изображений

http://www.jhlabs.com/ip/filters/index.html

это может помочь мне подумать, что warpfilter - это то, что вы ищете

1 голос
/ 05 ноября 2011

Вы знаете, я думал о том, какой эффект вы пытаетесь создать, и лучшим способом достижения этого эффекта может быть не искажение изображения в реальном времени.Во-первых, ваше приложение станет очень дорогим (для батареи и памяти), оно может быть не в состоянии удовлетворительно работать на младших телефонах Android.Кроме того, даже создание среднего реалистичного эффекта может потребовать большого количества проб и ошибок.

Лучший способ сделать это - создать 10-25 кадров анимационного эффекта, который вы хотите отобразить.достигните этого с помощью Photoshop (разжижающий инструмент) или GIMP (хорошо, может быть, не так легко, если вы никогда не использовали их),

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

0 голосов
/ 15 ноября 2011

Я плохо смотрю на демоверсии API.В android sdk (BitmapMesh) есть пример, который делает похожую вещь и очень прост в реализации.Спасибо за все ответы.

0 голосов
/ 04 ноября 2011

Не могу точно написать код для вас, но есть метод с именем getPressure () в MotionEvent, который может дать вам переменную, необходимую вам, чтобы выяснить, как преобразовать ваше изображение.Хотя я бы поспорил, что это довольно ненадежно и, вероятно, варьируется от устройства к устройству.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...