首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt 3D实体的多个实例

Qt 3D实体的多个实例
EN

Stack Overflow用户
提问于 2021-04-19 14:36:17
回答 1查看 81关注 0票数 0

我正尝试在Qt 3D中创建多个球体。以下是我开发的代码。

代码语言:javascript
复制
Entity{
    Repeater {

        model: 10
        SphereMesh {
            id: sphereMesh1
            radius: 1
        }

        Transform {
            id: sphereTransform1
            property real userAngle: 0.0
            matrix: {
                var m = Qt.matrix4x4();
                m.rotate(userAngle, Qt.vector3d(0, 1, 0));
                m.translate(Qt.vector3d(index, 0, 0));
                return m;
            }
        }

        PhongMaterial {
            id: material1
        }

        Entity {
            id: sphereEntity1
            components: [ sphereMesh1, material1, sphereTransform1 ]
        }
     }
  }

我已经在上面写了一个中继器来创建10个球体,但是屏幕上一片空白。有什么提示吗?

EN

回答 1

Stack Overflow用户

发布于 2021-06-17 19:03:34

使用NodeInstantiator

代码语言:javascript
复制
Entity {
id: root


Camera {
    id: mainCamera
    projectionType: CameraLens.PerspectiveProjection
    fieldOfView: 45
    aspectRatio: 16/9
    nearPlane : 0.1
    farPlane : 1000.0
    position: Qt.vector3d( 0.0, 0.0, -40.0 )
    upVector: Qt.vector3d( 0.0, 1.0, 0.0 )
    viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 )
}

OrbitCameraController {
    id: mainCameraController
    camera: mainCamera
}

components: [
    RenderSettings {

        Viewport {
            normalizedRect: Qt.rect(0.0, 0.0, 1.0, 1.0)
            RenderSurfaceSelector {
                CameraSelector {
                    id: cameraSelector
                    camera: mainCamera
                    FrustumCulling {
                        ClearBuffers {
                            buffers: ClearBuffers.AllBuffers
                            clearColor: "#333333"
                            NoDraw {}
                        }
                        LayerFilter {
                            filterMode: LayerFilter.DiscardAnyMatchingLayers
                            layers: [topLayer]
                        }
                        LayerFilter {
                            filterMode: LayerFilter.AcceptAnyMatchingLayers
                            layers: [topLayer]
                            ClearBuffers {
                                buffers: ClearBuffers.DepthBuffer
                            }
                        }
                    }
                }
            }
        }
    },
    InputSettings {}
]

Layer {
    id: topLayer
    recursive: true
}

ListModel {
    id: entityModel

    ListElement { x: 0; y: 0; z: 0 }
}



NodeInstantiator {
    id: instance

    model: entityModel

    delegate:Entity{

        SphereMesh {
            id: sphereMesh1
            radius:1
        }

        Transform {
            id: sphereTransform1

            translation: Qt.vector3d(x,y,z)

        }

        PhongMaterial {
            id: material1
            ambient: "red"
        }

        Entity {
            id: sphereEntity1
            components: [ sphereMesh1, material1, sphereTransform1 ]
        }
    }

    Component.onCompleted:
    {
        for(var i=0;i<10;i++)
        {
            entityModel.append({"x" : i*3, "y" : 0.0, "z" : Math.random()} )

        }

    }
}

}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67157030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档