ScreenRayCaster в QML не дает никаких отзывов

Я следую за своим предыдущим постом ScreenRayCaster в QML

Я просто тестирую тип ScreenRayCaster в очень простой сцене, вот часть моего qml-кода:

import Qt3D.Core 2.0
import Qt3D.Render 2.11
import Qt3D.Input 2.0
import Qt3D.Extras 2.0

import QtQuick 2.0

Entity {
    Camera {
        id: camera
        projectionType: CameraLens.PerspectiveProjection
        fieldOfView: 45
        nearPlane : 0.1
        farPlane : 1000.0
        //aspectRatio: 1.2
        position: Qt.vector3d( 0.0, 0.0, 100.0 )
        upVector: Qt.vector3d( 0.0, 1.0, 0.0 )
        viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 )
    }

    components: [
        RenderSettings {
            activeFrameGraph: ForwardRenderer {
                camera: camera              
                clearColor: "transparent"
            }
            pickingSettings.pickMethod: PickingSettings.TrianglePicking
        },
        InputSettings { }
    ]

    Entity {
        id: testEntity
        objectName: "testItem"
        PhongMaterial {
            id: materialTest
            diffuse: Qt.rgba(1.0, 0.0, 0.0, 1.0)
            ambient: Qt.rgba(0.7, 0.7, 0.7, 1.0)
        }

        SphereMesh {
            id: meshid
            radius: 5
        }

        Transform {
            id: transformid
        }

        components: [ meshid, materialTest, transformid]
    }

    ScreenRayCaster {
        id: screenRayCaster
        onHitsChanged: {
            console.log("onHitsChanged")
            printHits("Screen hits", hits)
        }
    }

    MouseHandler {
        id: mouseHandler
        sourceDevice:  MouseDevice {}
        onReleased: { 
            console.log("mouseHandler onReleased")
            screenRayCaster.trigger(Qt.point(mouse.x, mouse.y)) 
        }
    }

    function printHits(desc, hits) {
        console.log(desc, hits.length)
        for (var i=0; i<hits.length; i++) {
            console.log("  " + hits[i].entity.objectName, hits[i].distance, hits[i].worldIntersection.x, hits[i].worldIntersection.y, hits[i].worldIntersection.z)
        }
    }

Проблема в том, что даже если я нажму на красную сферу, она никогда не перейдет к onHitsChanged обратный вызов, как у меня нет пересечений. Результаты только "mouseHandler onReleased", что доказывает, что триггерная функция вызывается.

Любые советы? Спасибо

0 ответов

Другие вопросы по тегам