0

プログラムによってプログラムで定義された行があります。私がやりたいのは、それらに沿ってブラシストロークをレンダリングすることです。

私が望むタイプのブラシは、単純にテクスチャがあり、ほとんどが透明であると思います。パス内のすべてのピクセルを中心にこのテクスチャをレンダリングし、それらをブレンドしてストロークを作成します。

これがうまくいくと仮定して、私はそれがあまりにも高価になることに賭けるつもりです(ipadや他のモバイルチップをターゲットにして、フィルレートとアルファブレンディングを嫌います)

では、他にどのようなオプションがありますか?

リアルタイムで実行できる場合(つまり、パススプラインがフレームごとに更新される場合)、それが理想的です。ただし、そうでない場合は、iPadで1秒以内に実行することもできます(スプラインがノードを接続している場合、ユーザーはノードをドラッグしてスプラインを変換できますが、スプラインをより単純な塗りつぶしに戻すことは許容されます。動き回っていたので、リリースしたらブラシを再計算します)

不思議に思う人のために、太い線が鉛筆で作られたように見えるようにしようとしています。可能な限り実際の生活に見えるようにする必要があります。

ブラシをかけたスプラインをテクスチャにレンダリングすることを検討しましたが、スプラインは任意の長さ、任意の方向にすることができるため、スプライン全体を含むように全体の長方形のテクスチャを割り当てると、コストがかかることになります...

スプラインはレンダリングのために必然的にクワッドに分割されるので、最初にブラシをテクスチャにレンダリングしてから、各クワッドを分離してテクスチャにできるだけきれいに詰め込んだ最適化されたテクスチャを生成することを考えました。

しかし、テクスチャへの2つのレンダリング...最適化されたテクスチャを作成するアルゴリズムにより、クワッドが互いにシームレスにブレンドされるようになります...悪夢のように聞こえますが、それでもリアルタイムにはなりません。

そうそう、openGLのiPadでスプラインにリアルタイムで続く太い鉛筆のような線を描く方法についてのアイデアはありますか?

4

1 に答える 1

1

私の観点からすると、必要なのは次のような線をレンダリングすることです。

  • テクスチャード加工されています
  • エッジがフェードアウトします(つまり、鋭いエッジがありません)
  • スプラインに従います

これらの目標を達成するために、まずスプラインを曲線に近い一連の線分に分割します(必要な精度と必要な速度に応じて、スプラインを多少細かくすることができます)。レンダリングする)。

これらを取得したら、各セグメントを3つのクワッドに作成する必要があります。1つはラインの完全に不透明な部分として機能するラインセグメントの中央を通過し、もう1つはフェードアウトしてフェードアウトするラインの各エッジになります。完全に透明。

2つのセグメントを均等に二等分するベクトルに沿って(つまり、各セグメントと押し出しベクトルの間の角度が等しくなるように)クワッドを押し出すようにするには、少し数学を使用する必要があります。これにより、結合の鈍い部分にギャップがなく、鋭い部分でオーバーラップすることがなくなります。

After all of this, you just need to use the vertex positions as the UV co-ordinates (probably scaled though) and allow the texture to wrap around.

Using this method, you should end up with a mesh that has a solid thick line running through the middle of your spline with "fins" that taper off into complete transparency. This should approximate the effect you want quite closely while only rendering to relevant pixels (i.e. no giant areas of completely transparent pixels) and with very litter memory overhead.


I've been a little vague here as its kind of hard to explain with text alone and without writing an in depth tutorial. If you need more info, just comment on what your stuck on and I'll elaborate further.

于 2010-11-25T14:35:14.683 に答える