私はTHREE.Line
オブジェクトを持っていて、カスタムグリッドを編成しています。今私が抱えている問題は、intercept
がユーザーのマウスがグリッド線の上を "直接"行く場合にのみ成功する、intersectObjects
へのレイキャストを使用するときです。IntersectObjects - THREE.Line - Three.js
添付写真を参照してください:だから、最終的に私が達成しようとしているのです何をするようにするときどのように「見えない」顔、あるいは形状の線の間の空間に塗りつぶしをすることができ、ある
をユーザーのマウスがこのグリッド上を移動すると、私はアクションをトリガーできます。現在、私がやっていることは次のとおりです:
var response = this.buildGridGeometry(modelStep,modelSize,gridtype);
var geometry = response['geometry'];
geometry.computeBoundingBox();
// # Setup the material
var material = new THREE.LineBasicMaterial({ color: 0x000000, opacity: 0.2 });
// # Draw each individual line
var line = new THREE.Line(geometry, material, THREE.LinePieces);
何か提案がありますか?
2つの提案。 raycastersプロパティlinePrecisionをより高い値に設定する方法はありますか?ドキュメンテーションはこのプロパティをLineオブジェクトと交差するときのRaycasterの精度係数として定義しています。たぶんそれは線の間の領域を埋めることができます。 2番目の提案は、PlaneGeometryをグリッドに合わせて(同じ変換マトリックスを与えて)、スケールし、整列させ、 '.visible = false;'にすることです。飛行機が交差すると、線のグリッドも同じことが分かります。 – micnil
Micnil私は、平面のジオメトリを変換する考えが好きです。あなたの意見では、より良い選択肢は何ですか? –
私は線のグリッドが長方形であれば平面幾何学が良いと思うが、より「L」字形に見える。これは、おそらく2つの飛行機が必要になり、ちょっとした "ハッキー"な解決策になることを意味します。より高いlinePrecisionを最初に設定して、それがあなたのニーズに合っているかどうか確認してください。ライン精度の高い結果の1つは、グリッドがエッジの外側で少し交差することです。グリッドは、少しの高さを持つかのように交差します。私が何を意味するのか理解してほしい、そうでなければ、それを試してみてください。 – micnil