2010-01-20 65 views
4

我已經從Bezier曲線(下面的屏幕截圖)創建了一個「blob」,並且現在想要以它出現僞3D的方式遮蔽它,在所有「左」邊具有較深的陰影,並且所有「右」邊緣上的光線較亮,並且表面本身也許是純白色的「光點」。例如:我會對如何實現this video中使用的陰影感興趣。Java 2D着色/填充

  • 任何人都可以推薦一個很好的方法來實現這一目標嗎?我猜測標準的Graphics2D.fill和setPaint方法可能不夠複雜。
  • 此外,任何人都可以推薦一些很好的資源(最好是免費/在線)以瞭解更多信息嗎?

編輯

一些額外的信息:爲了實現平補作用下面,我創建一個Area對象並使用add(new Area(ellipse))我加入個人Ellipse2DShape s到它,然後最後加入中央多邊形避免在中間留下空白區域。

alt text http://www.freeimagehosting.net/uploads/bc8081cbf2.png

回答

1

的IPhone應用程序可以訪問OpenGL-ES允許在陰影顯著緯度和渲染什麼基本上是有色異面發射照明。除非你願意爲它編寫一個完整的軟件3D庫,否則Java2d肯定不夠複雜。

混合2D和3D也是possible

+0

感謝您的建議。我對圖形還很陌生,因此目前可能會避開3D圖形/ Open GL。也許我可以通過定義將陰影應用於blob邊緣的筆畫來作弊。不知道是否可以根據正在撫摸的路徑的當前方向更改着色顏色。 – Adamski 2010-01-20 12:17:45

1

我在此kineic model中使用了自定義RadialGradientPaint來獲得僞3D效果。我相信在Java 6中有更通用的implementation

+0

謝謝。看起來Java 6的RadialGradientPaint只是以循環方式着色,但也許我可以使用此代碼作爲起點實現我自己的目標。 – Adamski 2010-01-21 09:57:30

+0

我在想你可能會遮住每個橢圓的最大內切圓,用alpha來「羽化」邊緣。 – trashgod 2010-01-21 15:03:45