three.js stlloader.js 线框和 select 单个 'face'
three.js stlloader.js wireframe and select a single 'face'
任何人都可以建议我如何修复下面的代码以获得 STL 文件上的线框吗?这将是非常 appreciated.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 );
}
})
})
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 对象相同。搜索 google 获取教程。
经过几次实验,我发现存储STL文件的所有面几乎是不可能的。相反,我使用 blender 2.65 转换器将 STL 文件转换为 JSON。它工作得非常好,并为我提供了顶点、面、法线,甚至顶点和面的数量,我能够非常轻松地处理每个面。此外,在选择相邻面时,我使用了半边数据结构。
任何人都可以建议我如何修复下面的代码以获得 STL 文件上的线框吗?这将是非常 appreciated.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 );
}
})
})
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 对象相同。搜索 google 获取教程。
经过几次实验,我发现存储STL文件的所有面几乎是不可能的。相反,我使用 blender 2.65 转换器将 STL 文件转换为 JSON。它工作得非常好,并为我提供了顶点、面、法线,甚至顶点和面的数量,我能够非常轻松地处理每个面。此外,在选择相邻面时,我使用了半边数据结构。