Graphics 在Java3d中手动缩放单位立方体
我正在研究Java3D中的一些东西,我知道TransformGroup是您通常应用缩放的方式 然而,我试图创建一种基于缩放向量定义长方体的方法 所以我有一个单位立方体1,1,1->-1,-1,-1,我想手动应用一个缩放变换Graphics 在Java3d中手动缩放单位立方体,graphics,transformation,java-3d,3d-rendering,Graphics,Transformation,Java 3d,3d Rendering,我正在研究Java3D中的一些东西,我知道TransformGroup是您通常应用缩放的方式 然而,我试图创建一种基于缩放向量定义长方体的方法 所以我有一个单位立方体1,1,1->-1,-1,-1,我想手动应用一个缩放变换 private static void scaleCoordinates(IndexedQuadArray indexedQuadArray, Vector3d scaleVector) { //Create scalar transform Transfo
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)带来了一些我不知道的东西
非常感谢您的阅读 我不希望负数起作用。当你考虑它时,缩放变换实际上只是一个倍数。因此,使用向量(.5、.6、.7)缩放点(1,1,1)将得到新点(.5、.6、.7) 如果你“缩放”一个负数,你会把立方体翻过来,所有的法线和边都会出错 能否提供四边形阵列中的顶点列表以及正在使用的scaleVector