1

スプライトを台形に変換しようとしています。これがないと画像のディテールが失われることがわかっていても、補間についてはあまり気にしません。私が本当にやりたいのは、長方形のスプライトを次のような台形に変換することだけです。


  /      \  
 /        \ 
/__________\

誰かがCGAffineTransformsまたはcocos2dでこれを行ったことがありますか?

4

2 に答える 2

2

あなたが提案している変換はアフィンではありません。 アフィン変換は元に戻せる必要があります。そのため、通常は次のことができます。

  • 規模
  • 回転する
  • せん断 (正方形のように偏ったものにする -> 平行四辺形)
  • 翻訳

しかし、彼らは「絞る」ことはできません。台形を延長すると、左右の辺が特定の場所で交差することに注意してください。それらはもはや平行ではありません。そのため、変換を「元に戻す」ことはできませんでした。その場所に変換するものがあった場合、どこに変換するかを決めることができなかったからです。つまり、変換が並列処理を保持しない場合、スペースが圧迫され、元に戻すことができず、アフィンではありません。

私はコア アニメーションの変換についてあまり知らないので、数学的なことが代替案を見つけるのに役立つことを願っています。

しかし、OpenGL でそれを行う方法は知っていますが、アプリケーションの描画方法を最初からやり直す必要があります。

  1. 必要な結果を正しく想定している場合は、長方形を 3D で作成し、アフィン変換を使用して少し回転させ、(非アフィン) 射影変換を使用して 2D 画像に平坦化します。

  2. 3D 効果を探しているのではなく、本当に角をつまんでおきたい場合はGL_RECT、台形のポイントで を指定し、スプライトをテクスチャとしてマップすることができます。

最も簡単な方法は、フォト エディターで画像を事前に圧縮し、透明な .png として保存し、その画像で四角形を描くことです。

于 2010-01-19T18:48:20.147 に答える