Three.js 从几何体对象的中心缩放它们
我在一个缓冲区几何体中有大量随机放置的圆。我试图根据他们中心的音频输入来缩放每一个,但他们一直在缩放场景的中心。它们不是变得更大的半径并且保持静止,而是变得更大,但也离中心更远Three.js 从几何体对象的中心缩放它们,three.js,shader,glsles,buffer-geometry,Three.js,Shader,Glsles,Buffer Geometry,我在一个缓冲区几何体中有大量随机放置的圆。我试图根据他们中心的音频输入来缩放每一个,但他们一直在缩放场景的中心。它们不是变得更大的半径并且保持静止,而是变得更大,但也离中心更远 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(
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;
}
这就是我正在尝试的。是否有一种矩阵变换可以将原点移动到每个圆的中心,而不会扰乱场景的其他方面
小尺度值
较大的比例值添加正常*比例
uniform float scale;
varying vec3 color;
void main()
{
vec3 pos = position + normal * scale;
vec4 modelViewPosition = modelViewMatrix * vec4(pos, 1.0) ;
gl_Position = projectionMatrix * modelViewPosition;
}
例如:
常数vs=`
均匀浮标;
真空总管
{
vec3位置=位置+正常*刻度;
vec4模型视图位置=模型视图矩阵*vec4pos,1.0;
gl_位置=投影矩阵*模型视图位置;
}
`;
常数fs=`
真空总管{
gl_FragColor=vec41,0,0,1;
}
`;
常量照相机=新的三个透视照相机40,1,1,1000;
摄像机位置z=400;
const scene=新的三个场景;
警察制服={
比例:{值:1},
};
var shaderMaterial=新的三个shaderMaterial{
制服:制服,
顶点着色器:vs,
碎片着色器:fs,
};
const geometry=新的3.5倍几何体;
常数numCircles=20;
常数NUMEDGEPOINTSPERCELL=36;
常量numpointspercle=numedgepointspercle*3;
const totalPoints=numpointspercille*numCircles;
const positions=新Float32ArraytotalPoints*3;
常量法线=新Float32ArraytotalPoints*3;
常数半径=10;
送经=0;
对于设c=0;c会保持不变。如果你保持法线,你基本上会得到相同的结果。只是为了让它更混乱,你可以使用实例化,这样你就不必重复每个圆的每个点的中心点。