2011-11-04 25 views
1

可以說我有一個顯示枕頭圖像的android應用程序。當有人觸摸圖像並按下屏幕時,我想要轉換圖像以顯示壓力的效果。例如如果有人按下了枕頭的圖像,那麼在觸摸點的圖像中會出現凹陷,就好像它已經被按下一樣。如何轉換圖像以顯示觸摸所施加的壓力?

我在網上搜索了關於如何做,但找不到任何的指針。是否有任何圖像轉換算法可以模擬軟按下的東西?

任何指向代碼,庫或研究論文的指針都會很棒。

我不希望它是絕對完美的。任何足夠好的算法都會有所幫助。

回答

0

我壞不看入API演示。在android sdk(BitmapMesh)中有一個示例,它執行類似的事情,並且實現起來非常簡單。感謝所有的答案。

2

我發現,似乎有內置的圖像處理過濾器

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

很多它可以幫助我認爲warpfilter是您正在尋找

+0

謝謝。顯然,warp過濾器可以達到目的。讓我試試看。 – nabeelmukhtar

+0

不幸的是,過濾器需要java.awt。*所以他們不會在Android上工作。我將不得不重做大部分源代碼。 – nabeelmukhtar

+0

我剛纔遇到了同樣的問題,當我需要在android上評估javascript時,在android – Optimus

0

一個這個Java庫不能準確地爲您編寫代碼,但MotionEvent中有一個名爲getPressure()的方法,可以爲您提供所需的變量,以瞭解如何轉換圖像。儘管我敢打賭它很不可靠,可能因設備而異。

2

你有幾種方法,但它本質上是一個藝術問題。

便宜的方式 我將有一個動畫從「無壓力」,以「最強壓力」與透明背景下去。然後我將動畫放在枕頭圖片的頂部,將壓力值映射到動畫中的相應框架。你也可以爲整個枕頭做一個動畫,讓用戶只在中心推動它。

科學方法 您可以模擬用有限元模型(http://en.wikipedia.org/wiki/Finite_element_method)的枕頭,與像攪拌機三維modelisation工具使它,並以某種方式整合導致你的應用程序。

+0

中沒有javax.script謝謝你的出色答案。我寧願嘗試科學方法,儘管看起來很複雜。 – nabeelmukhtar

+0

有一個視頻似乎涵蓋了使用maya進行模擬的主題:http://www.lugher3d.com/tutorials-for-maya/video-tutorial-how-modelling-bed-pillow-with-ncloth。在應用程序中使用結果是另一個問題。由於需要下載帳戶,因此我沒有檢查視頻。 – Simon

1

你知道我正在考慮你正在創建什麼樣的效果,實現效果的最好方法可能不是實時扭曲圖像。 首先你的應用程序將變得非常昂貴(電池和內存),它可能無法令人滿意的低端Android手機表現。另外,即使您自己產生的平均逼真效果也可能涉及大量的試驗和錯誤。

更好的方法是創建10-25幀的動畫效果,您可以使用photoshop(液化工具)或gimp輕鬆實現這一點(如果您擁有的話可以不那麼容易從來沒有使用過這些),

一旦你有框架,只是改變幀由用戶施加的壓力改變