Элементарно.
Мы будем использовать Alternativa3D 8.
Создаем в Flash новый проект типа ActionScript3. Тут же сохраняем.
Качаем Alternativa3D 8 в виде SWC билиотеки.
Добавляем ее в проект


Там вставляем вот такую хрень:
package {
import alternativa.engine3d.core.Camera3D;
import alternativa.engine3d.core.Object3D;
import alternativa.engine3d.core.Resource;
import alternativa.engine3d.core.View;
import alternativa.engine3d.materials.FillMaterial; //1
import alternativa.engine3d.primitives.Box; //1
import flash.display.Sprite;
import flash.display.Stage3D;
import flash.events.Event;
public class alttest extends Sprite {
private var rootContainer:Object3D = new Object3D();
private var camera:Camera3D;
private var stage3D:Stage3D;
private var box:Box; //2
public function alttest(){
camera = new Camera3D(0.1, 10000);
camera.view = new View(stage.stageWidth, stage.stageHeight);
camera.rotationX = -120 * Math.PI / 180; //3
camera.y = -800; //3
camera.z = 400; //3
addChild(camera.view);
rootContainer.addChild(camera);
box = new Box(500, 500, 500, 5, 5, 5); //4
var material:FillMaterial = new FillMaterial(0xFF7700); //4
box.setMaterialToAllSurfaces(material); //4
rootContainer.addChild(box); //4
stage3D = stage.stage3Ds[0];
stage3D.addEventListener(Event.CONTEXT3D_CREATE, onContextCreate);
stage3D.requestContext3D();
}
private function onContextCreate(e:Event):void {
for each (var resource:Resource in rootContainer.getResources(true)){
resource.upload(stage3D.context3D);
}
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(e:Event):void {
box.rotationZ -= 0.01; //5
camera.render(stage3D);
}
}
}
<br>
Сохраняем, Запускаем Ctrl-Enter
Вуаля.. Крутится кубик.
Задание выполнено.

В следующий раз мы попробуем управлять вращением кубика по нашему желанию.
Код ActionScript3 - ужасен, такого кашмара ООП я не встречал на просторах PHP =)
Код скопирован с сайта Alternativa3D 8.
