如何使用 ActionScript3 将矩形转换为梯形
我的梯形是 3D 房间的地板,我想对其进行纹理化(位图瓷砖)。
_____________
| | | |
| |_____| |
| / \ |
| / trapez.\ |
|/__________\|
如何使用 ActionScript3 将矩形转换为梯形
我的梯形是 3D 房间的地板,我想对其进行纹理化(位图瓷砖)。
_____________
| | | |
| |_____| |
| / \ |
| / trapez.\ |
|/__________\|
这取决于程序中如何表示“矩形”。几个选项:
如果您的矩形是矢量,并且您可以访问锚点:
---> o------o <---
| |
| |
o------o
变成:
o--o
/ \
/ \
o------o
只需翻译两个顶点并将它们相互压缩。
如果那个“矩形”实际上是一个DisplayObject
,您将需要“缝合”两个相同的 DisplayObject 来创建一个新的。此页面包含您想要的示例以及示例代码。
另一种选择是使用Papervision3D - 它使用上述渲染方法作为基础。
这个有点棘手,但它是一种选择。您可以使用此处描述的置换贴图。代码是 AS2,但“移植”应该相当简单。
作为这个答案,我建议您使用 Papervision3D(请参阅第 3 个选项)来执行此操作,因为您可能希望在“房间”周围移动相机。它还将照顾其他墙壁。
这个想法是将其划分为三角形,然后对它们执行仿射变换(使用矩阵)...... senocular 提供了示例代码(用于 AS2)......
网上也有一些库,但我现在找不到...
如果您的目标是 FlashPlayer 10,您可以通过旋转剪辑的旋转值来实现,有关详细信息,请参阅 Mike Chambers的这篇文章。
否则,您将需要像 Papervision 这样的 3D 引擎。在 Flash Player 9 中进行非仿射变换没有简单的方法。
祝你好运。