私はチューブを作成しようとしており、チューブの開始点と終了点を変更するためにマウスをドラッグするようにそのチューブとやりとりすることができます。私はシーン内のオブジェクトを更新したいです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;
しかし、私が変更すると、オブジェクトは画面上で更新されていないようです。チューブでこれを行うことは可能ですか?
私はまた、あなたが言及したコードが含まれて上記の私のコードの前とでは、その記事を読みました。 verticeNeedUpdateは、verticesプロパティが変更されたときにのみ適用されたと考えられます。ここで私はジオのパスプロパティを変更しています。ここの人は私のような同じ問題を抱えていますhttps://github.com/mrdoob/three.js/issues/1965 – user1533481
簡単なjsfiddleの作成はどうですか? – WestLangley
私はここでそれを作成しました:http://jsfiddle.net/drsagitn/dC5KA/2/。ポイントはmouseupイベントで更新されます。ありがとう。 – user1533481