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