java3d我也想学,想做个人头,会说话的!可惜不知道怎么下手!!

解决方案 »

  1.   

    你可以使用Transform3d的方法
    RotY 水平的转动,RotX 仰视、俯视。再用Mul方法。
      

  2.   

    试用了一下swankiecsdn的方法,不太会搞,总是出问题。
    比如我的情况是这样的:
      在原点处有一个box,基本视点是SimpleUniverse默认的(0,0,2.41), 现在要实现通过ViewingPlatform的改变而分别实现让视点绕X轴,Z轴旋转,而视点的中心
    始终是对着原点的。麻烦哪位大哥能不能给写上两句代码给讲讲。
      

  3.   

    再你旋转后,再将坐标设置为(0,0,2.4),类似的语句:TransformGroup.settransltion (new vector3f(0,0,2.4))
      

  4.   

    还是不太清楚,我是不是太笨了。我用如下代码://u 是SimpleUniverse的对象
    Transform3D t3=new Transform3D();
    t3.rotX(Math.toRadians(30));
    Transform3D t4=new Transform3D();
    t4.rotY(Math.toRadians(30));
    t3.mul(t4);
    u.getViewingPlatform().getViewPlatformTransform().setTransform(t4);结果,看不到在原点的box了,视点跑了很远。
    而如果,在最后加上
    Vector3d viewpoint=new Vector3d(.0,.0,2.41);
    Transform3D t=new Transform3D();
    t.set(viewpoint);
    u.getViewingPlatform().getViewPlatformTransform().setTransform(t);
    则视点又变成了原来的(.0,.0,2.41)郁闷了,哪位大哥给指点指点阿!!!!
      

  5.   

    没时间上网,回的晚了点,不知你完成了吗?
    下面是我的部分代码:实现了相对的移动
    //getTrans,tempOneTrans,tempTwoTrans,has already define
    universe.getViewingPlatform().getViewPlatformTransform().getTransform(getTrans);
    tempOneTrans.set(0); 
    tempOneTrans.rotY(0.5);
    tempTwoTrans.set(0);
    Vector3d viewpoint=new Vector3d(.0,.0,2.41);
    tempTwoTrans.setTranslation(viewpoint);
    tempOneTrans.mul(tempTwoTrans);
    getTrans.mul(tempOneTrans);
    universe.getViewingPlatform().getViewPlatformTransform().setTransform(getTrans);
      

  6.   

    谢谢你回复我的帖子,不过用了你写得那些代码,报了个错:
      javax.vecmath.SingularMatrixException: cannot invert matrix
            at javax.media.j3d.Transform3D.invertAffine(Transform3D.java:2831)
            at javax.media.j3d.Transform3D.invert(Transform3D.java:2687)
            at javax.media.j3d.RenderBin.updateObject(RenderBin.java:791)
            at javax.media.j3d.MasterControl.updateMirrorObjects(MasterControl.java:
    2729)
            at javax.media.j3d.MasterControl.runMonitor(MasterControl.java:3427)
            at javax.media.j3d.MasterControl.doWork(MasterControl.java:2986)
            at javax.media.j3d.MasterControlThread.run(MasterControlThread.java:28)   不知道是怎么回事。 您有没有些java3D的代码,能让我看看呢?网上找来的或者您自己学习时写得小东西,小例子都行,我想了解些控制的东西,比如我帖子里的那个视角的问题,还有些节点的添加,删除、修改等等问题的。我没有找到什么好的例子。刚接触Java3D,麻烦您了。
      如果有的话麻烦发到