编码使用:
- 使用 ThreeJS v0.130.1
- 框架:Angular 12,但这与问题无关。
- 在 Chrome 浏览器上测试。
我正在构建一个获得超过 100K 点的应用程序。我使用这些点在屏幕上渲染一个THREE.Points对象。
我发现默认的 THREE.PointsMaterial不支持光照(无论是否在场景中添加灯光,这些点都是可见的)。
所以我尝试实现一个自定义ShaderMaterial。但是我找不到向渲染对象添加照明的方法。
这是我的代码正在执行的 示例: StackBlitz 上的示例应用程序显示了我当前的尝试 在此代码中,我使用点云数据、法线和颜色的示例值,但其他一切都与我的实际应用程序相似。我可以看到 3D 对象,但需要使用法线进行更适当的照明。
我需要帮助或指导来实施以下内容:
为自定义着色器材质添加光照。我用谷歌搜索并尝试了很多东西,到目前为止没有成功。
使用法线,展示光照的效果(在这个示例代码中,法线是固定在 Y 轴方向的,但我在实际应用中是根据一些矢量逻辑计算它们的)。所以计算法线已经完成,但我想用它们在自定义着色器材质中显示光照/阴影效果。
在这个示例中,颜色属性设置为固定的红色,但在实际应用中,我可以使用从纹理到颜色属性的 UV 范围应用颜色。
请告知我如何/是否可以根据点云的法线获得照明。谢谢。
注意:我查看了这个Stackoveflow 问题,但它只涉及更改点的 alpha/透明度,而不涉及照明。