STL文件阅读器问题

时间:2015-01-22 09:13:01

标签: javascript three.js step stl-format

我正在使用STLLoader.js来绘制组件。每个组件都使用一种定义的颜色正确渲染,但看起来不像现实世界的组件。

enter image description here

上图是使用STLLoader.js(使用二进制STL文件)的我的three.js实现,因为我已经读过这种格式支持组件的颜色。

下面的图片呈现了我的一个Windows软件,我在那里使用了Step文件。我想渲染组件与下图中的外观相同,因此它看起来像一个真实的组件。

enter image description here

有没有办法在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文件的代码。

2 个答案:

答案 0 :(得分:0)

STEP文件通常包含BREP几何体,您需要CAD内核将BREP转换为网格。查看用于CAD内核的BRL-CAD,FreeCAD,pythonOCC和OCE / OCCT,以及用于转换网格的meshlab。

答案 1 :(得分:0)

您需要选择一种文件格式,允许指定每个三角形集的颜色,而不仅仅是每个网格。据我所知,这适用于vrml,可以通过FreeCAD导出。

另一个想法是将您的零件分成多个,并将每个颜色区域导出为单色网格。