这个任务的确很深重,要一步步的深入。。。。。。不管怎么说,papervision3D的最终实现是在Flash的舞台上增加元素,只是,这些元素需要遵从一定的透视规律。
好,开始!
整个引擎是一错综复杂的代码,各个部件之间的关系复杂,我们需要一步步的屡清它们之间的关系,哪里是入口呢?我们从最简单的机构入手。
这里是一个最简单的Papervision3D的场景:一个线框材质的平面显示在视图里。
我们是要深入研究他的体系的。所以我们从基本入手。
在这个场景中,唯一和场景打交道的是view物体,而view物体是一个Sprite类型。
而render模块是把这些组织的关系串联起来,它的整个过程都是为了成全一个view物体的生成。所以,我们需要分析的是render.renderScene(scene,camera,view)这个核心,所有的工作都是为了它而准备的,而它的执行肯定会对view物体造成影响,例如,在view里面生成了物体什么的。
[b]DisplayObjectContainer3D[/b],是所有DisplayObject3D的基类,同时它为所有的DisplayObject3D物体提供一个容器。
每一个DisplayObjectContainer3D物体都有一个自己的子物体列表。
override 子类重写父类的方法后,在调用的时候都用子类的方法。
分析每个类实现了什么功能,同时获得了什么结果?这个很关键!
好,开始!
整个引擎是一错综复杂的代码,各个部件之间的关系复杂,我们需要一步步的屡清它们之间的关系,哪里是入口呢?我们从最简单的机构入手。
这里是一个最简单的Papervision3D的场景:一个线框材质的平面显示在视图里。
scene=new Scene3D();
camera=new Camera3D(60);
render=new BasicRenderEngine();
view=new Viewport3D(500,400);
plane=new Plane(null,200,200,2,2);
camera.z=-200;
scene.addChild(plane);
//plane.pitch(60);
plane.rotationX=30;
plane.y=40;
render.renderScene(scene,camera,view);
mycanvas.canvas.addChild(view);
我们是要深入研究他的体系的。所以我们从基本入手。
在这个场景中,唯一和场景打交道的是view物体,而view物体是一个Sprite类型。
而render模块是把这些组织的关系串联起来,它的整个过程都是为了成全一个view物体的生成。所以,我们需要分析的是render.renderScene(scene,camera,view)这个核心,所有的工作都是为了它而准备的,而它的执行肯定会对view物体造成影响,例如,在view里面生成了物体什么的。
[b]DisplayObjectContainer3D[/b],是所有DisplayObject3D的基类,同时它为所有的DisplayObject3D物体提供一个容器。
每一个DisplayObjectContainer3D物体都有一个自己的子物体列表。
override 子类重写父类的方法后,在调用的时候都用子类的方法。
分析每个类实现了什么功能,同时获得了什么结果?这个很关键!