如何在Java3D中旋转一组对象

如何在Java3D中旋转一组对象,java,graphics,java-3d,Java,Graphics,Java 3d,我对Java和Java3D都是新手。 我已经用3D球体制作了一个立方体,现在我想像普通立方体一样旋转它。 我的意思是,在一个简单的开关盒或任何其他输入方式上,立方体应该向右、向左、上、下旋转。我尝试使用lookAt函数,但这只是改变了焦点。在这件事上的任何帮助都将不胜感激。 谢谢你抽出时间 这是我的密码: public LEDCube3d() { for (float x = -.5f,xco=0; x <= .5f; x = x + 0.2f,++xco) {

我对Java和Java3D都是新手。 我已经用3D球体制作了一个立方体,现在我想像普通立方体一样旋转它。 我的意思是,在一个简单的开关盒或任何其他输入方式上,立方体应该向右、向左、上、下旋转。我尝试使用lookAt函数,但这只是改变了焦点。在这件事上的任何帮助都将不胜感激。 谢谢你抽出时间

这是我的密码:

public LEDCube3d() 
 {
    for (float x = -.5f,xco=0; x <= .5f; x = x + 0.2f,++xco)
    {
       for(float y=-.5f,yco=0;y<.5f;y=y+0.2f,++yco)
       {     
            for(float z=-.5f,zco=0;z<.5f;z=z+0.2f,++zco)
           {
                     Sphere sphere = new Sphere(0.015f);
                     TransformGroup tg = new TransformGroup();
                     Transform3D transform = new Transform3D();
                     Vector3f vector = new Vector3f( x, y, z);
                     matrix[(int) xco][(int) yco][(int) zco]=0;       
                     transform.setTranslation(vector);
                     tg.setTransform(transform);
                     tg.addChild(sphere);
                     group.addChild(tg);
           }
     }
  }


   Color3f light1Color = new Color3f(.1f, 1.4f, .1f); 
   BoundingSphere bounds =new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
   Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);
   DirectionalLight light1= new DirectionalLight(light1Color, light1Direction);
   light1.setInfluencingBounds(bounds);
   group.addChild(light1);
   universe.getViewingPlatform().setNominalViewingTransform();
   universe.addBranchGraph(group);
   System.out.println("constructor");
}
public-LEDCube3d()
{
对于(float x=-.5f,xco=0;x以下是代码:

包示例;
导入javax.media.j3d.Alpha;
导入javax.media.j3d.BoundingSphere;
导入javax.media.j3d.BranchGroup;
导入javax.media.j3d.DirectionalLight;
导入javax.media.j3d.RotationInterpolator;
导入javax.media.j3d.Transform3D;
导入javax.media.j3d.TransformGroup;
导入javax.vecmath.Color3f;
导入javax.vecmath.Point3d;
导入javax.vecmath.Vector3f;
导入com.sun.j3d.utils.geometry.Sphere;
导入com.sun.j3d.utils.universe.SimpleUniverse;
公共类LEDCube3d{
公共静态void main(最终字符串[]args){
新的LEDCube3d();
}
公共LEDCube3d(){
最终TransformGroup=新TransformGroup();
{//以启用旋转
setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
}
最终SimpleUniverse宇宙=新SimpleUniverse();
//
对于(浮点x=-.5f,xco=0;x

package examples;

import javax.media.j3d.Alpha;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.RotationInterpolator;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;

import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.universe.SimpleUniverse;

public class LEDCube3d {

  public static void main(final String[] args) {
    new LEDCube3d();
  }

  public LEDCube3d() {
    final TransformGroup group = new TransformGroup();
    { //to enable rotation
      group.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
      group.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
    }
    final SimpleUniverse universe = new SimpleUniverse();

    //
    for (float x = -.5f, xco = 0; x <= .5f; x = x + 0.2f, ++xco) {
      for (float y = -.5f, yco = 0; y < .5f; y = y + 0.2f, ++yco) {
        for (float z = -.5f, zco = 0; z < .5f; z = z + 0.2f, ++zco) {
          final Sphere sphere = new Sphere(0.015f);
          final TransformGroup tg = new TransformGroup();
          final Transform3D transform = new Transform3D();
          final Vector3f vector = new Vector3f(x, y, z);

          transform.setTranslation(vector);
          tg.setTransform(transform);
          tg.addChild(sphere);
          group.addChild(tg);
        }
      }
    }
    // 
    final Transform3D transform = new Transform3D();
    transform.rotX(1);

    final long milis = 5000;
    final Alpha alpha = new Alpha(-1, Alpha.INCREASING_ENABLE, 0, 0, milis, 0, 0, 0, 0, 0);
    final RotationInterpolator ri = new RotationInterpolator(alpha, group, transform, 0.0f, (float) Math.PI * 2.0f);
    ri.setSchedulingBounds(new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0));
    group.addChild(ri);
    final BranchGroup bg = new BranchGroup();
    bg.addChild(group);
    //

    final Color3f light1Color = new Color3f(.1f, 1.4f, .1f);
    final BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
    final Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);
    final DirectionalLight light1 = new DirectionalLight(light1Color, light1Direction);
    light1.setInfluencingBounds(bounds);
    bg.addChild(light1);
    universe.getViewingPlatform().setNominalViewingTransform();
    universe.addBranchGraph(bg);
    System.out.println("constructor");
  }
}