Javascript 如何将边绘制为数组?
我有镶嵌几何体的3d模型(我有顶点和三角形的数组),还有原始非镶嵌几何体的边数组。我找不到任何说明如何显示边数组的教程/示例,Three.js的文档也不完整:Javascript 如何将边绘制为数组?,javascript,three.js,edges,Javascript,Three.js,Edges,我有镶嵌几何体的3d模型(我有顶点和三角形的数组),还有原始非镶嵌几何体的边数组。我找不到任何说明如何显示边数组的教程/示例,Three.js的文档也不完整: // // Cube geometry // // 4+--------+7 // /| /| // 5+--------+6| // | | | | // |0+------|-+3 // |/ |/ // 1+--------+2 // var cube_vertices = [
//
// Cube geometry
//
// 4+--------+7
// /| /|
// 5+--------+6|
// | | | |
// |0+------|-+3
// |/ |/
// 1+--------+2
//
var cube_vertices = [
[-1.0, -1.0, -1.0],
[ 1.0, -1.0, -1.0],
[ 1.0, 1.0, -1.0],
[-1.0, 1.0, -1.0],
[-1.0, -1.0, 1.0],
[ 1.0, -1.0, 1.0],
[ 1.0, 1.0, 1.0],
[-1.0, 1.0, 1.0]
];
var cube_edges = [
[0, 1],
[1, 2],
[2, 3],
[3, 0],
[0, 4],
[1, 5],
[2, 6],
[3, 7],
[4, 5],
[5, 6],
[6, 7],
[7, 0]
];
有人有什么建议吗 仅一个注释,从r72起,有用于显示边缘的和边缘辅助线。仅一个注释,从r72起,有用于显示边缘的和边缘辅助线。r75:
THREE.LinePieces
选项已被THREE.LineSegments
替换
var eGeometry = new THREE.EdgesGeometry( mesh.geometry );
var eMaterial = new THREE.LineBasicMaterial( { color: 0x00ff000, linewidth: 4 } );
var edges = new THREE.LineSegments( eGeometry , eMaterial );
mesh.add( edges );
r75:
THREE.LinePieces
选项已被THREE.LineSegments
替换
var eGeometry = new THREE.EdgesGeometry( mesh.geometry );
var eMaterial = new THREE.LineBasicMaterial( { color: 0x00ff000, linewidth: 4 } );
var edges = new THREE.LineSegments( eGeometry , eMaterial );
mesh.add( edges );
将解决方案从问题转移到答案
使用三条直线(几何图形、材质)创建直线或多段线时,
然后,您可以使用可选的第三个参数type和类型
是三条线,它完全符合我的要求。更多
可以在Line()文档中找到相关信息。您可以创建许多
具有以下代码的断开线路:
var material = new THREE.LineBasicMaterial({ color: 0x0000ff });
var geometry = new THREE.Geometry();
for(var i = 0; i < cube_edges.length; i++) {
// Add first vertex of edge
geometry.vertices.push( new THREE.Vector3(
cube_vertices[cube_edges[i][0]][0],
cube_vertices[cube_edges[i][0]][1],
cube_vertices[cube_edges[i][0]][2]
)
);
// Add second vertex of edge
geometry.vertices.push( new THREE.Vector3(
cube_vertices[cube_edges[i][1]][0],
cube_vertices[cube_edges[i][1]][1],
cube_vertices[cube_edges[i][1]][2]
)
);
}
var line = new THREE.Line( geometry, material, THREE.LinePieces);
scene.add( line );
var material=新的三线基本材质({color:0x0000ff});
var geometry=new THREE.geometry();
对于(变量i=0;i
也许这不是最干净的解决方案,但它确实有效
将解决方案从问题转移到答案
使用三条直线(几何图形、材质)创建直线或多段线时,
然后,您可以使用可选的第三个参数type和类型
是三条线,它完全符合我的要求。更多
可以在Line()文档中找到相关信息。您可以创建许多
具有以下代码的断开线路:
var material = new THREE.LineBasicMaterial({ color: 0x0000ff });
var geometry = new THREE.Geometry();
for(var i = 0; i < cube_edges.length; i++) {
// Add first vertex of edge
geometry.vertices.push( new THREE.Vector3(
cube_vertices[cube_edges[i][0]][0],
cube_vertices[cube_edges[i][0]][1],
cube_vertices[cube_edges[i][0]][2]
)
);
// Add second vertex of edge
geometry.vertices.push( new THREE.Vector3(
cube_vertices[cube_edges[i][1]][0],
cube_vertices[cube_edges[i][1]][1],
cube_vertices[cube_edges[i][1]][2]
)
);
}
var line = new THREE.Line( geometry, material, THREE.LinePieces);
scene.add( line );
var material=新的三线基本材质({color:0x0000ff});
var geometry=new THREE.geometry();
对于(变量i=0;i
也许这不是最干净的解决方案,但它确实有效
错误的变量名!更改
var edges=新的三条线段(几何体、材质)代码>到var边=新的三条线段(e度量,e材质)代码>错误的变量名!更改var edges=新的三条线段(几何体、材质)代码>到var边=新的三条线段(e度量,e材质)代码>