关于moveBackward()和Quaternion四元数
public class main extends BasicView
{
private var sphere:Sphere;
private var _plane:Plane;
private var _mouse3D:Mouse3D;
private var slerp:Number = 0;//插值
private var planeQ:Quaternion = new Quaternion();
private var mouseQ:Quaternion = new Quaternion();
private var slerpQ:Quaternion = new Quaternion();
public function main(viewportWidth:Number=640, viewportHeight:Number=480, scaleToStage:Boolean=true, interactive:Boolean=false, cameraType:String="Target")
{
viewport.interactive = true;
Mouse3D.enabled = true;
_mouse3D = viewport.interactiveSceneManager.mouse3D;//获取点击坐标
var light:PointLight3D = new PointLight3D();
light.z = -500;
var material:FlatShadeMaterial = new FlatShadeMaterial(light, 0xFFFFFF, 0);
material.interactive = true;
sphere = new Sphere(material, 400, 20, 20);
scene.addChild(sphere);
_plane = new Plane(new ColorMaterial(0x00ff00), 80, 80);
_plane.z = -400; //一开始在球的中间弧顶
scene.addChild(_plane);
viewport.containerSprite.sortMode = ViewportLayerSortMode.INDEX_SORT; //设置图层排序方式
var planeVl:ViewportLayer = new ViewportLayer(viewport, _plane);
planeVl.layerIndex = 1;
viewport.containerSprite.addLayer(planeVl);
sphere.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, clickHand);
startRendering();
}
private function clickHand(e:InteractiveScene3DEvent):void
{
slerp = 0;//每次点击初始化为0
planeQ = Quaternion.createFromMatrix(_plane.transform);
mouseQ = Quaternion.createFromMatrix(_mouse3D.transform);
}
override protected function onRenderTick(event:Event=null):void
{
slerp += (1 - slerp) * 0.1;
slerpQ = Quaternion.slerp(planeQ, mouseQ, slerp);
_plane.transform = slerpQ.matrix;
_plane.moveBackward(400);
renderer.renderScene(scene, camera, viewport);
}
}
2009-6-3 11:50:08 回复该留言
_plane.moveBackward(400);
想请问一下 这句的用意何在?能说说原理吗
2009-6-3 23:58:20 回复该留言
就是相对自身位置向后移动400像素