У меня есть большое количество случайно размещенных кругов, хранящихся в одной буферной геометрии. Я пытаюсь масштабировать каждый из них на основе аудиовхода из их центров, но они продолжают масштабироваться относительно центра сцены. Вместо того, чтобы увеличивать радиусы и оставаться неподвижными, они увеличиваются, но при этом удаляются от центра.
uniform float scale;
varying vec3 color;
void main()
{
mat4 sPos = mat4(vec4(scale,0.0,0.0,0.0),
vec4(0.0,scale,0.0,0.0),
vec4(0.0,0.0,1.0,0.0),
vec4(0.0,0.0,0.0,1.0));
vec3 pos = position * normal;
vec4 modelViewPosition = modelViewMatrix * sPos * vec4(pos, 1.0) ;
gl_Position = projectionMatrix * modelViewPosition;
}
Это то, что я пытаюсь. Существует ли матричное преобразование, которое может переместить начало координат в центр каждого круга, не испортив другие аспекты сцены?
three.js
, это комментарий исключительно с точки зрения three.js.) Вы используете один буфер, потому что несколько сеток ухудшают производительность? Рассматривали ли вы вместо этого использование экземпляров (InstancedBufferGeometry
)? - person TheJim01   schedule 10.08.2017circleBufferGeometry
комментарию: вы повторно использовали объект геометрии или создавали новыйcircleBufferGeometry
для каждого меша? Я не могу предположить, какой прирост производительности вы получите, используя инстансы. Вы потеряете эффективность одного вызова отрисовки (одного меша), но получите простоту использования нескольких мешей. - person TheJim01   schedule 10.08.2017