接受的答案仅适用于底边相等的金字塔。如果你想要一个矩形脚的金字塔,你可以这样做:
var geometry = new THREE.Geometry();
geometry.vertices = [
new THREE.Vector3( 0, 0, 0 ),
new THREE.Vector3( 0, 1, 0 ),
new THREE.Vector3( 1, 1, 0 ),
new THREE.Vector3( 1, 0, 0 ),
new THREE.Vector3( 0.5, 0.5, 1 )
];
geometry.faces = [
new THREE.Face3( 0, 1, 2 ),
new THREE.Face3( 0, 2, 3 ),
new THREE.Face3( 1, 0, 4 ),
new THREE.Face3( 2, 1, 4 ),
new THREE.Face3( 3, 2, 4 ),
new THREE.Face3( 0, 3, 4 )
];
现在您有了一个底边为1 x 1 且高度为1 的金字塔几何图形。通过应用缩放矩阵,我们可以使这个金字塔成为任何所需的width/length/height 组合:
var transformation = new THREE.Matrix4().makeScale( width, length, height );
geometry.applyMatrix( transformation );
这也可以封装在自定义的Pyramid 几何类中,这样您就可以像这样使用它:
new THREE.Pyramid( width, length, height );