Отбраковка задней поверхности с помощью Molehill - PullRequest
2 голосов
/ 02 октября 2011

Используя Flash 11 RC1 с новым API Molehill, я бы хотел включить выборку задней поверхности.Бета-документация довольно расплывчата, но пример предполагает, что Молехилл хочет, чтобы передние треугольники вращались против часовой стрелки, что вполне нормально.

Но когда мои многоугольники вращаются против часовой стрелки, я получаю совершенно противоположное поведение -другими словами, как будто вопреки своим собственным примерам Молехилл ожидает, что передние треугольники будут вращаться по часовой стрелке.Поскольку в документации никогда не указывается, какая извилистая верна, я в замешательстве.

Я не хочу просто переворачивать все свои треугольники, пока все не покажется прямо, пока я не получу 100% того, что на самом деле хочет Молехилл, посколькувполне вероятно скрыть фундаментальное недоразумение.

Я использую простую перспективную проекцию (примечание относительно .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();

Есть какие-нибудь подсказки?

1 Ответ

0 голосов
/ 08 ноября 2011

Вы можете использовать Context3D.setCulling для изменения отбраковки задней поверхности в кротовине. Увидеть: http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/display3D/Context3D.html#setCulling()

Какая сторона находится спереди или сзади, зависит от входных данных вашей модели, поэтому пробная версия и ошибка - действительно лучший выбор. Есть только два варианта:)

...