javascript - Three.js "indices of faces"是什么意思,它是如何工作的?

标签 javascript three.js

我正在尝试使用 Three.js 创建一个不规则多面体。我正在使用 PolyhedronGeometry ( documentation )。问题是我不太明白是什么

indices — Array of indices that make up the faces of the form [0,1,2, 2,3,0, ... ]

意味着。因此,我在此 JSfiddle 中创建的不规则四面体, 并没有像它应该的那样关闭所有的面孔。

如何实现?

这是我目前尝试创建四面体的方式:

var verticesOfCube = [-1,-1,-1,    1,-2.5,1,    1, 1,-1,    -1, 1,-1];
var indicesOfFaces = [2,1,0,    0,3,2,  3,2,1,    1,3,0];

// geometry
var geometry = new THREE.PolyhedronGeometry( verticesOfCube, indicesOfFaces, 10, 0 );

// material
var material1 = new THREE.MeshPhongMaterial( {
    color: 'sandybrown'
} );

// mesh
mesh = new THREE.Mesh( geometry, material1 );
mesh.position.set( 0, 0, 0 );
scene.add( mesh );

最佳答案

索引顶点缓冲区让您可以在更小的空间中存储更多的模型数据。

您可以跨多个三 Angular 形共享顶点,而不是每个三 Angular 形存储 3 个顶点,因为在大多数网格中......每个顶点由 3 个或更多三 Angular 形共享,这最终是一个相当大的胜利,并使模型渲染性能也更高,因为顶点更有可能出现在顶点缓存中。

要获得正确的面部剔除/向外法线生成,您需要按顺时针顺序声明顶点索引,就好像您是从模型外部直接看面部一样。

在实践中..如果您手动生成这些模型,您会尽最大努力在方格纸或其他任何东西上,然后看看它是如何显示的..找出哪些面没有正确面对,然后翻转这些面的索引,因此如果它是 1,2,3,例如,将其更改为 3,2,1 以翻转法线。

FWIW:这是你的 1、2、3,脸向后。它应该是 3,2,1 或 2,1,3 或 1,3,2 ;D

关于javascript - Three.js "indices of faces"是什么意思,它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51102166/

相关文章:

javascript - 无法将图片上传到 Firebase

animation - Threejs Mixer 未更新为 `setTime`

javascript - Three.js 中的相机参数

javascript - 使用 selectAll() 到达特定类

javascript - 在整个屏幕上滚动的图像

javascript - NodeJS 将 Promise 转换为 Promise.all

javascript - javascript 中 rxjs5 组合的示例

Three.js 如何通过人脸索引找到人脸的顶点?

javascript - WebGl - 未加载纹理

javascript - 使用 three.js 单击网格获取像素的颜色值