我正在尝试基于 2D svg 文件使用 Three.js 渲染建筑物的 3D 地图。基本上,我正在做的是从 svg 获取每条路径,使用 d3.js 中的 transformSVGPath 创建形状,然后将其挤出,如下所示:
var material = new THREE.MeshLambertMaterial({
color: 0xffffff,
shading: THREE.FlatShading,
overdraw: 0.5
});
var obj = {
name: id,
shape: transformSVGPathExposed(el.path)
};
obj.shape3d = obj.shape.extrude({
amount: 5,
bevelEnabled: false
});
obj.mesh = new THREE.Mesh(obj.shape3d, material);
obj.mesh.rotation.x = Math.PI/2;
obj.mesh.scale.set(1,1,1);
obj.mesh.position.x = -750;
obj.mesh.position.z = -500;
obj.mesh.position.y = 20;
MapEngine.shops.push(obj);
transformSVGPathExposed 是 d3.js 中的 transformSVGPath 函数,可从外部调用。我的 svg 文件如下所示:map svg。并且渲染效果是这样的:Three.js render
我看到那些丑陋的不光滑网格的原因是什么?