我正在尝试在 Qt 3D 中创建多个球体。以下是我开发的代码。
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 个球体,但屏幕变成空白。有什么提示吗?
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()} )
}
}
}
}