タグ付けされた質問 「blending」

5
アルファブレンディングとパーティクルを使用して、どのように優れた火災効果を達成できますか?
OpenGLパーティクルエフェクトに次の設定を使用します。 SRC: GL_SRC_ALPHA DST: GL_ONE 添加剤ブレンドを作成します。黒の背景では壮観に見えますが、白にフェードし始めると、明るい色ではひどく見えます。 次に、アルファブレンディングを使用しました。 SRC: GL_SRC_ALPHA DST: GL_ONE_MINUS_SRC_ALPHA これにより、粒子の色に影響を与えることなく他の背景を使用できますが、粒子自体は添加剤ブレンドと比較して鈍く見えます。アルファブレンディングとパーティクルを使用して、どのように優れた火災効果を達成できますか? 添加剤: アルファ: 更新: 以下のDavidのアドバイスに従って、個別のテクスチャを作成し、テクスチャに描画する前にパーティクルエフェクトに加算ブレンドを使用しました。それに伴う問題は、alpha = 0のテクスチャに描画すると、通常は代わりに黒い背景があるため、パーティクルの色付きの部分が世界地図の前に表示されることです。トリックは、2つのテクスチャを使用することでした。黒いテクスチャを作成し、その上に粒子を描きました。次に、このテクスチャからパーティクルのアルファレイヤーを削除し、周囲のすべてのソリッドブラックを効果的に削除し、部分的に表示されているパーティクルをフェードアウトさせます。要するに、厳しいプロセスですが、最終的にそこに着きました: プロセスを投稿したスレッドは次のとおりです。http://www.cocos2d-iphone.org/forum/topic/28707?replies = 8#post-141528 ビデオ:http : //www.youtube.com/watch?v=JptGbEO3b5E

2
複雑な3Dシーンでアルファブレンディングを適切に実装するにはどうすればよいですか?
この質問の答えは少し簡単に聞こえるかもしれませんが、それは私を夢中にさせています。適切なアルファブレンディングメカニズムで処理できる状況が多すぎるため、アルゴリズムごとに欠けているものがあると考えることができます。 これらは私がこれまでに考えた方法です: まず、オブジェクトの深さによる並べ替えについてですが、オブジェクトは単純な形状ではなく、曲線があり、互いにループする可能性があるため、これは単に失敗します。だから、どちらがカメラに近いのか常にわからない。 次に、三角形の並べ替えについて考えましたが、これも失敗する可能性があります。実装方法がわからないので、2つの三角形が互いに通過するという問題が再び発生する可能性があるというまれなケースがあります。繰り返しますが、どちらがより近いかは誰にもわかりません。 次に、深度バッファーを使用しました。少なくとも深度バッファーがある主な理由は、前述した並べ替えの問題が原因ですが、今度は別の問題が発生します。オブジェクトは透明なので、1つのピクセルに複数のオブジェクトが表示される場合があります。では、どのオブジェクトにピクセル深度を保存する必要がありますか? 次に、最前面のオブジェクト深度のみを保存できると考え、そのピクセルを使用して、次の描画呼び出しをどのようにブレンドするかを決定しました。しかし、再び問題が発生しました。2つの半透明の平面の中央に固体平面があると考えてください。最後に固体平面をレンダリングしようとしていましたが、最も遠い平面を見ることができます。そのピクセルの色が1つだけになるまで、2つのプレーンごとにマージすることに注意してください。上で説明したのと同じ理由で、明らかにソート方法も使用できます。 最後に、すべてのオブジェクトをさまざまなレンダーターゲットにレンダーし、それらのレイヤーを並べ替えて最終的な出力を表示することが、私が作業できると思います。しかし、今回はこのアルゴリズムをどのように実装できるかわかりません。
11 3d  blending 

2
2.5Dワールドで深度テストとテクスチャの透明度を一緒に使用するにはどうすればよいですか?
注:私はすでに答えを見つけました(この質問の後に投稿します)-私はそれを正しく行っているのか、それとももっと良い方法があるのか​​と思っていました。 OpenGL ES(JOGL)を使用して「2.5D」アイソメトリックゲームを作成しています。「2.5D」とは、世界が3Dであることを意味しますが、2Dアイソメトリックタイルを使用してレンダリングされます。 私が解決しなければならなかった元々の問題は、テクスチャを順番に(後ろから前に)レンダリングする必要があり、タイルが適切に重なり合って適切な効果が得られるようにすることでした。少し読んだ後、私はこれが「古い帽子」の2Dアプローチであることにすぐに気付きました。3Dワールドはプレーヤーによって変更できるため(これは3D空間のどこにでも表示される可能性があるため)、これを効率的に行うことは困難になりました。深度バッファーを利用するのは理にかなっているようです。これは、私がものを正しい順序でレンダリングすることについて心配する必要がなかったことを意味しました。 しかし、私は問題に直面しました。GL_DEPTH_TESTとGL_BLEND一緒に使用すると、オブジェクトがzオーダーで「ソート」される前にオブジェクトが背景とブレンドされる効果が作成されます(つまり、透明度が必要な場所で奇妙なオーバーラップが発生します)。 問題を説明する疑似コードをいくつか示します(ちなみに、私はAndroidでlibgdxを使用しています)。 create() { // ... // some other code here // ... Gdx.gl.glEnable(GL10.GL_DEPTH_TEST); Gdx.gl.glEnable(GL10.GL_BLEND); } render() { Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); Gdx.gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); // ... // bind texture and create vertices // ... } だから問題は:透明性の重なり問題をどうやって解決するのですか?

1
glBlendFuncによるCocos2Dのブレンドモード
私たちは、PhotoshopとQuartz 2Dで利用できる最も一般的な描画モードを再現しようと試みてきましたが、3つしか考え出せませんでした。 興味のある人のために、ここにあります: 乗算 = GL_DST_COLOR、GL_ONE_MINUS_SRC_ALPHA 画面 = GL_MINUS_DST_COLOR、GL_ONE 線形覆い焼き= GL_ONE、GL_ONE これらのモードやその他のモードをオンラインで試すことができます。この非常に便利なWebサイトhttp://www.andersriggelsen.dk/glblendfunc.php 私たちのOpen GLエクスペリエンスは本当に非常に制限されているため、Cocos2D内で再作成できる追加のブレンドモードを提供していただければ幸いです。 前もって感謝します! アルギリス

2
「通常の」ブレンドモードとOpenGLのトラブル
OpenGLブレンド関数を期待どおりに(または賢明な画像編集プログラムから)期待どおりに機能させるのに苦労しました。例として、次の2つの画像を使用してブレンドします(白い背景では見づらいので、色がラベル付けされます)。 合成する画像 これは私が起こると期待していることです(そしてpaint.netで何が起こるか): 期待される結果 明らかに、openglのデフォルトのブレンド関数は、次のようになります(非常に間違っています)。 glBlendFunc(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA) たくさんのテストの後、これは私が「良い」ブレンド関数を作成するために得ることができる最も近いものです: glBlendFuncSeparate(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA、GL_ONE、GL_ONE_MINUS_SRC_ALPHA) ただし、元の予想結果を振り返ると、一部の色が本来よりも少し暗くなっていることがわかります(中央左部分)。具体的には、それらは(.5アルファのため)カラー値の半分に事前に乗算されており、これを行わない関数を作成することはできません(ほとんど見えない赤い透明部分で奇妙な混合の問題を引き起こすことなしに)。 誰かがこの問題の解決策を知っていますか?ソースであらかじめ乗算されたアルファを使用する必要がありました(ゲームで使用するすべての色をあらかじめ乗算された色に変換するか、各シェーダーに何かを書き込むために追加の作業が必要なため、これを行いたくありません)。 : glBlendFuncSeparate(GL_ONE、GL_ONE_MINUS_SRC_ALPHA、GL_ONE、GL_ONE_MINUS_SRC_ALPHA)(事前乗算なし) 明らかにそれも間違っていますが、これが実際に私がこれまでに得た唯一の正しい結果です。 glBlendFuncSeparate(GL_ONE、GL_ONE_MINUS_SRC_ALPHA、GL_ONE、GL_ONE_MINUS_SRC_ALPHA)(事前乗算された入力) 唯一の問題は、それを画面に表示するための事前乗算をどのようにして取り除くのですか?ブレンドするものごとに追加のレンダーサイクルが必要になる可能性があり、この問題には複雑すぎるように思われるので、私はまだ答えを探しています(OpenGLは非常に広く使用されているため、これについて何かを見つけることができないのは興味深いことです)他の誰かがこの問題に遭遇したと思います)。 出典: オンラインブレンド機能検査- http://www.andersriggelsen.dk/glblendfunc.php 下層イメージ- http://i.stack.imgur.com/XjLNW.png トップレイヤーイメージ- のhttp://i.stack.imgur .com / 9CN6w.png

2
3Dモデルの一部を何かに向けて動的にアニメーション化する方法
私はこの種のアニメーションが通常どのようにコード的に行われるのか知りたいです。 いくつかの例: アップ文字ピック何か-手だけがターゲットに向けてアニメーション化されて http://www.youtube.com/watch?v=rW-7uatehx4 4:50から見たときに武器アッププレーヤーのピック。 キャラクターが棚からぶら下がっている-手が特定の場所(棚)に設定されている http://www.youtube.com/watch?v=SOiwArn4Bmw右手。 キャラクターが何かを見る-頭がターゲットに向けられている(npcがpcを見る)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.