建立 camera,
控制 camera 旋轉
沿 Y 軸旋轉
var dx:Number = _stage.mouseX - _lastMouseX;
_mat.prependRotation((dx/_stage.stageWidth)*360, Vector3D.Y_AXIS);
沿 X 軸旋轉
var dy:Number = _stage.mouseY - _lastMouseY;
_mat.prependRotation((dy / _stage.stageHeight) * 360, Vector3D.X_AXIS);
控制 camera
取得滑鼠滾輪值 * 常數
_radius += -1*event.delta * _zoomSpeed;
轉移矩陣,Z 值愈大離愈遠
_mat.appendTranslation(0, 0, -1*event.delta);
建立 cube 立方體,
照前面幾篇所講的方法,建立 3D cube 立方體,
接著重覆建立四個立方體,
並用 matrix.appendTranslation 排列。
套用下列三個短陣,
立方體矩陣
m.append(cube.modelMatrix);
相機矩陣
m.append(camera.matrix);
3D 透視矩陣
m.append(projectionMatrix);
最後計算出來的矩陣 m 設定為 vc0,AGAL 運算會用到。
context.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, m, true);
最後 render 結果,輸出到螢幕。
沒有留言:
張貼留言