3

我正在使用 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 文件的代码。

4

2 回答 2

0

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

于 2015-01-23T20:19:05.863 回答
0

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

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

于 2015-01-29T13:09:47.917 回答