Javascript 将网格与materials Three.js合并
我正在尝试在Three.js中合并网格。网格是从从Blender导出的COLLADA模型加载的。以下是未合并而加载的模型: 普通模型: 当我尝试合并网格时,我得到的是: 合并模型: 我想我在材质UV方面遇到了问题,因为我收到了288条警告消息,如:Javascript 将网格与materials Three.js合并,javascript,three.js,Javascript,Three.js,我正在尝试在Three.js中合并网格。网格是从从Blender导出的COLLADA模型加载的。以下是未合并而加载的模型: 普通模型: 当我尝试合并网格时,我得到的是: 合并模型: 我想我在材质UV方面遇到了问题,因为我收到了288条警告消息,如: THREE.DirectGeometry.fromGeometry(): Undefined vertexUv 99945 电话号码从99945到100232 以下是我用于合并网格的代码: loader.load(modelPath,
THREE.DirectGeometry.fromGeometry(): Undefined vertexUv 99945
电话号码从99945到100232
以下是我用于合并网格的代码:
loader.load(modelPath, function(model)
{
var modelShape = model.scene;
var materialsArray = new Array();
var mergedGeometry = new THREE.Geometry();
var materialIndex = 0;
modelShape.traverse(function(mesh)
{
if(mesh instanceof THREE.Mesh && typeof mesh.material !== "undefined")
{
var modelGeometry = new THREE.Geometry().fromBufferGeometry(mesh.geometry);
modelGeometry.mergeVertices();
mergedGeometry.merge(modelGeometry, mesh.matrix, materialIndex);
materialsArray[materialIndex] = mesh.material;
materialIndex++;
}
});
mergedGeometry.mergeVertices();
mergedGeometry.rotateX(-90 * Math.PI / 180);
var modifier = new THREE.SubdivisionModifier(subdivisions);
var geometrySmoothed = mergedGeometry;
mergedGeometry.groupsNeedUpdate = true;
mergedGeometry.uvsNeedUpdate = true;
var mesh = new THREE.Mesh(geometrySmoothed, materialsArray);
this.models.push(mesh);
}
那么,有人知道错误在哪里吗?从Blender导出可能是错误的吗?在导出之前,在Blender(“加入”)中合并此项可能会更容易,这是可能的吗?如果去掉最后几个步骤-
.mergeVertices
和SubdivisionModifier
,效果会更好吗?“可能也有帮助。”DonMcCurdy我试着在Blender中合并,但我有很多网格的模型,这花费了我太多的时间。我使用SubdivisionModifier
放置代码,但是您可以看到我不使用它(但我会使用),如果我删除。mergeVertices
没有任何更改。无论如何,我会看一看BufferGeometryUtils,谢谢我发现我正在合并一些带有UV的网格和其他没有UV的网格,所以我可能必须将UV添加到第二个网格中。。。