5

私は現在、新しい Babylon.js フレームワークを使用して小さなプロジェクトに取り組んでいます。私が遭遇した問題の 1 つは、基本的に 2 つのメッシュがあることです。メッシュの 1 つは背景であると想定されており、もう 1 つはカーソルに従って、他のメッシュのどこをターゲットとしているかをマークすることになっています。問題は、ターゲット メッシュをカーソルの位置に移動すると、scene.pick を使用するとバックグラウンド メッシュがブロックされ、他のメッシュの位置が自分自身に設定されることです。

Scene.pick を使用するときにターゲティング メッシュを無視して、背景メッシュのみを選択する方法はありますか、または使用できる他の方法はありますか? そうでない場合、基本的に特定のメッシュのみをレイキャストするために、この種の機能を実装する手順は何ですか?

コード サンプルやその他の形式の説明が必要な場合は、お知らせください。ありがとう!

4

1 に答える 1

10

わかりました、それは簡単です。

したがって、2 つのメッシュがあります。1 つは「グラウンド」、2 番目は「カーソル」と呼ばれます。地面でのみ拾いたい場合は、2 つの解決策があります。

初め:

var ground = new BABYLON.Mesh("ground",scene);
ground.isPickable = true ; 
var cursor = new BABYLON.Mesh("cursor", scene);
cursor.isPickable = false;  

...

var p = scene.pick(event.clientX, event.clientY); // it return only "isPickable" meshes
...

2番:

var ground = new BABYLON.Mesh("ground",scene);
var cursor = new BABYLON.Mesh("cursor", scene);

...

var p = scene.pick(event.clientX, event.clientY, function(mesh) {
    return mesh.name == "ground";  // so only ground will be pickable
}); 
...

よろしく。

于 2014-05-12T14:41:02.607 に答える