2

使用带有新 Molehill API 的 Flash 11 RC1,我想启用背面剔除。测试版文档非常模糊,但该示例暗示 Molehill 希望正面三角形逆时针缠绕,这很正常。

但是,当我的多边形逆时针缠绕时,我得到了完全相反的行为——换句话说,就好像与其自己的例子相反,Molehill 期望正面的三角形顺时针缠绕。由于文档从未明确说明哪个绕组是正确的,我很难过。

我不想只是翻转我所有的三角形,直到它看起来正好在我 100% 了解 Molehill 真正想要的东西之前,因为这很有可能隐藏一个基本的误解。

我正在使用简单的透视投影(下面关于 .transpose() 的注释:因为 copyRawDataFrom 期望数据以列为主,并且我讨厌在代码中查看的方式,我决定只输入它以行为主,然后转置矩阵- 所以起诉我:P):

        var y:Number = 1.0 / Math.tan(pFOV / 2.0);
        var x:Number = y / pAspectRatio;
        _projectionMatrix.copyRawDataFrom(new<Number>[
                x       , 0        , 0                       , 0,
                0       , y        , 0                       , 0,
                0       , 0        , pFar/(pNear-pFar)       , pFar*pNear/(pNear-pFar),
                0       , 0        , -1                      , 0
            ]);
        _projectionMatrix.transpose();

有什么线索吗?

4

1 回答 1

0

您可以使用 Context3D.setCulling 更改 molehill 中的背面剔除。参见: http ://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/display3D/Context3D.html#setCulling ()

哪一边是正面还是背面取决于您的模型输入数据,所以试错是您最好的选择。只有两种选择:)

于 2011-11-08T07:44:45.453 回答