1

Haxe で色を混合できるシンプルな照明エンジンを作成しようとしています - API がほとんど同じであるため、フラッシュにタグを付けました。現在、色付きの円を BitmapData にレンダリングしてから、それをゲームの上にレンダリングしていますが、円間の交点をレンダリングするのが非常に困難です。

これが私が求めている効果です。

他の 2 つの図形の交点で構成される図形を描画する方法があるかどうか疑問に思いました (それらは円なので、数学は比較的単純なので、おそらくフラッシュに組み込む必要はありません)。これにより、2 つの円を比較的簡単にレンダリングできますが、3 番目の色を追加するとすぐに、非常に複雑になります... 最悪のシナリオでは、2 つ以上の色を使用することはできません!

最後に、ある種のシェーダーを使用してこの効果を実装することは可能でしょうか? たとえば、ピクセルを描画するたびに、既存の色を見て、2 つの組み合わせを調べます (例: 赤 + 黄色 = オレンジ)。私は Flash のシェーダーについてほとんど知りませんが、Haxe を使用しているので、また違うかもしれません!

ブレンドモードでこの効果をきれいに達成することは不可能だと思います.マゼンタやシアンのようなひどく明るい色は、私の実験からかなり早く生成されます. L*a*b* 色空間を簡単に調査しましたが、実装が非常に複雑 (かつ遅い) ように思われました。

このエフェクトが動作するようになったら、カラー マップでワールド内のピクセル位置を確認し、その結果に基づいてさまざまなエフェクトを適用する予定です。

どんな助けでも大歓迎です!

編集: Javascript にはこの機能が組み込まれているようです: Canvas の 2 つの円の間の交差領域をマークする

4

1 に答える 1

2

かなり複雑な最適化を必要としない/したくない場合は、 BlendModeでBitmapData.drawメソッドを使用して、js/canvas で動作するのと同じ方法で行うことができます。

このメソッドにBitmapDataまたはDisplayObjectを指定して、ターゲットBitmapDataで描画できます。したがって、オプションは、円を一時的なビットマップにレンダリングしてから、必要な (構成) で結果のBitmapDataに描画するか、円のblendModeベクター グラフィックス (プログラムでSpriteGraphicsを使用) を作成してから、ターゲットBitmapDataにレンダリングすることです。同じように(これはより高速だと思いますが、柔軟性は低くなります)。

また、サークルごとではなく、ベクトル グラフィックスでサークル シーン全体を構成することもできますが、プログラムでGraphicsをビルドするときに使用できる構成オプションを今思い出せませんが、その方法を調べる価値があると思います。それも。

于 2016-01-08T18:13:20.673 に答える