【问题标题】:From Rectangle into trapezoid从长方形变成梯形
【发布时间】:2010-12-23 22:42:51
【问题描述】:

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

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

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

【问题讨论】:

  • 请详细说明您想要什么。

标签: actionscript-3 matrix transform


【解决方案1】:

这个想法是将它分成三角形,然后对它们执行仿射变换(使用矩阵)...... senocular provided sample code(对于 AS2)...

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

【讨论】:

  • 这基本上就是 Papervision 的做法。不妨使用它,这是当今事实上的标准,但任何其他 3D 引擎也可以这样做。
  • 有时,文件大小在 Flash 开发中确实很重要...但是是的,您当然也可以从 3D 引擎中提取代码... :)
  • 只是看不到重新发明轮子的必要!如果问题被问到如何做,那么提问者可能不会很快为自己做这件事。开发时间有时也是软件项目的一个因素! ;)
【解决方案2】:

这取决于“矩形”在您的程序中的表示方式。几个选项:

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

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

    变成:

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

    只需平移两个顶点并将它们相互压缩。

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

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

  4. 这个有点棘手,但它是一个选项。您可以按照here 的说明使用置换贴图。代码是AS2,但“移植”应该相当简单。


编辑

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

【讨论】:

  • 抱歉,在发表我的评论之前没有注意到您的 Papervision 参考。问候,AlecMcE
  • @alecmce:不过,您确实带出了 Flash10 的 3D 选项。我忘了那个。
【解决方案3】:

如果您的目标是 FlashPlayer 10,您可以通过旋转剪辑的旋转值来实现,请参阅This post form Mike Chambers 了解详情。

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

祝你好运。

【讨论】:

    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 2011-09-03
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    相关资源
    最近更新 更多