Forge Viewerでは、カスタムハンドラを作成しました。それが結合したダブルクリックして、イベントを発生させたときに、OK働く通常のオブジェクト/メッシュ/材料については、偽のビューアでは、新しいTHREE.Object3Dを追加できますが、ビューアでは選択できません。
const hitTest = this.viewer.clientToWorld(event.canvasX, event.canvasY, true);
でクリックされたアイテムを計算し、hitTest.dbIdが返された場合に、さらに、hitTest.pointオブジェクトは、3D空間内でクリックした場所を示します。その場所を使ってマテリアル、メッシュ、オブジェクトを作成し、シーンに追加します。 (いくつかの小さなステップはスキップされました)
var material_orange = new THREE.MeshLambertMaterial({color: 0xFEBD17});
this.viewer.impl.matman().addMaterial('SBD-Material-' + 'orange', material_orange, true);
var sphereMesh =
new THREE.Mesh(
new THREE.SphereGeometry(niceRadius, 20),
material_orange);
var sphereModel = new THREE.Object3D();
sphereModel.add(sphereMesh);
sphereModel.position.set(atPoint.x, atPoint.y, atPoint.z);
this.viewer.impl.scene.add(sphereModel);
this.viewer.impl.invalidate(true);
すべては素晴らしいです。球が私のモデルに追加されます。 (それは黒ですが、私はまだ理由を理解できません...)しかし、最大の問題は、私が球をクリックすることができないということです。これをクリックすると、モデル内の基礎となるオブジェクト、通常は壁または床が選択されます。
シーン内のオブジェクトを取得するには、RayTraceメソッドを使用する必要がありますか?またはオブジェクト/メッシュ/マテリアルにクリック可能にするプロパティがありますか?ビューアの更新?