【问题标题】:Access the vertex index in the function passed to THREE.PointsMaterial.map访问传递给 THREE.PointsMaterial.map 的函数中的顶点索引
【发布时间】:2017-01-14 17:11:34
【问题描述】:

我正在创建一个THREE.Points 粒子系统,并且需要(稍微地,每个粒子)修改从传递给THREE.PointsMaterial.map 的函数返回的HTML5 Canvas 纹理。是否可以在该函数中访问正在为其创建纹理的顶点的索引,以便最后为每个粒子/顶点赋予(略微)不同的纹理?

【问题讨论】:

标签: javascript three.js


【解决方案1】:

当你说

从传递给的函数返回的画布纹理 三点材料.map

我假设您的意思是 THIS

如果是这种情况,那么不,您无法访问顶点索引。您要么必须为每个顶点创建不同的材质和贴图(您可能不想这样做)。
或者,创建您自己的着色器。

【讨论】:

  • 非常感谢,这正是我的意思。我需要学习如何使用着色器。目前,我只对更改每个顶点的颜色感兴趣,但设置 vertexColors: true 并以这种方式传递颜色似乎会将提供的颜色与 Canvas 纹理的颜色相乘,从而难以控制结果。
  • 我有一些基本的着色器演示 here。 Firefox 在其开发工具中有一个“着色器编辑”选项卡,但我认为您必须在开发工具设置中打开它。您可以查看默认点材质着色器并对其进行一些调整。
  • 谢谢2pha,我真的很喜欢你的例子,但我感觉着色器不能解决我的问题,因为我需要为每个顶点创建一个点云具有扩展的 2d 纹理(具体来说,是一个带有径向颜色渐变的圆),它始终面向相机并且渲染速度足够快,足以满足我场景中的点数。你认为这仍然可以通过着色器以某种方式实现(每个顶点都有一个空间扩展的 2d 纹理,始终面向相机并接受混合指令)?
  • 你绝对可以用着色器做到这一点。而且,如果您只需要一个带有渐变的圆圈,那么您最好在着色器中这样做,而不是使用纹理贴图。嗯,有机会我可能会一试。
猜你喜欢
  • 1970-01-01
  • 2021-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
相关资源
最近更新 更多