`
westice
  • 浏览: 114553 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Jme笔记(CurveController) Jmonkey

阅读更多

Jme里的 update() 方法是在运行中调用的 . 为了显示运动效果 , 就必须对它做文章了 . 一般几十毫秒更新一次 .

 

控制照相机的运动.( 既然可以控制照相机节点 , 那么就可以控制其它类型的节点 )

   用照相机做成照相机节点

   先新建一个三维向量数组. 做成贝塞尔曲线 .

   用曲线和照相机节点新建曲线控制器

   曲线控制器设置成重复的, 还可以设置速度

   在照相机节点中加入曲线控制器

   最后把照相机节点加入场景中即可

照相机是在不断运动中的. 那么视锥就要变化 .

   在update() 方法中控制照相机的视锥 . 包括 up,left,direction.

   Camera direction 要通过照相机的位置和被看物体的中心位置确定 .

   有了direction 后  up  left 就好确定了 .

   不过JME LOD 例子中update()里的方式有些奇怪 !

 

CurveController 例子分析:在这里不用自己调用update()方法.

有了这个,就可以让我的行星运动了

Capsule ca=new Capsule("胶囊",5,30,5,5f,10f);
 node1.attachChild(ca);    //往node1中加上物体
 Vector3f[] points=new Vector3f[]{
			   new Vector3f(3,0,0),
			   new Vector3f(2.5f,0,-2.5f),
			   new Vector3f(0,0,6),
			   new Vector3f(-7,0,0),
			   new Vector3f(-4.5f,4.5f,0),
			   new Vector3f(3,0,0)
	   };  //这个将是物体的运动轨迹点
	   BezierCurve bc=new BezierCurve("objpath",points);
	   //用物体的轨迹和物体创建控制器
	   CurveController cc=new CurveController(bc,node1);
	   cc.setRepeatType(Controller.RT_WRAP);//重复
	   cc.setSpeed(2f);//设置速度
	   node1.addController(cc);//往要控制的物体中加上控制器
       //这里不知咋回事,创建控制器时用到了node1,后又在node1中加上了控制器
       //肯定有解决方案,努力!
	   rootNode.attachChild(node1);
分享到:
评论
2 楼 westice 2009-09-25  
弄了个答案,终于把发帖测验通过了!
这个的理解完全是照着jmonkey的文档来的。
既然有了远点,近点,还有张角,那么视锥就确定了。在编程中只是调整相机位置,方向,近点和远点,up和left还没动过他。
1 楼 yudinosaur 2009-09-12  
你好,我对照相机的几个参数还是不太了解,up和left到底是什么参数,如何确定,修改它们,会对整个场景造成什么影响呢,麻烦解答一下,感激不敬

相关推荐

Global site tag (gtag.js) - Google Analytics