Qt3D:根据实体和相机之间的距离缩放实体大小

时间:2018-08-30 08:15:42

标签: python python-3.x opengl qt3d pyside2

很容易在代码中调整实体的大小:

self.transform = Qt3DCore.QTransform()
self.transform.setScale(1.5)

但是我想动态调整实体的大小。我希望当我将相机移开时,实体扩大或在接近相机时缩小。可以使用适当的着色器来做到这一点吗?

1 个答案:

答案 0 :(得分:0)

我找到了这个link

其中是我添加到我的顶点着色器中的代码:

in vec3 vertexPosition;
uniform mat4 modelViewProjection;

void main()
{
    float reciprScaleOnscreen = 0.005;
    float w = (modelViewProjection * vec4(0.0, 0.0, 0.0, 1.0)).w;
    w *= reciprScaleOnscreen;

    gl_Position = modelViewProjection * vec4(vertexPosition.xyz * w , 1.0);
}

因此,无需缩放程序中的实体。使用着色器更简单。