WEB开发网
开发学院图形图像Flash Flash与3D编程探秘(五)- 摄像机旋转和移动 阅读

Flash与3D编程探秘(五)- 摄像机旋转和移动

 2008-11-12 11:51:23 来源:WEB开发网   
核心提示: //nowcreatelotsofballsaroundyourcamerafor(vari=0;i<MAX_OBJ;i++){varball=newSphere();ball.angle=Math.random()*(0-PI*2)+PI*2;//thisistherotatean

//nowcreatelotsofballsaroundyourcamera
for(vari=0;i<MAX_OBJ;i++)
{
  varball=newSphere();
  ball.angle=Math.random()*(0-PI*2)+PI*2;      //thisistherotateangleonthexzplane
  ball.dist_center=140+(MAX_OBJ-i)*DISTANCE;   //thedistancetoyourcamera
  ball.x_3d=Math.cos(ball.angle)*ball.dist_center;  //thenweusetrigtogetx
  ball.z_3d=Math.sin(ball.angle)*ball.dist_center;   //andz
  ball.y_3d=Math.random()*(-240-240)+240;     //nowputtheballatrandomy
  scene.addChild(ball);                      //addtheballtothecollection
}

4. 对于每一个物体,我们在摄像机转动角度时刷新它的大小和位置。于是我们下一步写一个函数来达到目的,首先我们要确定小P相对于我们的摄像机的旋转角度。然 后我们根据这个角度和他们之间的垂直距离,算出它到摄像机的x,z和y的距离。最后,还是运用我们之前学过的算法,缩放和移动物体。

//updateballsizeandposition
functionupdate(obj)
{
  //gettheanglerelativetoyourcamerapanningangle
  varangle=obj.angle-camera.panning;
  varx_pos=Math.cos(angle)*obj.dist_center-camera.x;    //usetrigcalculatethex
  varz_pos=Math.sin(angle)*obj.dist_center-camera.z;    //andz
  vary_pos=obj.y_3d-camera.y;            //calculatetherelativey
  
  if(z_pos>0)                         //iftheballisinfrontofthecamera
  {
    if(!obj.visible)                
      obj.visible=true;                  //maketheballvisibleanyway
      
    varscale=focal_length/(focal_length+z_pos);   //calthescaleoftheball
    obj.x=x_pos*scale;               //calcualtethexpositioninacameraview
    obj.y=y_pos*scale;               //andyposition
    obj.scaleX=obj.scaleY=scale;       //scaletheballtoaproperstate
  }
  else
  {
    obj.visible=false;
  }
}

上一页  1 2 3 4 5 6 7  下一页

Tags:Flash 编程 探秘

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接