2016-04-11 19 views
1

私は1つの布の画像(実際に見えるようにシャドーエフェクトを持つ女性のエスニックトップ)を作成しようとしています。右端に表示されるので、上の色が変わりますが、影の効果は変わらないはずです。イメージを変更hue libgdx

私はこれにlibgdxを使用しています。私は入力トップ画像からテクスチャを作成し、リニアフィルタを使用してスムージングしました。元トップが次のようになります。Original Top

私が上に配置する新しい布は次のとおりです。New Cloth

当初、私は、HSV空間にRGB空間からシャツのすべてのピクセルを変換します。私はシャツから色相、新しい布から彩度、明度を(私は、彼らが低輝度を持って、影を取らなければならない)使用

  1. :私は、上記の問題を達成するための4つのメソッドを試してみました。ここで問題となるのは、上部の明るさが低いためにファブリックの色が明るくなることです(明るさは上から来る)。これは、以下の画像を生成する: enter image description here

  2. 私は新しい布から色相、彩度を使用し、上から輝度をカットオフに設定します。 70%がカットオフです。ここでの問題は、布地が暗い影のように明確ではないということである。 enter image description here

  3. Iは、各画素での輝度を計算するために、Zスコアを用います。ブラウスの各ピクセルでの明るさのzスコアは、布の明るさを調整するために使用されます。すべてのピクセルのzスコアが同じにされ、ファブリックの明るさが計算されます。この画像も許容あまり見ていない: enter image description here

私は上記のシナリオを実現するために使うべきアプローチに助けを必要としています。私は正しい道を歩いているか、まったく間違っていることをしています。バックグラウンドとトップカラーが同じになるので、外の色を削除する必要がありますか?

+0

はGimpの中でこれを設定してみてください。画像を1つのレイヤーに置き、2つ目のレイヤーに色を塗りつぶします。次に、必要なものが見つかるまで、最上位レイヤのさまざまなブレンドオプションを試してみましょう。 Gimpブレンドモードの方程式をオンラインで検索し、選択したものを使用してSpriteの頂点カラーで同じことをするシェーダを作成できます。 – Tenfour04

+0

@ Tenfour04 - 助けてくれてありがとう。しかし、私は50以上の新しい生地があり、新しい生地が毎週入ってくると、これはあまりにも手動になります。私はちょうどクリックして新しい色のトップを生成したい、非技術者のためのシステムを作りたいと思います。ですから、私はlibgdx/javaコード内のすべてをコーディングする必要があります。他のライブラリを使用している可能性があります。私はまだそれを考え出している。 –

+1

私はあなたが私の提案を誤解していると思います。その結果、アプリケーション内のすべての色を再現するために使用できる単一のシェーダが得られます。 – Tenfour04

答えて

0

まず、LibGDXがあるかどうかはわかりません。あなたが実装したいもののために適切かつ最適なツール。それはむしろ、例えばOpenCV mobileのような画像処理と接続され、ライブラリのための仕事のように見える私のために。

真実は、私はまだそれを使用していないということである(IもののOpenCV自体にいくつかの経験がある)、そして高速googleingは、libGDXとこれを統合する方法についての公式のチュートリアルを返さなかった(私は確かに可能だが)。


01とにかく

- あなたは、このような色を操作するためにLibGDXを使用したい場合は、SpriteBatch「エス方法あなたは物事をレンダリングするために使用しているSpriteBatchをカラー化するために使用することができます

void setColor(Color tint) 

を持っています。

  • 色合いなし::

    batch.begin(); 
    batch.draw(img, 0, 0); 
    batch.end(); 
    

    Sprite Batch without tint

  • 色合いが適用:

    batch.begin(); 
    batch.setColor(Color.GREEN); 
    batch.draw(img, 0, 0); 
    batch.end(); 
    
    によりデフォルトに

    は、あなたが見ることができるような効果があるプロジェクト生成しました

    Sprite Batch with tint applied


また、その着色画像は、あなたはそれが背景だから画像を切り出し、.PNG形式で保存する必要があるので、それはまた、背景を色付けすることを意味しますナイーブです注意してください。

は、この例を見てみましょう:

Tint image without background

+0

Libgdxでこれをやっています。メッシュの作成や三角形の移動など、これをさらに修正する予定です。また、私は上記のことはあらかじめ定義された色、または単色についてのみ動作すると思います。私はトップに置くために多くのファブリックを持っています。ストライプ、チェッカーなどがありますので、上記のことはうまくいかないと思います。 –

+0

あらかじめ定義されていますが、 'Color c = new Color(0.2f、0.3f、0.4f、1);'のようにRGB値を定義することはできません。固体 - はい残念なことに、色合いはバッチ全体に唯一の色を設定しています。あなたの写真をスライスにカットし、例えばストライプなどを実現するために設定された色合いで互いに重なり合わせることができます。 pixmap上で手作業での反復を避け、いくつかの手順でピクセルをカラー化していますが、正直言って少なくとももう一つの解決策があるのか​​は分かりません... –

+0

ここではhsv空間を使った操作が必要です。私はそれがどのようにできるかわかりません。私はhttp://www.houseofblouse.com/design/u-neck-2に似た何かをしたいと思います。事実、それよりも優れたものです。 –

関連する問題