javascript - 使用材质 Three.js 合并网格
问题描述
我正在尝试在 Three.js 中合并网格。网格从 Blender 导出的 COLLADA 模型加载。这是未合并加载的模型:
我认为我遇到了材质 UV 的问题,因为我收到了 288 条警告消息,例如:
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 导出会出错吗?
解决方案
推荐阅读
- c++ - 未构建具有第三方库的项目
- ruby - 使用硒进行 RSpec 系统测试 - 允许访问相机
- java - 直接调用 `mvn package` 有效,但通过 Makefile 失败
- java - 如何在 Java 8 中循环遍历字节数组?
- java - Java 日期时间为 ISO_DATE_TIME
- mysql - 无法执行字符串到日期的转换
- angular - Angular Web 应用的 Google Analytics(分析)中的总浏览量
- java - 是否可以使用弹簧安全性在 html 页面上隐藏按钮等?
- linux - 创建 Unix shell 脚本以将非空文件从源目录移动到目标目录并为其添加时间戳
- crystal-lang - Crystal 的命名参数快捷方式