我有一个PointCloud
,我用它来显示一些与时间相关的数据点。对于PointCloud.Geometry中的每个顶点,我想分配一个属于纪元时间数组的属性。
这些纪元时代是一般的,例如:
epochTimes = [1432314839, 1432314840, 1432314841];
自定义属性如下所示:
attributes = {
epochTimes: { type: 'f', value: [] }
};
'f'
实际上会有效吗?
我看到了一些有趣的统一类型in the wiki,特别是uIntArray
,即iv1
。使用该数据类型作为属性时出错。它可能只保留给制服。
有没有办法可以将值数组作为属性分配给顶点?
答案 0 :(得分:0)
这些属性赋值是Three.js特定的。如果您的数组中总是有三次,则可以使用vec3
类型。
attributes = {
epochTimes: { type: 'iv3', value: null } // 'iv3' specifies that attribute type is ivec3, like as 'f' specifies that it would be float type in the shader
};
有关更多代码和完整示例,请查看http://threejs.org/examples/webgl_buffergeometry_custom_attributes_particles.html。
您可以尝试绑定其数据实际编码为纪元时间的纹理,并在片段着色器中使用该纹理。
要回答你的问题,你可以将一组数据发送到顶点着色器 - 没有。 (相关主题 - Is it possible for a vertex attribute to be an array in GLSL-ES 2.0?)