2017-11-14 5 views
0

In Qt3D 5.9 verwende ich Szene 3D, um eine OBJ-Datei zu rendern und anzuzeigen. Ich habe auch die Objektauswahl aktiviert. Wenn ein Benutzer einen Teil des Objekts auswählt, weiß ich genau, wo auf das Modell geklickt wurde. Was ich tun möchte, ist Farbe zu dem Teil des Objekts/Netzes hinzuzufügen, auf den der Benutzer geklickt hat. Um genauer zu sein, möchte ich für den "y" -Wert, auf den der Benutzer geklickt hat, eine Linie um das Objektmodell herum auf diesem "y" -Wert färben. Ich habe mich online umgeschaut und kann nichts finden um zu helfen. Leider bin ich nicht vertraut, wenn es um 3D-Objekte, Meshes usw. geht. Wie kann ich in Qt 3D 5.9 nur einen Teil eines Meshes einfärben?Hinzufügen von Farbe zu einem Teil eines Mesh oder OBJ Qt3D 5.9 in QML

Antwort

0

Da Sie Ihre eigenen Meshes geladen haben, haben Sie vermutlich verstanden, wie die GeometryRenderer und Geometry QML Components funktionieren. Die Geometrie-Komponente übernimmt ein Attribut, das zum Beispiel die Position und die Normalen Ihres Objekts definiert. Mit den Namen, die Sie diesen Attributen zuweisen, können Sie sie in benutzerdefinierten Shadern abrufen. Sie können in Ihrer Geometrie ein Attribut hinzufügen, das einen Puffer definiert, in dem Sie die Scheitelpunktfarben anstelle von Positionen und Normalen speichern.

Dann benötigen Sie ein benutzerdefiniertes Material (Wenn Sie kein benutzerdefiniertes Material haben, versuchen Sie, das QML-Dokument zu lesen, um zu verstehen, wie es funktioniert. Ich weiß, das Dokument ist nicht vollständig, aber es ist ein guter Anfang)

Mit diesem benutzerdefinierten Material können Sie Ihren eigenen Shader aufrufen, in dem Sie die Farbe eines Scheitelpunkts auf die gleiche Weise abrufen können, wie Sie seine Position abrufen.

So abschließen, da man nur einen Teil der Eckpunkte färben möchten, Sie

  • Ein Puffer, der alle Farben von allen Ecken des Mesh
  • A Geometrie Attribut benötigt, die erzählt, wie diesem Puffer
  • ein Skript, das den Puffer auf Auswahl aktualisieren
  • ein kundenspezifisches Material und ein benutzerdefinierter Shader zu lesen, die den Farbpuffer verwendet das Objekt
zu malen

Dies ist nicht so einfach zu bewerkstelligen, aber es ist möglich und sollte Ihnen einen besseren Einblick in die Funktionsweise von Geometrie, Materialien und Shadern in QML geben.

Wenn Sie nicht mit diesen vertraut sind, würde ich vorschlagen, dass Sie zunächst den Par-Vertex-Farbpuffer assistieren und versuchen, einen benutzerdefinierten Shader zu machen, der Ihr gesamtes Objekt rot zeichnet. Von diesem werden Sie in der Lage sein, weiter zu gehen und herauszufinden, wie pro Scheitelpunkt Farben zu Ihrem Shader

übergeben werden Viel Glück

Verwandte Themen