0

谁能建议我如何修复下面的代码以获取 STL 文件的线框?将不胜感激。ps:有人知道如何选择加载的 stl 文件的面吗?ps:我刚刚通过使用 JSON 解决了​​问题

var loader = new THREE.STLLoader();
            loader.load('models/general_lee.stl', function (geometry) {
                geometry.scene.traverse( function(child) {
                    if (child instanceof THREE.Mesh) {
                        child.material = new THREE.MeshBasicMaterial( { color: 0x009900, wireframe: true, vertexColors: THREE.VertexColors } );
                        child.scale.set(20,20,20)
                        scene.add( child );
                    }
                })  
            })  
4

2 回答 2

0

经过几次实验,我认为存储 STL 文件的所有面几乎是不可能的。相反,我使用 blender 2.65 转换器将 STL 文件转换为 JSON。它工作得非常好,并为我提供了顶点、面、法线,甚至 # 顶点和面,我能够很容易地处理每个面。此外,在选择相邻面时,我使用了半边数据结构。

于 2015-02-23T01:11:26.100 回答
0
var loader = new THREE.STLLoader();
loader.load('models/general_lee.stl', function (geometry) {
  var material = new THREE.MeshBasicMaterial( { color: 0x009900, wireframe: true );
  var mesh = new THREE.Mesh( geometry, material );
  scene.add( mesh );
});

我认为这就是您应该将对象添加到场景中的方式,尽管我还没有测试过。
拾取面将与任何其他 object3D 对象相同。谷歌搜索教程。

于 2015-02-18T08:40:49.637 回答