我正在使用three.js将Java3D应用程序转换为WebGL。我的第一步是转换我的应用程序中的形状,并在我的three.js场景中显示它们。
在Java3D中,这些形状是通过围绕y轴旋转车床曲线来构建的。由于我无法找到一种方法来使用THREE.LatheGeometry
自定义旋转,这不仅仅是围绕y轴的圆周旋转,我决定尝试直接从其顶点创建形状。
在Java3D代码中,顶点初始化如下:
double verts[] = surfaceRevolve(xs, ys);
GeometryInfo geom = new GeometryInfo(GeometryInfo.QUAD_ARRAY);
geom.setCoordinates(verts);
setGeometry(geom.getGeometryArray());
然后我接受了这些顶点,并尝试用它们创建THREE.BufferGeometry
:
var geometry = new THREE.BufferGeometry();
var vertices = new Float32Array(NUM_VERTICES);
// add the vertices
geometry.addAttribute('position', new THREE.BufferAttribute(vertices, 3));
问题在于,在Java3D中,我得到一个完整的,封闭的形状。在three.js和WebGL中,我得到了很多以某种方式形成形状的三角形,但它并不完整。我需要添加面孔吗?法线?任何建议将不胜感激!