Anders and Briegel in Python
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

25 lines
920B

  1. // Curve settings
  2. var curveProperties = {
  3. splineDensity: 30,
  4. curvature: 10
  5. };
  6. // Add a curved edge between two points
  7. function makeEdge(e) {
  8. // Make the geometry of the curve
  9. var a = new THREE.Vector3(e.start[0], e.start[1], e.start[2]);
  10. var b = new THREE.Vector3(e.end[0], e.end[1], e.end[2]);
  11. var length = new THREE.Vector3().subVectors(a, b).length();
  12. var bend = new THREE.Vector3(length / curveProperties.curvature, length / curveProperties.curvature, 0);
  13. var mid = new THREE.Vector3().add(a).add(b).multiplyScalar(0.5).add(bend);
  14. var spline = new THREE.CatmullRomCurve3([a, mid, b]);
  15. var geometry = new THREE.Geometry();
  16. var splinePoints = spline.getPoints(curveProperties.splineDensity);
  17. Array.prototype.push.apply(geometry.vertices, splinePoints);
  18. // Make the actual Object3d thing
  19. var line = new THREE.Line(geometry, materials.edge);
  20. return line;
  21. }