javascript - 如何在 three.js r68 中制作一个矩形金字塔?

标签 javascript three.js geometry

我在 r68 上,我试图找到一个创建矩形金字塔的示例,我可以将 THREE.MeshFaceMaterial() 应用于其中,大多数示例似乎已经过时并且会在我当前的构建中抛出错误.

我只需要能够

  • 对每张脸进行纹理化
  • 旋转它使矩形面位于 -y 位置

提前致谢!

最佳答案

接受的答案仅适用于底边相等的金字塔。如果你想要一个长方形脚的金字塔,你可以这样做:

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。通过应用缩放矩阵,我们可以将此金字塔制成任何所需的宽度/长度/高度组合:

var transformation = new THREE.Matrix4().makeScale( width, length, height );

geometry.applyMatrix( transformation );

这也可以包装在自定义 Pyramid 几何类中,因此您可以像这样使用它:

new THREE.Pyramid( width, length, height );

关于javascript - 如何在 three.js r68 中制作一个矩形金字塔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26418591/

相关文章:

javascript - three.js动态画线

mobile - 移动设备上是否支持 Canvas 和 WebGL(three.js)?

math - 粗略计算两点之间的距离

ios - 无法减去 CGFloats

graphics - 如何在 Flex MXML 文件中画一个圆圈?

javascript - 通缉 : Minimal cross-browser Javascript library

javascript - Angularjs 语言本地化

javascript - 如何避免第二次单击文件输入按钮时清除文件对象?

javascript - 无法设置 webpack+react+jquery+bootstrap 项目

javascript - 三个.js导入纹理