Three.js |在sphereGeometry上应用置换贴图后,顶点与中心的距离不会发生变化

时间:2017-11-16 12:39:49

标签: three.js

我试图计算在球体几何体(仅位于原点)上应用置换贴图后移位顶点的距离(从原点)。

当位移贴图改变顶点的位置时,两种情况下的距离应该不同(在应用置换贴图之前和之后),但是以某种方式距离球体中心的距离(此处为原点)不会改变

对此有何看法? 在此先感谢:)

2 个答案:

答案 0 :(得分:0)

在位移贴图适合图形管道的情况下,这是不可能的。您基本上将所有数据“发送”到着色器中,这就是位移映射发生的位置。这就是为什么它有效但也无法访问。如果你需要一些更容易访问的东西,你需要预先编写一些可以在你的顶点上运行的JS,但它不会那么高效。您还可以通过创建动态置换贴图来混合这两种方法。这一切都取决于背景,这在你的问题中并不清楚。为什么在应用地图后需要计算顶点距离?在制作置换贴图时,您可以直接设置顶点的位置,并可以根据原始顶点和读取置换贴图计算距离原点的距离。

答案 1 :(得分:-1)

您的置换贴图不会影响定义的几何图形。相反,它会在渲染时影响它,着色器使用贴图调整顶点位置和片段着色。此信息不会共享回主程序。

我认为获得所需内容的最简单方法是手动计算。这意味着对于每个顶点,您将查看其UV坐标,从置换贴图图像中读取该坐标的值,然后执行位移值如何影响顶点的计算。您已经知道所有顶点都是距原点的半径,所以这很容易:

totalDistance = radius + ( displacementRange * displacementFactor )

您还可以通过细分位移值来拉近中心值(例如,1是完全推,0.5没有变化,0是完全拉动):

totalDistance = radius + ( displacementRange * displacementFactor * ((displacementFactor < 0.5)? -1 : 1))