2013-05-02 74 views
1

如何根据运行时的TubeGeometry动态更改网格的半径。在运行时更新TubeGeometry的半径

这里是我创建的网格:

var points = new THREE.SplineCurve3([ 
    new THREE.Vector3(source.x, source.y, source.z), 
    new THREE.Vector3(target.x, target.y, target.z) 
]); 
var geometry = new THREE.TubeGeometry(points, 10, 1, 10, false, false); 
geometry.dynamic = true; 
var material = new THREE.MeshLambertMaterial({color:0x0000cc}); 
var mesh = new THREE.Mesh(geometry, material); 

在这里,我怎么尝试更新管半径:

var geometry = mesh.geometry; 
geometry.radius = 200; 
geometry.verticesNeedUpdate = true; 
mesh.updateMatrix(); 

遗憾的是它不更新筒半径。它是如何正确地完成的?它有可能吗?

回答

3

radius参数仅在构造几何时使用。改变它将不起作用。

您可以更改mesh.scale,但由于样条曲线的原因,您的情况可能无法正常工作。 (它的工作用于CyllinderGeometry。)

three.js所r.58

+0

实际上,管的半径不能容易地通过缩放它改变。我正在使用一个圆柱体(因为我只连接两个点)使用[此解决方案](http://stackoverflow.com/questions/15316127/three-js-line-vector-to-cylinder)(参考如果其他人得到卡在这里)。 – Zardoz 2013-05-02 22:20:13