Deseaba dibujar una línea curva en Three.js con un grosor superior a uno. Después de investigar un poco, Three.MeshLine solía ser la respuesta. Sin embargo, he visto algunos informes (y puedo confirmar por mi propio uso) que el código dado en el ejemplo de repositorio activa un error "No se puede invocar el constructor de clase sin 'nuevo'" y elimina la línea.
Es curioso si alguien ha encontrado una manera de hacer que MeshLine sea funcional con versiones recientes de Three. A continuación se muestra el código de la versión actual (última confirmación hace un año). A menos que tal vez me esté perdiendo algo o si el repositorio se ha ido por la ventana.
var scene, camera, renderer, points, line; function init() { scene = new THREE.Scene(); camera = new THREE.PerspectiveCamera(75, 640 / 480, 0.1, 1000); renderer = new THREE.WebGLRenderer(); renderer.setSize(640, 480); document.body.appendChild(renderer.domElement); camera.position.z = 9; points = []; for (var i = -10; i < 10.1; i += 0.1) { points.push([i, Math.sin(i), 0]); } line = new MeshLine(); line.setPoints(points.flat()); var material = new MeshLineMaterial({ color: new THREE.Color(0xffff00), lineWidth: 0.1, dashArray: 0.1, dashRatio: 0.2}); material.transparent = true; mesh = new THREE.Mesh(line, material); scene.add(mesh); animate(); } function animate() { renderer.render(scene, camera); requestAnimationFrame(animate); }El proyecto THREE.MeshLine no puede soportar las últimas versiones (> r127 ) porque deriva la clase MeshLine de BufferGeometry así:
TRES.BufferGeometry.call(esto)
Esta ya no es una sintaxis JS válida, ya que BufferGeometry ahora es una clase ES6. Eso significa que los mantenedores de THREE.MeshLine también tienen que mover su código a ES6.