Three.js 动态更改粒子系统中点的颜色
我迭代粒子系统中的点,并在点满足特定条件时更改点的颜色。假设我必须将第j个点的颜色更改为金色:Three.js 动态更改粒子系统中点的颜色,three.js,Three.js,我迭代粒子系统中的点,并在点满足特定条件时更改点的颜色。假设我必须将第j个点的颜色更改为金色: var colors = particlesystem.geometry.attributes.color.array; colors[3*j] = 0; colors[3*j+1] = 40; colors[3*j+2] = 255; 但我看不到颜色的变化 这里需要额外的东西吗 我是这样做的: geometry.attributes.color.array[3*j] = r; geometry.a
var colors = particlesystem.geometry.attributes.color.array;
colors[3*j] = 0;
colors[3*j+1] = 40;
colors[3*j+2] = 255;
但我看不到颜色的变化
这里需要额外的东西吗
我是这样做的:
geometry.attributes.color.array[3*j] = r;
geometry.attributes.color.array[3*j] = g;
geometry.attributes.color.array[3*j] = b;
geometry.attributes.color.needsUpdate = true;
但粒子的颜色不会反映任何变化。您可以这样做:
var colors = particlesystem.geometry.attributes.color;
colors.setXYZ(j, 0, 0.15, 1);
colors.needsUpdate = true; // when you change values of an attribute, set this flag to 'true'
请查看有关的文档
var场景=新的三个场景;
var摄像机=新的三视角摄像机60,window.innerWidth/window.innerHeight,11000;
camera.position.set2、5、10;
var renderer=new THREE.WebGLRenderer{
反别名:对
};
renderer.setSizewindow.innerWidth,window.innerHeight;
document.body.appendChildrender.doElement;
var controls=new THREE.OrbitControlscamera,renderer.domElement;
var geometry=新的三点缓冲几何体;
var顶点=新Float32Array[-1.0,-1.0,1.0,
1.0, -1.0, 1.0,
1.0, 1.0, 1.0, -1.0, 1.0, 1.0
];
geometry.addAttribute'position',新的3.BufferAttributevertices,3;
var颜色=[];
对于var i=0;i