Three.js LineDashedMaterial-更改线长度时,保持短划线的长度相同
我创建了一条虚线,它随着时间的推移改变位置和长度。为了更新它的位置,我正在调整它的几何体对象的顶点。这非常有效,除非直线变长或变短,否则破折号也会变长或变短,尽管是以绝对单位定义的,而不是相对于直线的长度 我已经在初始化时调用了Three.js LineDashedMaterial-更改线长度时,保持短划线的长度相同,three.js,Three.js,我创建了一条虚线,它随着时间的推移改变位置和长度。为了更新它的位置,我正在调整它的几何体对象的顶点。这非常有效,除非直线变长或变短,否则破折号也会变长或变短,尽管是以绝对单位定义的,而不是相对于直线的长度 我已经在初始化时调用了geometry.computeLineDistancess()(我必须这样做才能让破折号工作),我希望如果我在每个渲染循环中都调用它,它们将保持正确的比例,但这不起作用 当线条改变长度时,我能做些什么来保持虚线的固定长度吗 下面是一个JSFIDLE说明了问题(代码如下)
geometry.computeLineDistancess()
(我必须这样做才能让破折号工作),我希望如果我在每个渲染循环中都调用它,它们将保持正确的比例,但这不起作用
当线条改变长度时,我能做些什么来保持虚线的固定长度吗
下面是一个JSFIDLE说明了问题(代码如下):
如果我没弄错,那么你可以这样做:
function render() {
geometry.vertices[0].z = Math.sin(Date.now() / 1000) * 10;
geometry.verticesNeedUpdate = true;
geometry.computeLineDistances(); // re-calculate line distances
geometry.lineDistancesNeedUpdate = true;
renderer.render(scene, camera);
}
UPD#1方法.computeLineDistancess()
已从THREE.Geometry()
移动到THREE.Line()
(r94)
function render() {
geometry.vertices[0].z = Math.sin(Date.now() / 1000) * 10;
geometry.verticesNeedUpdate = true;
geometry.computeLineDistances(); // re-calculate line distances
geometry.lineDistancesNeedUpdate = true;
renderer.render(scene, camera);
}