2

ActionScript3 で四角形を台形に変換する方法

私の台形は 3D 部屋の床であり、それをテクスチャ化したい (ビットマップ タイル)。

 _____________
|  |     |   |
|  |_____|   |
|  /      \  |
| / trapez.\ |
|/__________\|
4

3 に答える 3

4

プログラムで「長方形」がどのように表現されるかによって異なります。いくつかのオプション:

  1. 長方形がベクトルで、アンカー ポイントにアクセスできる場合:

    ---> o------o <---
         |      |
         |      |
         o------o
    

    なる:

           o--o
          /    \
         /      \
         o------o
    

    上の 2 つの点を単純に変換し、それらを互いに凝縮します。

  2. その「長方形」が実際にDisplayObjectである場合、同じ DisplayObject を 2 つ「つなぎ合わせ」て新しいものを作成する必要があります。このページには、必要なものの例とサンプル コードがあります。

  3. もう 1 つのオプションは、上記のレンダリング方法をベースとして使用するPapervision3Dを使用することです。

  4. これは少しトリッキーですが、オプションです。こちら で説明されているように、ディスプレイスメント マップを使用できます。コードは AS2 ですが、「移植」するのはかなり簡単なはずです。


編集

この回答に従って、Papervision3D(3番目のオプションを参照)を使用して「部屋」の周りにカメラを移動することをお勧めします。他の壁も同様に処理します。

于 2009-12-07T09:28:22.347 に答える
1

アイデアは、それを三角形に分割し、それらに対して(Matrixを使用して)アフィン変換を実行することです... senocularが提供するサンプルコード(AS2用)...

オンラインにはいくつかのライブラリもありますが、現在は見つかりません...

于 2009-12-07T12:40:42.603 に答える
0

FlashPlayer 10 をターゲットにしている場合は、クリップの回転値を回転させることでそれを行うことができます 。詳細については、 Mike Chambers からのこの投稿を参照してください。

それ以外の場合は、Papervision のような 3D エンジンが必要になります。Flash Player 9 で非アフィン変換を行う簡単な方法はありません。

幸運を。

于 2009-12-07T10:25:03.937 に答える