2017-07-05 3 views
0

Ich habe ein Modell, das ich unterteilen möchte, indem ich halbtransparente Kästen über verschiedene Teile zeichne.Hinzufügen von benutzerdefinierter Geometrie zum Viewer

Nach dem Beispiel https://forge.autodesk.com/cloud_and_mobile/2016/02/custom-transparent-meshes-with-view-data-api.html habe ich die Boxen gezeichnet und sie dem Objekt sceneAfter hinzugefügt. Sie zeichnen also halbtransparent, und das Modell erscheint wie erwartet in ihnen.

Ich habe eine bufferGeometry verwendet, die den fehlenden Attributfehler vermeidet.

Allerdings kann ich weder die Kästchen auswählen, noch die Kästchen ignorieren und die darin enthaltenen Komponenten auswählen. Im Beispiel heißt es: "Eine weitere Option wäre, die benutzerdefinierte Geometrie auf die gleiche Weise wie den Viewer zu erstellen, damit sie an der Auswahl teilnehmen kann". Gibt es eine Dokumentation darüber, wie der Betrachter die Geometrie erstellt?

durch die Quelle Suchen, kann ich sehen, dbId und fragId zu einem Mesh in addSingleMesh zugeordnet sind, sondern als Teil des Modells Konsolidierung.

Ich bin mir noch nicht sicher, ob ich die Boxen oder die Elemente in ihnen auswählen möchte, aber da der Betrachter weiß, dass Komponenten, die ausgeblendet sind, ignorieren, hoffe ich, dass dies relativ einfach ist?

Antwort

0

Wenn Sie der Szene ein benutzerdefiniertes Mesh hinzufügen, wird es nicht zum Auswahlmechanismus des Viewers verwendet. Soweit ich weiß, haben wir kein Beispiel, das zeigt, wie das zu erreichen ist, also frage ich das Entwicklungsteam, ob sie ein paar Anweisungen geben können ...

In der Zwischenzeit können Sie etwas Logik hinzufügen Übernehmen Sie die Auswahl der Netze, die Sie separat hinzugefügt haben. Dies ist, was ich in dem Beispiel getan habe, auf das in diesem Blogpost verwiesen wird: Boolean Operations in the Forge Viewer. Individuelle Auswahl wird there ausgeführt:

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) 
    } 
} 

Sie können auch in diesem Artikel interessiert sein, die mit Filtern der Betrachter nativen Auswahl Angebote: Controlling components selection in the Viewer.

Hoffnung, die

+0

hilft Auf diese Weise können Sie mir die Boxen aus, nachdem ich ein 'ToolInterface' das' handleSingleClick' Ereignis zu bekommen hinzugefügt. So halb da. –

+0

Immer noch versuchen, den Artikel unter der Box auszuwählen. Es scheint, dass 'Viewer3DImpl.rayIntersect' das Element auswählt und dann' sceneAfter' ansieht und das Feld findet. Also, wenn es eine sichere Möglichkeit gibt, 'dbId' oder' fragId' Werte zu meinem benutzerdefinierten Mesh hinzuzufügen, denke ich, dass rayIntersect die Box durch die normale Auswahl finden wird, ohne dies zu benötigen. –

+0

Und die andere Anfrage wäre für ein Flag, das ich zu den Kindern von 'sceneAfter' hinzufügen kann, um sie im' intersectObject' zu überspringen, oder filtere sie von den Ergebnissen, bevor sie alle Schnittpunkte mit höheren Distanzwerten fallen lässt. –

Verwandte Themen