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

问题描述 投票:0回答:1

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

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

但我想动态调整实体大小。我希望当我移动相机时我的实体放大,或者当我接近相机时缩小。是否可以使用适当的着色器执行此操作?

python python-3.x opengl qt3d pyside2
1个回答
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);
}

因此,无需在程序中扩展实体。使用着色器更简单。

© www.soinside.com 2019 - 2024. All rights reserved.