Я когда-то движок писал что-б 3D отображать во FlashPlayer. Теперь он не нужен, я его забросил ибо Молхил вышел.

Код AS3:
package {
import flash.display.Sprite;
import flash.events.Event;
public class Model extends Sprite {
private var sph:MeshMine;
public function Model():void {
init();
}
private function init():void {
sph = new MeshMine();
sph.nVert([9.13609, -17.7834, -9.13609, 0, -17.7834, -12.9204, -9.13609, -17.7834, -9.13609, -12.9204, -17.7834,
0, -9.13609, -17.7834, 9.13609, 0, -17.7834, 12.9204, 9.13609, -17.7834, 9.13609, 12.9204, -17.7834, 0, 14.7825,
-6.79265, -14.7825, 0, -6.79265, -20.9056, -14.7825, -6.79265, -14.7825, -20.9056, -6.79265, 0, -14.7825, -6.79265, 14.7825, 0,
-6.79265, 20.9056, 14.7825, -6.79265, 14.7825, 20.9056, -6.79265, 0, 14.7825, 6.79265, -14.7825, 0, 6.79265, -20.9056,
-14.7825, 6.79265, -14.7825, -20.9056, 6.79265, 0, -14.7825, 6.79265, 14.7825, 0, 6.79265, 20.9056, 14.7825, 6.79265,
14.7825, 20.9056, 6.79265, 0, 9.13609, 17.7834, -9.13609, 0, 17.7834, -12.9204, -9.13609, 17.7834, -9.13609, -12.9204,
17.7834, 0, -9.13609, 17.7834, 9.13609, 0, 17.7834, 12.9204, 9.13609, 17.7834, 9.13609, 12.9204, 17.7834, 0, 0, -21.9815, 0, 0, 21.9815, 0]);
sph.nTriangles([0, 1, 8 , 8 , 1 , 9 , 1 , 2 , 9 , 9 , 2 , 10 , 2 , 3 ,
10 , 10 , 3 , 11 , 3 , 4 , 11 , 11 , 4 , 12 , 4 , 5 , 12 ,
12 , 5 , 13 , 5 , 6 , 13 , 13 , 6 , 14 , 6 , 7 , 14 , 14 ,
7 , 15 , 7 , 0 , 15 , 15 , 0 , 8 , 8 , 9 , 16 , 16 , 9 , 17,
9 , 10 , 17 , 17 , 10 , 18 , 10 , 11 , 18 , 18 , 11 , 19 ,
11 , 12 , 19 , 19 , 12 , 20 , 12 , 13 , 20 , 20 , 13 , 21,
13 , 14 , 21 , 21 , 14 , 22 , 14 , 15 , 22 , 22 , 15 , 23 ,
15 , 8 , 23 , 23 , 8 , 16 , 16 , 17 , 24 , 24 , 17 , 25,
17, 18 , 25 , 25 , 18 , 26 , 18 , 19 , 26 , 26 , 19 , 27 , 19 , 20 , 27 , 27 , 20 , 28 , 20 , 21 , 28 ,
28 , 21 , 29 , 21 , 22 , 29 , 29 , 22 , 30 , 22 , 23 , 30 , 30 , 23 , 31 ,
23, 16, 31, 31 , 16 , 24 , 1 , 0 , 32 , 2 , 1 , 32 , 3 ,
2 , 32 , 4 , 3 , 32 , 5 , 4 , 32 , 6 , 5 , 32 , 7 , 6 , 32 , 0 , 7 , 32 , 24 , 25 , 33 , 25 , 26 , 33 ,
26 , 27 , 33 , 27 , 28 , 33 , 28 , 29 , 33 , 29 , 30 , 33 , 30 , 31 , 33 , 31 , 24 , 33
]);
addChild(sph);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(e:Event):void {
sph.render();
sph.rot3DY(0.1);
sph.xm += 1;
}
}
}
там правда нет сеттеров для движения по Y и Z, но их легко сделать, есть сеттер который задаёт X положение в классе MeshMine это - public function set xm
Взять скопировать эту функцию пару раз и поменять где нужно "x" на "y" и "z".
Нет здесь сцены, то-есть объекты не сортируются между собой, сортируются только полигоны.
Нет парсера.
Нет текстурированья.
Это всё планировалось в будущем, но...
Как пользоваться видно в классе Model: вызываем экземпляр класса MeshMine, задаём координаты точек через .nVert и создаём треугольники через .nTriangles

Код AS3:
вашMeshMine.nVert([ 10, 10, 10, -10, 10, 10, -10, -10, 10, 10, -10, 10,
10, 10, -10, -10, 10, -10, -10, -10, -10, 10, -10, -10]);
вашMeshMine.nTriangles([0, 1, 2, 0, 2, 3, 0, 5, 1, 0, 4, 5, 4, 6, 5, 4, 7, 6, 3, 2, 6,
3, 6, 7, 1, 5, 6, 1, 6, 2, 4, 0, 3, 4, 3, 7]);
вращаем в 3D пространстве: вашMeshMine.rot3DY(0.1); или вашMeshMine.rot3DX(0.1);