Qt3D: масштабировать размер объекта в соответствии с расстоянием между объектом и камерой - PullRequest
0 голосов
/ 30 августа 2018

Изменить размер сущности в коде легко:

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

Но я хочу динамически изменить размер объекта. Я хочу, чтобы моя сущность увеличивалась при удалении камеры от нее или уменьшалась при приближении к камере. Возможно ли это сделать с помощью подходящих шейдеров?

1 Ответ

0 голосов
/ 03 сентября 2018

Я нашел эту ссылку .

где код, который я добавил в мой вершинный шейдер:

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);
}

Таким образом, нет необходимости масштабировать объекты в программе. Проще использовать шейдер.

...