私は、基本的なアニメーションを作成するためにthree.jsを使い始めました。そして、図形(ボックス)にエッジを描くためにいくつかの助けが必要でした。そこで、ボックスを作成するときにTHREE.MeshBasicMaterialの「ワイヤフレーム」プロパティを「真」に設定する方法を見つけました。残念ながら、私はボックスの各面の対角線を表示したくないので、私のためには機能しません。three.js内のオブジェクトにエッジを追加するには?
次に、私が望むようにエッジを表示するTHREE.EdgesHelperクラスを使用していた代わりに、別の問題があります。
事はいくつかのボックスの顔の位置を変更し、この変更でエッジを更新したままにしておく必要がありますが、エッジはそれをしません。
const cubeWidth = 3;
const geometry = new THREE.BoxGeometry(cubeWidth, cubeWidth, 20);
const material = new THREE.MeshBasicMaterial({ vertexColors: THREE.VertexColors });
const cube = new THREE.Mesh(geometry, material);
const edge = new THREE.EdgesHelper(cube, 0x000000);
その後、私はレンダリング機能上の各箱の正面顔を更新:
cubes.forEach(function(cube) {
const geometry = cube.children[0].geometry;
geometry.vertices.forEach(function(v) {
if(v.z > 0) v.x -= 3;
});
geometry.verticesNeedUpdate = true;
});
私はこの問題を示しjsfiddleを作った:https://jsfiddle.net/mauro98/wf20tmhu/139/
あなたは私にどのように上の任意の提案を与えることができます私が欲しいものを実行しますか? 私は解決策を探していますが、まだそれを見つけることはできません。
ありがとうございました。
注意してください! (1)ヘルパーにはシーンの子を直接追加する必要があります。 (2)オブジェクトを削除するときは、オブジェクトを適切に '破棄(')しなければなりません。 – WestLangley
シーンではなくシーンの子にヘルパーを追加するリスクはありますか?ヘルパーを処分する例がありますか? – Radio
(1)メッシュの変形時にヘルパーが正しくレンダリングされないというリスクがあります。あなたのフィドルで試してみてください。 (2)https://github.com/mrdoob/three.js/blob/master/examples/webgl_test_memory.html。 – WestLangley