2012-09-10 44 views
5

私はチューブを作成しようとしており、チューブの開始点と終了点を変更するためにマウスをドラッグするようにそのチューブとやりとりすることができます。私はシーン内のオブジェクトを更新したいですThree.js TubeGeometryオブジェクトのメッシュを更新する

しかし、私は使用しているチューブオブジェクトに問題があります:パスポイントを更新すると、メッシュオブジェクトは画面上で更新されないので、私はそれが作成された後にそれを変更することはできません。

私の3Dオブジェクトの作成は、大体このようなものです:

var curve = new THREE.SplineCurve3([new THREE.Vector3(x, y, z), new THREE.Vector3(x2, y2, z2)]); 
var geometry = new THREE.TubeGeometry(curve, segments, 2, radiusSegments, closed); 
geometry.dynamic = true; 
var tubeMesh = THREE.SceneUtils.createMultiMaterialObject(geometry, [new THREE.MeshBasicMaterial({color: 0xffffff, opacity: 1, transparent: true})]); 
scene.add(tubeMesh);  

そして、私はポイントを更新します。私は次のようにしています:

tubeMesh.children[0].geometry.path.points[0] = new THREE.Vector3(x4, y4, z4)); 
tubeMesh.children[0].geometry.path.points[1] = new THREE.Vector3(x3, y3, z3)); 
tubeMesh.children[0].geometry.verticesNeedUpdate = true; 

しかし、私が変更すると、オブジェクトは画面上で更新されていないようです。チューブでこれを行うことは可能ですか?

答えて

5

あなたは、コードの断片のみを提供してきましたが、あなたはおそらく、あなたがWebGLRendererで物事を更新する方法についてThree.jsウィキで詳細と例を見つけることができます

geometry.verticesNeedUpdate = true; 

geometry.dynamic = true; 

が必要。

https://github.com/mrdoob/three.js/wiki/Updates

+0

私はまた、あなたが言及したコードが含まれて上記の私のコードの前とでは、その記事を読みました。 verticeNeedUpdateは、verticesプロパティが変更されたときにのみ適用されたと考えられます。ここで私はジオのパスプロパティを変更しています。ここの人は私のような同じ問題を抱えていますhttps://github.com/mrdoob/three.js/issues/1965 – user1533481

+0

簡単なjsfiddleの作成はどうですか? – WestLangley

+0

私はここでそれを作成しました:http://jsfiddle.net/drsagitn/dC5KA/2/。ポイントはmouseupイベントで更新されます。ありがとう。 – user1533481

関連する問題