私は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) で何かが起こっていると思います。
読んでくれてありがとう!