Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js LineDashedMaterial-更改线长度时,保持短划线的长度相同_Three.js - Fatal编程技术网

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);
}