2013-05-02 76 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