three.js工程制图

1,256 阅读1分钟

QQ图片20211112190136.png

一.three.js常用几何画点线封装

1.three.js点围成的几何加材质:

  var temp = [];
  var p1 = new THREE.Vector3(0, 0, 0);
  var p2 = new THREE.Vector3(0, 40, 0);
  var p3 = new THREE.Vector3(1, 40, 0);
  var p4 = new THREE.Vector3(1, 0, 0);
  temp.push(p1, p2, p3, p4)
  var shape = new THREE.Shape(temp);
  var geometry = new THREE.ShapeGeometry(shape, 25)
  var material = new THREE.MeshBasicMaterial({
    color: 0x00ff00
  });
  var mesh = new THREE.Mesh(geometry, material);
  scene.add(mesh);

2.外轮廓方框;

    var edges = new THREE.EdgesGeometry(geometry);
    var plane = new THREE.LineSegments(edges, new THREE.LineBasicMaterial({
      color: 0xffff00
    }));

3.添加虚线;

    lineGeometry.vertices.push(new THREE.Vector3(0, 1000, 5)); //线段的两个顶点
    lineGeometry.vertices.push(new THREE.Vector3(0, -1000, 5));
    var DottedLine = new THREE.Line(lineGeometry, new THREE.LineDashedMaterial({
      color: 0xffffff, //线段的颜色
      dashSize: 2, //短划线的大小
      gapSize: 5 //短划线之间的距离
    }));
    DottedLine.computeLineDistances(); //不可或缺的,若无,则线段不能显示为虚线
    scene.add(DottedLine);

4.虚线几何框;

  var edges = new THREE.EdgesGeometry(geometry);
  var line = new THREE.LineSegments(edges, new THREE.LineDashedMaterial({   // LineDashedMaterial //LineBasicMaterial
    color: 0x000000,
    linewidth: 1,
    scale: 1,
    dashSize: 3,
    gapSize: 1,
  }));
  line.computeLineDistances();  //注意加上这句
  scene.add(line);

5.平面几何添加材质和外轮廓线;

  var p2 = new THREE.Vector3(0, 40, 0);
  var p3 = new THREE.Vector3(1, 40, 0);
  var p4 = new THREE.Vector3(1, 0, 0);

  var material = new THREE.LineBasicMaterial({
    color: 0xff00ff
  });
  var geometry_1 = new THREE.Geometry();
  geometry_1.vertices.push(p1, p2, p3, p4, p1)
  var line = new THREE.Line(geometry_1, material);
  line.position.z = 0.1;
  scene.add(line);

  var temp = [];
  temp.push(p1, p2, p3, p4)
  var shape = new THREE.Shape(temp);
  var geometry_2 = new THREE.ShapeGeometry(shape, 25)
  var material_1 = new THREE.MeshBasicMaterial({
    color: 0x333333
  });
  var mesh = new THREE.Mesh(geometry_2, material_1);
  scene.add(mesh);