Transform Java3D变换向量异常行为

Transform Java3D变换向量异常行为,transform,java-3d,Transform,Java 3d,这是代码的一部分,应该画两个相邻的0.3边的立方体 我得到的结果是: (它们彼此接近一半)我试着打印变换,它们看起来很好: 一, 1.0,0.0,0.0,0.0 0.0,1.0,0.0,0.0 0.0,0.0,1.0,0.0 0.0,0.0,0.0,1.0 二, 1.0,0.0,0.0,0.3 0.0,1.0,0.0,0.0 0.0,0.0,1.0,0.0 0.0,0.0,0.0,1.0 这就好像第二个长方体只移动了0.15,但是如果我将dx乘以2,那么当更多不同尺寸的长方体通过y轴或z轴的变换

这是代码的一部分,应该画两个相邻的0.3边的立方体 我得到的结果是: (它们彼此接近一半)我试着打印变换,它们看起来很好:

一,

1.0,0.0,0.0,0.0

0.0,1.0,0.0,0.0

0.0,0.0,1.0,0.0

0.0,0.0,0.0,1.0

二,

1.0,0.0,0.0,0.3

0.0,1.0,0.0,0.0

0.0,0.0,1.0,0.0

0.0,0.0,0.0,1.0

这就好像第二个长方体只移动了0.15,但是如果我将dx乘以2,那么当更多不同尺寸的长方体通过y轴或z轴的变换被添加时,事情就会中断

private BranchGroup rootGroup;

public void addBox(float dx){
    Cuboid Cuboid1 = new Cuboid(0.3f ,0.3f, 0.3f, appearence); 
    TransformGroup tg = new TransformGroup();
Transform3D transform = new Transform3D();
    Vector3f vector = new Vector3f(dx, 0f, 0f);
    transform.setTranslation(vector);
    tg.setTransform(transform);
    tg.addChild(Cuboid1);
    rootGroup.addChild(tg);
}

public void addBoxes(){
    for(int i=0;i<2;i++){
        addBox(i*0.3f);
    }
}
私有分支组根组;
公共无效添加框(浮动dx){
长方体长方体1=新长方体(0.3f,0.3f,0.3f,外观);
TransformGroup tg=新TransformGroup();
Transform3D transform=新建Transform3D();
向量3f向量=新向量3f(dx,0f,0f);
transform.setTranslation(向量);
tg.setTransform(transform);
tg.addChild(长方体1);
根群addChild(tg);
}
公共无效地址框(){

对于(int i=0;i它看起来像是在创建一个大小为0.6的长方体,因此第一个长方体的X,Y,Z值为+0.3和-0.3,因为长方体的中心点为0,0,0

第二个框相同,但在一个轴上偏移了0.3,在其中一个轴上给出了0.3-0.3=0.0和+0.3+0.3=0.6的值

这将使两个框在一个轴上重叠一半,这似乎与您的图片相匹配


也许你的意思是创建一个宽度/高度/深度为0.3/2的长方体,并将其平移0.3/2,使长方体的中心位于0.15,0.15,并使用0.15而不是0.3的比例因子?

这是两件事,尺寸确实是0.6,而它以0,0,0为中心的事实会对多个不同大小的长方体造成严重破坏。我是特拉将所有元素按尺寸的一半进行平移,使一个角位于0,0,0,并且有效