1

我正在研究 Java3D 中的一些东西,我知道 TransformGroups 是您通常应用缩放的方式......

但是,我正在尝试创建一种基于缩放向量定义长方体的方法。

所以我有一个单位立方体 1,1,1 -> -1,-1,-1 我想手动应用缩放转换。

 private static void scaleCoordinates(IndexedQuadArray indexedQuadArray, Vector3d scaleVector) {
    //Create scalar transform
    Transform3D scalarTransform = new Transform3D();
    scalarTransform.setScale(scaleVector);

    // retrieve the vertex coordinates
    GeometryInfo indexedQuadArrayGeometryInfo = new GeometryInfo(indexedQuadArray);
    Point3f coordinatesToScaleArray [] = indexedQuadArrayGeometryInfo.getCoordinates();

    // scale each 3d coordinate 
    for(Point3f coordinate: coordinatesToScaleArray){
        scalarTransform.transform(coordinate);
    }

    // update the indexed quad array with scaled-coordinates.
    indexedQuadArray.setCoordinates(0, coordinatesToScaleArray);
}

现在,当缩放为正整数时它可以工作,但如果我缩放 0.5 或负数,顶点就会变得混乱。

有谁知道怎么了?我认为我应该能够以小于 1 的比例缩放,也许 Transform3D.transform(Point3f) 正在发生一些我不知道的事情。

非常感谢阅读!

4

1 回答 1

0

我不希望负数起作用。当您考虑它时,缩放转换实际上只是一个乘法。因此,用向量 (.5,.6,.7) 缩放点 (1,1,1) 应该会给你新的点 (.5,.6,.7)

如果你按负数“缩放”,你会把你的立方体翻过来,各种法线和边缘都是错误的。

你能提供你的 quadArray 和你正在使用的 scaleVector 中的顶点列表吗?

于 2013-03-18T13:39:35.993 回答