6

チューブを作成し、マウスをドラッグしてチューブの始点/終点を変更するなど、そのチューブと対話する機能を作成しようとしています。そのために、頂点位置の値を直接変更し、シーン内のオブジェクトを更新したいと思います

しかし、使用しているチューブ オブジェクトで問題が発生しました。パス ポイントを更新すると、メッシュ オブジェクトが画面上で更新されないため、作成後に変更できないようです。

私の 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;

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

4

1 に答える 1

5

コードの断片しか提供していませんが、おそらく必要です

geometry.verticesNeedUpdate = true;

geometry.dynamic = true;

で物事を更新する方法について、Three.js wiki で詳細と例を見つけることができますWebGLRenderer

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

于 2012-09-10T13:28:24.647 に答える