-1
我试图绘制一些并行弯曲的线条,一个接一个,但如果我通过修改/翻译他们在一个坐标轴上的位置来分开它们,结果不是我正在寻找的。如何在three.js中制作道路标记的平行曲线?
代码很简单,一个bezier使中心路径和克隆与其他材料的双方。
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);
这是我所期待的一些例子:
最后两个图像是从Bezier.js库。
我认为施加偏移的曲线,或使用法线的第一个可能是解决方案绘制另一条线,但我无法找到任何有用的东西做的文档。 我认为它也可以从切线轴的距离画出一条线或类似的东西,但它可能是一个更简单的方法,任何想法?
我看了一下this,但它的直线。
有一个代码笔与工作示例[这里](https://codepen.io/brunoimbrizi/pen/VYEWgY)。解释是[这里](http://brunoimbrizi.com/unbox/2015/03/offset-curve/)。 codepen上的许多vector2添加已经可以作为three.js的一部分。 – Radio
@Radio真棒。 –
@Radio这真的很棒,但我一直在寻找一种更简单的“native”方式来做到这一点,尽管我会看看并尝试解决这个问题。 – soiber