Ich begann gerade mit QML, um eine QT3D-Szene zu erstellen. Ich möchte filtern, welche Elemente meiner Szene mit einem RenderPassFilter gerendert werden. Hier ist meine wirklich einfach Renderer:QT3D QML RenderPassFilter mit mehreren Tasten scheint abgehört
import Qt3D.Core 2.0
import Qt3D.Render 2.0
Viewport {
id: root
property color clearColor: Qt.rgba(0, 0, 0.2, 1)
property Camera mainCamera
RenderSurfaceSelector {
id: surfaceSelector
// Clear Buffer
ClearBuffers {
buffers: ClearBuffers.ColorDepthBuffer
clearColor: root.clearColor
NoDraw {}
}
RenderPassFilter {
matchAny: [FilterKey{name: "type"; value: "filter1"}] // <-- THIS LINE IS THE FILTER
CameraSelector {
id: selector
camera: mainCamera
}
}
}
}
Diese ordnungsgemäß alle Elemente zeigt (und nur die), die eine FilterKey{name: "type"; value: "filter1"}
Ersetzen dieser mit einem anderen Filter funktioniert gut enthält:
RenderPassFilter {
matchAny: [FilterKey{name: "type"; value: "filter2"}] // <-- THIS LINE IS THE FILTER
CameraSelector {
id: selector
camera: mainCamera
}
}
wird Anzeige des Objektsatzes mit dem Filterwert filter2
anstelle von filter1
Jetzt ist mein Problem, dass das MatchAny Feld eine Liste ist, also würde ich es akzeptieren, um mehrere Elemente zu nehmen. Leider ist die folgende nicht an alles, was ich diese alle Elemente machen würde erwarten
RenderPassFilter {
matchAny: [FilterKey{name: "type"; value: "filter1"}, FilterKey{name: "type"; value: "filter2"}] // <-- THIS LINE IS THE FILTER
CameraSelector {
id: selector
camera: mainCamera
}
}
jedes Element angezeigt werden entweder mit Wert filter1
oder Wert filter2
. Wie kann man das erreichen?
EDIT: Ich habe erkannt, während dies, dass matchAny
Entsendung könnte das Gegenteil von dem bedeuten, was ich aber: jeder Filterschlüssel in einem Elemente übereinstimmen muss, was int die matchAny Liste ist (aber die ganze Liste muss angepasst werden). .. wenn das Sinn macht. Wie auch immer, die Frage bleibt: Wie kann ich einen RenderPassFilter verwenden, um Elemente zu erlauben, die entweder filter1
oder filter2
enthalten?