python - Qt3D:根据实体和相机之间的距离缩放实体大小
问题描述
在代码中调整实体大小很容易:
self.transform = Qt3DCore.QTransform()
self.transform.setScale(1.5)
但我想动态调整实体大小。我希望我的实体在我将相机远离它时放大或在我接近相机时缩小。是否可以使用适当的着色器来做到这一点?
解决方案
我找到了这个链接。
我添加到顶点着色器中的代码在哪里:
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);
}
所以没有必要在程序中缩放实体。使用着色器更简单。
推荐阅读
- django - 向 Django 请求添加令牌
- c++ - 如何使用 pqxx 6.4 将子复合部分作为行?
- android - 添加库以进行刀柄测试的问题
- flutter - 如何从另一个 Widget 中的一个 statefulWidget 调用方法(Flutter)
- android - 如何在 android 中从我的 Tensorflow Lite 模型传递输入并获取输出
- javascript - Typescript : 创建自定义类型 axios 实例
- javascript - 我可以在使用 Chrome 扩展程序中的 webRequest.onHeadersReceived() 保存之前修改 set-cookie 标头吗
- r - 使用 Shiny/R 渲染带有日期的数据表时出错
- matlab - 如何将封装参数传递给 Simulink 中的枚举常量?
- javascript - 无法读取未定义的属性 loadChart