gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 04:51:23 24 4
gpt4 key购买 nike

所以我有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com