8

3D空間でわずかに歪んだり曲げたりしようとしているUIView(したがってCALayer)があります。つまり、私の UIView がフラット ラベルであり、ビール瓶を部分的に包み込みたいとします (360 度ではなく、「片側」のみ)。

ビューのレイヤーに変換を適用することでこれが可能になると考えましたが、私が知る限り、この変換はレイヤーの回転、スケール、および平行移動に一様に制限されています。控えめに言っても、この時点で私の線形代数はぼやけているので、ここで間違っている可能性があります。

どうすればこれを達成できますか?

4

3 に答える 3

3

Core Animation でできる最善の方法は、区分線形近似を行うことです。

たとえば、「円柱」を 8 つのセグメントに分割し、次のように配置できます。

  _
 / \
|   |

それらにすべて同じイメージを与えることができますが、翻訳を変更して、それらが端に並ぶようにします。次に、それぞれに変換を行います (単純な水平方向の圧縮、または遠近感を求める場合は一種の「キーストーン」のいずれか)。

実際には、おそらく 8 つ以上のセグメントを使用したいと思うでしょう。ビューの端近くに集中することに注意してください。

この CSS アニメーションは、インスピレーションを与えるかもしれません。

于 2010-03-11T02:07:10.570 に答える
2

Apple のサンプル コードPVRTextureLoaderを見てください。 これは、サーフェス (この場合は円柱) にテクスチャ (ラベル) を表示する方法を示す OpenGL プロジェクトです。

Jeff LaMarche は、Open GL を使い始めるための素晴らしいチュートリアルを投稿しました。

于 2010-03-15T18:33:32.083 に答える
1

このページにはいくつかの「歪み」の例があります: http://www.sgi.com/products/software/opengl/examples/more_samples/

私は(正直に言って)それを行う方法がわかりませんが、このページをかなり長い間ブックマークして、メッシュ/グリッドでUIViewをワープ/モーフしようとしました。

幸運を祈ります。

^.^

于 2010-03-16T10:12:13.403 に答える