0

ここで以前に回答された質問の例を使用していました: Three Js Object3D Button Group Detect Single Object Click While Mouse Movement Causes Object3D Button Group Zoomi

思い通りに動作するようにいくつかの変更を加えていましたが、いくつかの問題に遭遇しました。

ここに私の jsbin があります: http://jsbin.com/agadiw/1/

1) オブジェクトを CubeGeometry から SphereGeometry に切り替えましたが、衝突はそれほど正確ではありません。球の特定の部分をクリックして衝突をトリガーすることしかできないようです。球体は立方体と同じサイズですが、球体の外側をクリックすると衝突が発生することもあります。衝突時に球体固有の番号を警告します。何か設定や位置が間違っていませんか?

2) 球をクリックすると、その色を赤に変更しようとしますが、クリックした球だけでなく、すべての球の色が赤に変わります。球がクリックされたときに交差する配列が何であるかを調べましたが、クリックされたものだけが返されます。なぜそれらすべてが変更されるのかわかりません。

3) 最後に、私は良いリソース、チュートリアル、例を探していました。それらは最新のものであるか、どのように機能するかについての良い説明がありますが、公式ドキュメントを試してみましたが、実際には何も見つかりませんでした。 「todo」と言うだけです。私がこのことを学ぶのを助けるために、誰かが私を導くことができるリソースを持っているかどうか疑問に思っていました.

助けてくれてありがとう。

4

2 に答える 2

1

intersectObjects() を使用して交差点を確認しています。ただし、交差点にはこれらすべてのオブジェクトが含まれます。これを修正するには、代わりに intersectObject() を使用してオブジェクトをループする必要があります

 for (var i=0; i<=(objects.length-1); i++) {
     var intersect = raycaster.intersectObject(objects[i]);
     if (intersect.length > 0) {
         //change the color here
         break; //important to break the loop
     }
 }

ドキュメンテーションに関しては; これらは良いです。しかし現在は、主にソースコードと github を掘り下げて、必要なものを見つけています。

于 2013-07-03T10:00:54.253 に答える
1

1)あなたの場合、CSSmarginはゼロでなければなりません。

body { background: black; margin: 0; overflow: hidden }

または、この質問への回答をご覧ください。

2) すべてのオブジェクトが同じマテリアルを共有しているため、すべてのオブジェクトの色が変わります。代わりにこれを行います:

ButtonsMesh = new THREE.Mesh( ButtonsGeometry, new THREE.MeshBasicMaterial() );

3) 例を調べたり、メッセージ ボードを熟読したりして、three.js を学習する必要があります。追加のヒントについては、この回答もご覧ください。

于 2013-07-06T00:47:06.817 に答える