Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Qt3D: Artifacts of displaying when applied Qt3DRender::QLayerFilter
Forum Updated to NodeBB v4.3 + New Features

Qt3D: Artifacts of displaying when applied Qt3DRender::QLayerFilter

Scheduled Pinned Locked Moved Unsolved General and Desktop
2 Posts 1 Posters 173 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • avttrueA Offline
    avttrueA Offline
    avttrue
    wrote on last edited by
    #1

    I am trying to use layer filtering using Qt3DRender::QLayerFilter.
    For this I wrote a simple test (see below). The full test project can be viewed here.
    At a certain position of the red sphere, an artifact appears, which looks like display from the another camera in coordinates (0.0, 0.0, 0.0).
    See screen:
    Screenshot_20191224_084237.png
    In my example, the red sphere can be moved with the WSAD buttons. See (-7, 0, -14) red sphere position. How to remove these artifacts?

    main.cpp

    int main(int argc, char *argv[])
    {
        QGuiApplication application(argc, argv);
            My3DWindow window;
    
            auto sphere1 = new Qt3DCore::QEntity(window.Scene());
            auto sphere2 = new Qt3DCore::QEntity(window.Scene());
    
            // material, transform, mesh initialisation
    
            sphere1->addComponent(material1);
            sphere1->addComponent(spheremesh1);
            sphere1->addComponent(transform1);
            sphere1->addComponent(window.OpaqueLayer());
    
            sphere2->addComponent(material2);
            sphere2->addComponent(spheremesh2);
            sphere2->addComponent(transform2);
            sphere2->addComponent(window.TransparentLayer());
    
            window.show();
            return application.exec();
        }
    

    My3DWindow class:

    My3DWindow::My3DWindow(QScreen *screen):
        Qt3DExtras::Qt3DWindow(screen)
    {
        m_Scene = new Qt3DCore::QEntity;
        setRootEntity(m_Scene);
    
        auto renderSurfaceSelector = new Qt3DRender::QRenderSurfaceSelector(m_Scene);
        renderSurfaceSelector->setSurface(this);
        auto clearBuffers = new Qt3DRender::QClearBuffers(renderSurfaceSelector);
        clearBuffers->setBuffers(Qt3DRender::QClearBuffers::AllBuffers);
        clearBuffers->setClearColor(Qt::gray);
    
        auto viewport = new Qt3DRender::QViewport(renderSurfaceSelector);
        auto cameraSelector = new Qt3DRender::QCameraSelector(viewport);
    
        m_Camera = new Qt3DRender::QCamera(cameraSelector);
        m_Camera->lens()->setPerspectiveProjection(45.0f, 16.0f/9.0f, 0.1f, 1000.0f);
        m_Camera->setPosition(QVector3D(0.0f, 0.0f, 100.0f));
        m_Camera->setViewCenter(QVector3D(0.0f, 0.0f, 0.0f));
    
        cameraSelector->setCamera(m_Camera);
    
        auto cameraController = new Qt3DExtras::QFirstPersonCameraController(m_Scene);
        cameraController->setCamera(m_Camera);
    
        m_OpaqueLayer = new Qt3DRender::QLayer;
        auto opaqueFilter = new Qt3DRender::QLayerFilter(m_Camera);
        opaqueFilter->addLayer(m_OpaqueLayer);
    
        m_TransparentLayer = new Qt3DRender::QLayer;
        auto transparentFilter = new Qt3DRender::QLayerFilter(m_Camera);
        transparentFilter->addLayer(m_TransparentLayer);
    
        setActiveFrameGraph(renderSurfaceSelector);
    }
    
    1 Reply Last reply
    0
    • avttrueA Offline
      avttrueA Offline
      avttrue
      wrote on last edited by
      #2

      Fixed. I don't fully understand why it's the right thing to do:

      auto clearBuffers = new Qt3DRender::QClearBuffers(cameraSelector);
      

      insted

      auto clearBuffers = new Qt3DRender::QClearBuffers(renderSurfaceSelector);
      
      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved