Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 动态更改粒子系统中点的颜色_Three.js - Fatal编程技术网

Three.js 动态更改粒子系统中点的颜色

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

我迭代粒子系统中的点,并在点满足特定条件时更改点的颜色。假设我必须将第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.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;iColorifyColor值应在0到1之间。感谢您的输入。所以我不需要做任何像“刷新”这样的事情……只要将这些rgb值放在0到1的范围内即可?particlesystem.geometry.attributes.color.needsUpdate=True我尝试了这个。它给出了一个错误:未捕获类型错误:colors.setXYZ不是function@Mandroid我添加了一个代码片段。单击按钮更改点的颜色。setXYZ按预期工作。@Mandroid是否有用?仍然是相同的问题。我想我使用的是旧版本的Three.js,因此找不到此方法。