In Three.js habe ich ein 3D-Objekt, bei dem ich lokale Schnittebenen verwende, um nur einen Teil des Objekts zu rendern.Wie geclippte Flächen als feste Objekte gerendert werden
Da 3D-Objekte jedoch "hohl" sind (was bedeutet, dass nur die äußere Oberfläche gerendert wird), können wir, wenn wir etwas von dieser Oberfläche abschneiden, das Objekt "sehen". Hier ist ein Beispiel, was ich meine, clipping a corner off a cube. Beachten Sie, wie wir die Rückseite der gegenüberliegenden Ecke sehen können.
Ich möchte das Aussehen des Objekts als solide geben. Basierend auf this issue scheint es, dass der beste Weg, dies zu erreichen, darin besteht, eine Oberfläche über dem ausgeschnittenen Bereich zu erzeugen, wodurch das Loch abgedeckt wird und das Objekt so erscheint, als wäre es nicht hohl.
Meine Frage ist, woher weiß ich, wo diese Oberfläche zu bauen? Bietet Three.js eine Möglichkeit, eine Liste von Scheitelpunkten zu erhalten, die sich zwischen einer Ebene und einer beliebigen Oberfläche schneiden? Wenn nicht, wie könnte ich dieses Problem selbst angehen?
Ich fand this question, aber der Autor hat nicht beschrieben, wie sie das Problem gelöst haben, das ich hier habe.
Können Sie einen Live-Link zu einem realistischen Anwendungsfall bereitstellen, der Ihre wahren Einschränkungen demonstriert? Sind Texturen beteiligt? Welches Material verwendest du? Was sind Sie bereit, Kompromisse einzugehen? – WestLangley
@WestLangley Sicher, dieses [einfaches Beispiel] (http://threejs.org/examples/#webgl_clipping) zeigt mein Problem. Ich würde gerne die Öffnungen verdecken, damit Sie nicht in die Form sehen können. Ich verwende keine Texturen, nur ein einfaches MeshPhongMaterial. Leistung ist meine Priorität, also wenn dies nur auf einfache Weise auf einfache Formen durchgeführt werden kann, dann sei es so. Aber ich würde gerne wissen, ob es möglich ist, dies auf eine allgemeine Weise zu tun, die auf jede Form angewendet werden kann. –