Flash ActionScript 3 - рисовать статичный 3D-куб - PullRequest
2 голосов
/ 22 марта 2012

Я пытаюсь нарисовать сетку 10x10 с помощью ActionScript 3 с точкой схода позади - поэтому каждый квадрат выглядит так, как будто он идет к экрану (каждый со своей относительной точки зрения).

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

Есть ли способ, которым я могу использовать PerspectiveProjection () в моем случае, когда это не связано сдвижение?Похоже, это именно то, что я хочу, но, похоже, зависит от движения.

Или есть какие-то другие методы для создания трехмерных перспективных объектов?Я бы предпочел использовать внутренние функции AS3, если это возможно.Самый близкий у меня был этот учебник , который я, вероятно, мог бы применить к моей ситуации, но я хочу убедиться, что нет более простого / чистого способа, прежде чем пытаться его сделать.

Спасибо.

1 Ответ

1 голос
/ 22 марта 2012

Вот самый быстрый и, вероятно, самый рекомендуемый способ достижения того, что вы ищете:

Как только вы это сделаете, создайте класс документа и вставьте в него код, который я создал для вас, чтобы вы начали:

package
{
    import org.papervision3d.view.BasicView;
    import org.papervision3d.objects.primitives.Cube;
    import org.papervision3d.materials.utils.MaterialsList;
    import org.papervision3d.materials.ColorMaterial;


    /**
     * Document class.
     * @author Marty Wallace.
     */
    public class Base extends BasicView
    {

        /**
         * Constructor.
         */
        public function Base()
        {

            // Create an array of faces for your cube.
            var faces:Array = [
                "front",
                "back",
                "left",
                "right",
                "top",
                "bottom"
            ];

            // Create a list of materials, which contains a material for each face of the cube.
            var list:MaterialsList = new MaterialsList();


            // Create a new material for each face.
            for each(var i:String in faces)
            {
                // Define the material.
                var material:ColorMaterial = new ColorMaterial(Math.random()*0xFFFFFF);

                // Add your material to the face represented by i.
                list.addMaterial(material, i);
            }


            // Create the Cube.
            var cube:Cube = new Cube(list, 250, 250, 250);


            // Rotate the cube to however required.
            cube.rotationX = Math.random()*360;
            cube.rotationY = Math.random()*360;
            cube.rotationZ = Math.random()*360;


            // Add the cube to the scene.
            scene.addChild(cube);


            // Render the cube.
            startRendering();

        }

    }
}

Большая часть кода довольно понятна, и есть uint.MAX_VALUE учебники для этой конкретной среды.

Наслаждайтесь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...