Je suis en train de dessiner quelques lignes courbes parallèles, l'une à côté de l'autre, mais si je les sépare en modifiant/traduisant leur position dans un axe, le résultat n'est pas ce que je cherche. Le code est simple, un bezier pour faire le chemin central et les clones avec d'autres matériaux pour les côtés.Comment faire des courbes parallèles dans three.js pour le marquage routier?
var bezier = new THREE.CubicBezierCurve3(
new THREE.Vector3(initx, inity, 0),
new THREE.Vector3(cp1x, cp1y, 0),
new THREE.Vector3(cp2x, cp2y, 0),
new THREE.Vector3(finalx, finaly, 0)
);
var curvePath = new THREE.CurvePath();
curvePath.add(bezier);
var path = curvePath.createPointsGeometry(5);
path.computeLineDistances();
var lineMat = new THREE.LineDashedMaterial({ color: 0xFFFFFF,
dashSize: 3,
gapSize: 2,
linewidth: 10});
var curveLine = new THREE.Line(path, lineMat);
curveLine.rotation.set(-Math.PI/2,0,0);
curveLine.position.y = 0.1;
var leftLine = curveLine.clone();
leftLine.material = matLine;
var rightLine = curveLine.clone();
rightLine.material = matLine;
leftLine.translateX(-3.5);
rightLine.position.set(3.5,0,0);
scene.add(curveLine);
scene.add(leftLine);
curveLine.add(rightLine);
Ce sont quelques exemples de ce que je cherche:
Les deux dernières images sont de la bibliothèque Bezier.js.
Je pense que l'application d'un décalage à la ligne courbe, ou dessin une autre ligne en utilisant les Normales de la première pourrait être la solution, mais je ne peux pas trouver quelque chose d'utile à faire dans la Documentation. Je pense que cela pourrait aussi être fait en traçant une ligne à une distance de l'axe tangent ou quelque chose comme ça, mais cela peut être une façon plus facile, des idées?
Je jetais un oeil sur this mais c'est pour les lignes droites.
Il y a un stylo de code avec un exemple de travail [ici] (https://codepen.io/brunoimbrizi/pen/VYEWgY). Les explications sont [ici] (http://brunoimbrizi.com/unbox/2015/03/offset-curve/). La plupart des ajouts de vector2 sur le codepen sont déjà disponibles dans le cadre de three.js. – Radio
@Radio C'est génial. –
@Radio C'est vraiment génial, mais je cherchais un moyen plus "natif" de le faire avec three.js, bien que j'y jette un oeil et que j'essaie de le résoudre en faisant les opérations comme ça. – soiber