2

如何使用 ActionScript3 将矩形转换为梯形

我的梯形是 3D 房间的地板,我想对其进行纹理化(位图瓷砖)。

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

3 回答 3

4

这取决于程序中如何表示“矩形”。几个选项:

  1. 如果您的矩形是矢量,并且您可以访问锚点:

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

    变成:

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

    只需翻译两个顶点并将它们相互压缩。

  2. 如果那个“矩形”实际上是一个DisplayObject,您将需要“缝合”两个相同的 DisplayObject 来创建一个新的。此页面包含您想要的示例以及示例代码。

  3. 另一种选择是使用Papervision3D - 它使用上述渲染方法作为基础。

  4. 这个有点棘手,但它是一种选择。您可以使用此处描述的置换贴图。代码是 AS2,但“移植”应该相当简单。


编辑

作为这个答案,我建议您使用 Papervision3D(请参阅第 3 个选项)来执行此操作,因为您可能希望在“房间”周围移动相机。它还将照顾其他墙壁。

于 2009-12-07T09:28:22.347 回答
1

这个想法是将其划分为三角形,然后对它们执行仿射变换(使用矩阵)...... senocular 提供了示例代码(用于 AS2)......

网上也有一些库,但我现在找不到...

于 2009-12-07T12:40:42.603 回答
0

如果您的目标是 FlashPlayer 10,您可以通过旋转剪辑的旋转值来实现,有关详细信息,请参阅 Mike Chambers的这篇文章。

否则,您将需要像 Papervision 这样的 3D 引擎。在 Flash Player 9 中进行非仿射变换没有简单的方法。

祝你好运。

于 2009-12-07T10:25:03.937 回答