首页 > 解决方案 > InstancedMesh 不反映具有自定义顶点着色器的虚拟矩阵的比例

问题描述

我正在使用 ThreeJS InstancedMesh。向 setMatrixAt 传递一个在循环中计算的虚拟矩阵。dummymatrix 根据与相机的距离(cpu 端)对其应用了比例。当实例渲染时,它们只包含位置数据并且缺乏动态缩放。

标准更新

this.instancedMarkerMesh.setMatrixAt(i, marker.matrix);

着色器

varying vec2 vUv;

varying vec3 vInstanceColor;

void main()
{
    
    vUv = uv;
    
    vec3 transformed = vec3( position ) ;
    vec4 mvPosition = vec4( transformed, 1.0 );
    #ifdef USE_INSTANCING
        mvPosition = instanceMatrix * mvPosition;
    #endif
    vec4 modelViewPosition = modelViewMatrix * mvPosition;
    gl_Position = projectionMatrix * (modelViewPosition);
}

有什么想法吗?是我的着色器,还是 InstancedMesh 问题?

标签: three.jsglsl

解决方案


推荐阅读