我正在使用STLLoader.js来绘制组件。每个组件都使用一种定义的颜色正确渲染,但看起来不像现实世界的组件。
上图是使用STLLoader.js(使用二进制STL文件)的我的three.js实现,因为我已经读过这种格式支持组件的颜色。
下面的图片呈现了我的一个Windows软件,我在那里使用了Step文件。我想渲染组件与下图中的外观相同,因此它看起来像一个真实的组件。
有没有办法在three.js中获得正确的彩色输出?我搜索了很多但没有办法实现它。请帮助我前进。
var loader = new THREE.STLLoader();
loader.addEventListener( 'load', function ( event ) {
var material = new THREE.MeshPhongMaterial( { color: 0x75D3DC, ambient: 0x75D3DC, specular: 0x75D3DC, shininess: 200/*, vertexColors: THREE.VertexColors */} );
var mesh = new THREE.Mesh( geometry, material );
mesh.position.x = x - boardMaxX + w/2 ;
mesh.position.y = - 5 ;
mesh.position.z = z - boardMaxY + h/2 ;
mesh.rotation.set( (rotation * Math.PI / 180.0), 0, 0 );
mesh.scale.set(2, 2, 2);
mesh.castShadow = true;
mesh.receiveShadow = true;
board.add(mesh);
objects.push( mesh );
i = i + 5;
componenetDraw(componentArray[i] * scaleX, -7, componentArray[i + 1] * scaleY, componentArray[i + 2], componentArray[i + 4]);
} );
loader.load( fileName );
}
以上代码用于读取STL文件。但我没有读取STEP文件的代码。
答案 0 :(得分:0)
STEP文件通常包含BREP几何体,您需要CAD内核将BREP转换为网格。查看用于CAD内核的BRL-CAD,FreeCAD,pythonOCC和OCE / OCCT,以及用于转换网格的meshlab。
答案 1 :(得分:0)
您需要选择一种文件格式,允许指定每个三角形集的颜色,而不仅仅是每个网格。据我所知,这适用于vrml,可以通过FreeCAD导出。
另一个想法是将您的零件分成多个,并将每个颜色区域导出为单色网格。