Как papervision3d трансформирует текстуры? - PullRequest
1 голос
/ 16 мая 2009

Как, в конечном итоге, papervision3d (популярный пакет 3D-рендеринга для Flash) рисует преобразованные текстуры на экране?

Использует ли он для внутреннего использования какой-либо из устройств рендеринга Flash, т. Е. Рисует текстуры в DisplayObjects и трансформирует их, или, например, с помощью 3D MovieClips? Или, может быть, фильтры? Или это в конечном итоге просто считывание пикселей из текстур и рисование их на выходе, как вы это делаете на любой программной платформе?

Я спрашиваю, потому что прямой ответ был бы последним, но после небольшого тестирования кажется, что getPixel и setPixel просто недостаточно быстры для такого подхода, поэтому кажется, что должно быть что-то происходит больше тайн.

Спасибо за любую информацию!

Редактировать - мое резюме ответа : Papervision не выполняет перспективные преобразования как таковые. Он только масштабирует и наклоняет преобразования в каждом треугольнике текстуры, и иллюзия перспективы возникает, если вы используете достаточно треугольников. Аффинные преобразования используют устройство рендеринга Flash, поэтому исключаются дорогостоящие операции с пикселями.

1 Ответ

5 голосов
/ 16 мая 2009

Все это отображается с использованием API рисования. (lineTo) С помощью API рисования вы можете установить скорость bitmapFill, а не цвет, что позволяет рисовать текстуры. Внутренне они преобразуют каждый актив, который вы передаете как текстуру, в объект BitmapData, который будет использоваться при рендеринге. Затем для каждого подразделения (треугольника), которым обладает ваш трехмерный объект, они преобразуются в него, чтобы получить правильные перспективы.

Этот подход все еще очень ресурсоемкий, но быстрее, чем настройка каждого пикселя. Он работает очень похоже на другие программные предметы трехмерного рендеринга, используя методы и теории smae, созданные специально для ActionScript.

...