为什么离摄像机近的三角形会不显示
flab3d (2009-03-10 09:33:55)
[code]
package {
import flash.display.Sprite;
import flash.events.*;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.cameras.SpringCamera3D;
import org.papervision3d.core.math.Number3D;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.objects.primitives.PaperPlane;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
[SWF(width="400", height="250", backgroundColor="#000000", frameRate="60")]
public class FlyPlane extends Sprite
{
public var springCamera:SpringCamera3D=new SpringCamera3D();
public var camera:Camera3D=new Camera3D();
public var viewport:Viewport3D=new Viewport3D(640,480,true,true);
public var scene:Scene3D=new Scene3D();
public var render:BasicRenderEngine=new BasicRenderEngine();
public var plane:Plane=new Plane(new WireframeMaterial() ,100000,100000,10,10);
public var flyPlane:PaperPlane=new PaperPlane(new WireframeMaterial());
public var flyFlag:int=0;
public function FlyPlane()
{
init();
}
public function init():void{
//camera.z=-4000;
//camera.fov=15;
springCamera.target=flyPlane;
springCamera.mass = 10;
springCamera.damping = 10;
springCamera.stiffness = 5;
//camera.lookOffset = new Number3D(0, 0, 500);
springCamera.positionOffset = new Number3D(0, 0, -500);
camera.y=200;
flyPlane.y=100;
flyPlane.material.doubleSided=true;
plane.material.doubleSided=true;
scene.addChild(flyPlane);
plane.rotationX=90;
scene.addChild(plane);
addChild(viewport);
stage.addEventListener(Event.ENTER_FRAME,stageEnterFrameHandler);
stage.addEventListener(KeyboardEvent.KEY_DOWN,stageKeyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP,stageKeyUpHandler);
}
public function stageEnterFrameHandler(e:Event):void{
render.renderScene(scene,camera,viewport);
fly();
//plane.rotationX++;
camera.z+=10;
}
public function stageKeyDownHandler(e:KeyboardEvent):void{
}
public function stageKeyUpHandler(e:KeyboardEvent):void{
}
public function fly():void{
switch(flyFlag){
case 1:flyPlane.z+=100;break;
case 5:flyPlane.z+=10;break;
}
}
}
}
[/code]
代码如上,为什么当摄像机移动时,屏幕下方的块总是不显示?