Qt3D:根据实体和相机之间的距离缩放实体大小
Qt3D: Scale entity size according to a distance between entity and camera
在代码中调整实体大小很容易:
self.transform = Qt3DCore.QTransform()
self.transform.setScale(1.5)
但我想动态调整实体大小。我希望我的实体在我将相机移开时放大,或者在我靠近相机时缩小。是否可以使用适当的着色器来做到这一点?
我找到了这个 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);
}
因此不需要在程序中缩放实体。使用着色器更简单。
在代码中调整实体大小很容易:
self.transform = Qt3DCore.QTransform()
self.transform.setScale(1.5)
但我想动态调整实体大小。我希望我的实体在我将相机移开时放大,或者在我靠近相机时缩小。是否可以使用适当的着色器来做到这一点?
我找到了这个 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);
}
因此不需要在程序中缩放实体。使用着色器更简单。