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