オブジェクトをグループ化するためにObject3Dにいくつかのオブジェクトを追加しましたが、その上でクリックを検出しようとしています。 私のシーンが600x400
の大きさを持って、私のカメラは、三オブジェクト内にあり、私のイベントハンドラのコードは以下のようになります。 Object3D内の交差点
function onDocumentMouseDown(event) {
event.preventDefault();
var mouse = {};
mouse.x = (event.clientX/600) * 2 - 1;
mouse.y = - (event.clientY/400) * 2 + 1;
var vector = new THREE.Vector3(mouse.x, mouse.y, 1);
projector.unprojectVector(vector, three.camera);
var ray = new THREE.Ray(three.camera.position, vector.subSelf(three.camera.position).normalize());
var intersects = ray.intersectObjects(group.children);
alert(intersects.length);
[...]
}
は実際に私が交差するオブジェクトの数を警告しています。しかし、それはゼロのままです。交差したオブジェクトは見つかりませんでした。私は既に、私の投影ベクトルのx、y、z値で少しうまく演奏しました - 成功せずに。
jsfiddleでこの問題を示すためにサンプルを削除しました。たぶん、誰かが私に短いヒントを持っているかもしれません。
大丈夫ああ - ありがとうございました!しかし、今では3つのキューブをすべて単一のオブジェクトとして検出します。また、カスタムオブジェクト配列を使用してキューブを追加しようとしましたが、結果は同じです。すべての単一キューブを検出する方法はありますか? –
新しい投稿を作成し、新しい問題を詳しく説明できますか? – WestLangley
私は解決策を見つけました。すべてのMultiMaterialObjectsが同じ材料のインスタンスを持っていたので、材料色の変更がすべてのオブジェクトに影響を与えました。だから今は明らかです。どうもありがとうございました! –