Open pumanitro opened 3 years ago
Hard to say without seeing the code.
@jacopocolo
line.setPoints(new Float32Array(points), p => 1);
So it does nothing special. I just tested it.Additionally, my material looks like this:
const color = new THREE.Color(getColor(propertiesColor, 'hex'));
const material = new MeshLineMaterial({
map: null,
useMap: false,
color,
dashArray: false,
resolution: new THREE.Vector2( window.innerWidth, window.innerHeight ),
sizeAttenuation: true,
lineWidth: 1200
});
I'm not one of the devs and they may help more BUT it looks like a bug. Meshline really struggles with too much variation on the z-axis. If you add wireframe: true
to your material you may see that the mesh itself is not evenly wide.
I did a quick test here and it confirms the issue:
Reducing the Math.random() in the z of points visibly solves the problem and the mesh stops bending. So maybe adding more points in your geometry could solve the problem.
adding more points in your geometry could solve the problem
I thought about this too, but I am not sure about the performance + I would need to calculate points in between 2 points (shouldn't be hard). Still, I was really surprised how hard it is to create such a line path in three.js in XXI century 😄
Take a look at the various curves in three (like https://threejs.org/docs/#api/en/extras/curves/CatmullRomCurve3) you can pass your points to the curve and then get back however many points you need with curve.getPoints( number )
. Playing around with the various settings may work!
Has the problem been solved?
Ran into the same issue today, it appears that duplicating each point besides the first and last works pretty well. You get a thick, consistent line between each point. Instead of this:
points = [
new THREE.Vector3(-5, 0, 0),
new THREE.Vector3(5, 0, 0),
new THREE.Vector3(5, 10, 0),
new THREE.Vector3(-5, 0, 0),
]
You want this:
points = [
new THREE.Vector3(-5, 0, 0),
new THREE.Vector3(5, 0, 0),
new THREE.Vector3(5, 0, 0),
new THREE.Vector3(5, 10, 0),
new THREE.Vector3(5, 10, 0),
new THREE.Vector3(-5, 0, 0),
]
Any idea how to make a line to be consistent even it is not straight?