Java3D を使用して Diamond を実行しようとしていますが、何をしても、意図したとおりの結果が得られません。
public class Tetrahedron extends IndexedTriangleArray {
public Tetrahedron() {
super(13, TriangleArray.COORDINATES | TriangleArray.NORMALS, 18);
//Base
setCoordinate(0, new Point3f(0, -1f, 0));
//Cantos
setCoordinate(1, new Point3f(1f, 0.5f, 1));
setCoordinate(2, new Point3f(1f, 0.5f, -1));
setCoordinate(3, new Point3f(-1f, 0.5f, -1));
setCoordinate(4, new Point3f(-1, 0.5f, 1));
//Feito
setCoordinate(5, new Point3f(-0.5f, 1f, 0.5f));
setCoordinate(6, new Point3f(0, 0.5f, 1f));
setCoordinate(7, new Point3f(0.5f, 1f, 0.5f));
//
setCoordinate(8, new Point3f(1f, 0.5f, 0f));
setCoordinate(9, new Point3f(0.5f, 1f, -0.5f));
//
setCoordinate(10, new Point3f(0f, 0.5f, -1f));
setCoordinate(11, new Point3f(-0.5f, 1f, -0.5f));
//
setCoordinate(12, new Point3f(-1f, 0.5f, 0f));
int[] coords = {0,1,2, 0,2,3, 0,3,4 0,4,5 ,0, 3,2,1 ,3,1,2};
float n = (float)(1.0/Math.sqrt(3));
setNormal(0, new Vector3f(n,n,-n));
setNormal(1, new Vector3f(n,-n,n));
setNormal(2, new Vector3f(-n,-n,-n));
setNormal(3, new Vector3f(-n,n,n));
setNormal(2, new Vector3f(n,n,-n));
setNormal(3, new Vector3f(n,-n,n));
int[] norms = {0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5};
setCoordinateIndices(0, coords);
setNormalIndices(0, norms);
}
}
私はたくさんのコードを試しましたが、いくつかは私が望んでいたほとんどの出力を備えていましたが、基本的なダイヤモンド形状は決してありませんでした.座標はダイヤモンド形状が機能する方法であると私は信じています。これは簡単に解決できる問題であることはわかっていますが、私は Java3D を初めて使用するので、この問題が原因でプロジェクトを続行できません。