Three.js - 积分

Three.js - Points

当我使用 Three.js 创建一个点时,它看起来像一个正方形。我怎样才能使它看起来圆?我在文档中看到了一些混合因素,但我不太明白如何在我的观点上使用它们,我什至不知道这是否是正确的方法。

我使用的一个技巧是创建一个 SVG 圆形元素,使用 canvg 将其渲染为 canvas,然后将 canvas 渲染为纹理以在点云中使用。

通过在圆上应用渐变,我可以在带有 2D 圆的 3D 球体上产生闪亮的错觉。

代码太多,post 无法回答,但我在 Github 上有一个项目,如果有兴趣,您可以看看它演示了这个想法。参见:https://github.com/alexpreynolds/cubemaker and the associated demo at: http://alexpreynolds.github.io/cubemaker/

如果您只想要圆圈而没有 "shiny" 效果,您可以删除渐变。或者直接在 canvas 元素上画一个圆圈并完全跳过 SVG。

Alex Reynolds 的回答是正确的。我添加这个是为了提供更多详细信息:据我所知,有两种方法可以自定义您的点外观。

  • docs 所建议,使用纹理 (THREE.PointsMaterial({map:texture})):

    • 最直观的是使用你的图像:

      var texture=THREE.ImageUtils.loadTexture('url-to-my-image');
      
    • 您还可以在 canvas 中绘制一些东西并将其用作纹理。这包括 canvas 中的原始绘图、Alex Reynolds 建议的 SVG 导入或任何其他技术。你可以查看他的 link 并查找 threejs 示例。这特别适用于在 sprite 上渲染 2D 文本,你会找到更多这样的例子。

      var texture=THREE.Texture(canvas);
      

    查看 three.js 示例以了解有关在 Points

  • 上使用纹理的更多详细信息
  • 使用着色器:

    如果您了解着色器,您可以编写一个小的片段着色器,这将导致这些解决方案中最轻和最精确的。