javascript - 三个 JS 手动编辑几何后无视觉更新

标签 javascript three.js webgl

所以我有一个 Geometry(这段代码的范围是 THREE.Geometry.prototype)并且我正在动态编辑。 newData 是 { faces: [array of face Indexes], vertices: [array of vertex indexes]} 的对象。 (这些数组保持原点面的长度和顶点数组的长度,并保持形式 [null, null, null, "4", "5", null, null... ])

使用这些数组,我剥离所有的面和顶点并将它们应用于 2 个新数组中的 1 个,有效地将所有数据分成 2 组。我还更新了脸上的指针!

最后我知道我已经更新了几何并且它是正确的,但是我所做的更改没有显示出来。我试过 .elementsNeedUpdate 导致和错误。 (InitWebGlObjects 中没有未定义的属性“a”...我看了看那里,看不到对 a 的引用)

我试过顶点需要更新,它什么都不做。

我还尝试将 updateCentroids 与之前的工具结合使用。它什么都不做。

我听说无法调整缓冲区大小。什么是缓冲区和缓冲区的长度?我给模型的顶点数量是多少?

我看过“您可以通过预先分配更大的缓冲区然后保持不需要的顶点折叠/隐藏来模拟调整大小。”听起来这可能是我在做什么?如何折叠/隐藏顶点?我还没有看到任何对此的引用。

感谢您的宝贵时间!

        var oldVertices = this.vertices
        var oldFaces = this.faces;

        var newVertices = []
        var newFaces = [];

        var verticeChanges = [];

        this.vertices = [];
        this.faces = [];        


        for(var i in oldVertices){
            var curAr = ((newData.vertices[i]) ? (newVertices):(this.vertices));
            curAr.push(oldVertices[i]);
            verticeChanges[i] = curAr.length-1;
        }

        for(var i in oldFaces){
            var curAr = ((newData.faces[i]) ? (newFaces):(this.faces));
            oldFaces[i].a = verticeChanges[oldFaces[i].a];
            oldFaces[i].b = verticeChanges[oldFaces[i].b];
            oldFaces[i].c = verticeChanges[oldFaces[i].c];
        }
        console.log('Vertices Cut from', oldVertices.length, "to:", newVertices.length, 'and', this.vertices.length);
        console.log('Faces Cut from', oldFaces.length, "to:", newFaces.length,  'and', this.faces.length);

最佳答案

我最近自己也遇到了这个问题。我发现如果要向几何体添加顶点和面,我需要设置 this.groupsNeedUpdate = true 以告知渲染器更新其内部缓冲区。

关于javascript - 三个 JS 手动编辑几何后无视觉更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16221366/

相关文章:

javascript - 三个 js 场景的 UIWebView Javascript 垃圾收集

javascript - Three.js发射 Material 有哪些特性

webgl - gl_FragData 必须为常量零

javascript - 如何根据每个数组中的某个项目对 Observable 数组进行排序

javascript - 为什么物体不移动到坐标?

javascript - Parse.com - 无法将特定用户添加到角色

javascript - 如何使用meteor将三个js代码放入单独的JS文件中

c++ - WebGL 和 OpenGL 的性能

javascript - webGl 着色器未捕获语法错误

javascript - 开 Jest : Mock function have not been called in mock promise function