我正在尝试使用three.js创建广告牌。我尝试使用THREE.Sprite,但是当我使用透视投影时,精灵的大小会随距离而变化。我尝试使用带自定义着色器的自定义shaderMaterial创建一个平面。
用于缩放广告牌的着色器代码
vec4 gl_Position = projectionMatrix * (modelViewMatrix * vec4(0.0, 0.0, 0.0, 1.0) + vec4(position.x, position.y, 0.0, 0.0));'
同样适用于非缩放广告牌,我正在尝试实施
float distance = length(modelViewMatrix * vec4(0.0, 0.0, 0.0, 1.0));
vec4 newPosition = projectionMatrix * (modelViewMatrix * vec4(0.0, 0.0, 0.0, 1.0) + vec4(position.x, position.y, 0.0, 0.0));
gl_Position= newPosition*distance;
不幸的是输出没有变化。它仍然是规模庞大的广告牌。有什么建议可以解决这个问题吗?