2017-07-05 10 views
0

半透明のボックスを別の部分に描画することで、細分化したいモデルがあります。ビューアにカスタムジオメトリを追加する

例の後にhttps://forge.autodesk.com/cloud_and_mobile/2016/02/custom-transparent-meshes-with-view-data-api.html私は箱を描き、それらをsceneAfterオブジェクトに加えました。したがって、それらは半透過的に描画され、モデルは期待どおりに表示されます。

私はbufferGeometryを使用しました。これは属性の欠落エラーを回避します。

ただし、ボックスを選択することも、ボックスを無視してその中のコンポーネントを選択することもできません。この例では、「別のオプションは、ビューアと同じようにカスタムジオメトリを作成することで、選択に参加できます」と述べています。ビューアがジオメトリを作成する方法に関するドキュメントはありますか?

ソースを検索、私はdbIdfragIdaddSingleMeshMeshに割り当てられますが、モデルの統合の一環としてされて見ることができます。

ボックスやボックス内のアイテムを選択したいのかどうかはまだわかりませんが、ゴーストアウトされたコンポーネントを無視することがわかっているので、これは簡単に切り替えることを願っていますか?

答えて

0

シーンにカスタムメッシュを追加すると、ビューアの選択メカニズムに参加しません。私が知る限り、これを達成する方法を示すサンプルはありませんので、開発チームに方向性を提供できるかどうかを尋ねています...

その間に、別々に追加したメッシュの選択を処理します。これは、そのブログ投稿で参照されているサンプルで行ったことです:Boolean Operations in the Forge Viewer。カスタム選択はthereを行っている:Controlling components selection in the Viewer

onClick (event) { 

    const pointer = event.pointers 
    ? event.pointers[0] 
    : event 

    const rayCaster = this.pointerToRaycaster(
    this.viewer.impl.canvas, 
    this.viewer.impl.camera, 
    pointer) 

    const intersectResults = rayCaster.intersectObjects(
    this.intersectMeshes, true) 

    if (intersectResults.length) { 

    const mesh = intersectResults[0].object 

    this.panel.setVisible(false) 

    this.panel.setNodeProperties(mesh.dbId) 

    this.panel.setVisible(true) 
    } 
} 

はまた、視聴者ネイティブの選択をフィルタリングすることを扱っている記事に興味があるかもしれません。私は `handleSingleClick`イベントを取得するには、` ToolInterface`を追加した後、これは私はボックスを選択することができます

+0

を助け

希望。だからそこの半分。 –

+0

まだボックスの下の項目を選択しようとしています。 'Viewer3DImpl.rayIntersect'はアイテムを選択しているように見え、' sceneAfter'を見て、そのボックスを探します。したがって、 'dbId'または' fragId'値をカスタムメッシュに追加する安全な方法があれば、rayIntersectはこれを必要とせずに通常の選択でボックスを見つけることができると思います。 –

+0

もう一つのリクエストは 'sceneAfter'の子に追加して' intersectObject'でスキップしたり、結果からフィルタリングしてより高い距離の値を持つすべての交差点を削除したりするためのフラグです。 –

関連する問題