【问题标题】:Reverse vertex order in THREE.js face在 THREE.js 面中反转顶点顺序
【发布时间】:2015-11-03 21:03:35
【问题描述】:

我需要反转几何体面的顶点顺序。 例如:

// create geometry
var geometry = new THREE.Geometry();
// create vertices
geometry.vertices.push( new THREE.Vector3( 0,   0,   0 ) );
geometry.vertices.push( new THREE.Vector3( 0,   100, 0 ) );
geometry.vertices.push( new THREE.Vector3( 100, 0,   0 ) );
// create face
var face = new THREE.Face3( 0, 1, 2 );
geometry.faces.push ( face );
// compute normals
geometry.computeFaceNormals();
geometry.computeVertexNormals();
// add to scene
var mesh = new THREE.Mesh(
    geometry,
    new THREE.MeshBasicMaterial({color: 0x00ffff})
);
scene.add( mesh );

现在我需要将面中顶点的顺序从 0,1,2 更改为 2,1,0。但是,当我手动执行此操作时,无论我将哪个更新标志设置为 true,它都不起作用。

问题 - 是否可以即时反转顶点顺序,如果可以,那么如何?

重要 - 在这种情况下,最好避免对几何图形使用负比例。并且最好避免重新创建对象。

三个.js:r73

【问题讨论】:

  • 您需要操作的是索引,而不是顶点。查看geometry.attributes.index.array 了解三角形组合的顺序。
  • attributesBufferGeometry 的一部分,但我使用通常的几何形状。我认为那里没有索引。

标签: javascript three.js


【解决方案1】:
delete mesh.geometry.__directGeometry;

这应该会应用您的更改。由于某种原因,在 r72 和 r73 中 __directGeometry 没有自动更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    相关资源
    最近更新 更多