admin
admin
这家伙很懒,什么也没写!

注册于 7年前

回答
10
文章
12
关注者
2

image.png

@littleQ gpt回答还是可以的,我再补充下。上面一张是我PPT中的图片,一张是你的代码。其实这样做最终目的就是就是将坐标原点放在最中间,并且将取值范围定格在[-1,1]之间。你可以结合图片和gpt的回答再理解一下。需要注意的是,这种坐标转换的算法,在坐标系转换中非常常见:比如鼠标位置=>uv坐标,canvas坐标=>webgl坐标,纹理坐标=>uv坐标....等等....

如果你想在threejs实现热力图其实得写shader才可以,一般应用ShaderMaterialAPI在片元着色器里面可以实现,当然你需要传入相应热力图数据。此外也可以动态生成类热力图,但是需要实时计算梯度值,根据梯度值生成的数据区改变片元着色器颜色就可以。
我觉得上面作者回答的也不错,就是heatmap算是在这方面比较成熟的解决方案,可以借助第三方的应用去实现效果。官方地址https://www.patrick-wied.at/static/heatmapjs/

你好!来迟了,你这个问题问的很好。昨晚乍一看没有明白你问题的意思,今天我还专门去看了下games101课程。我说一下我的解释:
首先
chatgpt解释是有道理的,但是比较精炼和抽象。
将投影矩阵平移到原点的目的其实就是为了简化计算,具体来说:你传入的最近,最远以及左右距离参数,如果是在任意位置,我们在计算正交投影矩阵边缘点的位置时候很难去表示(当然不是说不能表示,是需要几何运算)。但如果我们移动到原点,那么边缘位置点就和坐标轴x,y,z平行,甚至在坐标轴上。这样相当于将投影矩阵的点做了规范化,你可以看下第一步平移的公式,这样可以用基础参数很容易表示边缘点的位置:

0230409122211.png

其次
为什么不会对相机坐标产生影响呢?
其实也很容易理解,就是我在webgl课程中,或者其他图形学课程中经常提到MVP,对于空间中物体来说先经过模型变换到世界坐标系,世界坐标系经过相机变换到相机坐标系,最后再进行投影变换。这个过程实际上是由先后顺序的,我们的投影变换是对于整个相机坐标系或世界坐标系而言的,说白了是对整体变换,你三维空间中单个物体的相对关系是不变化的(相机也是三维空间里的一个元素哦)。
希望上述解释对于你有帮助,我建议你看完games101后,如果对这部分还有疑问,可以再结合下我高级课程
高级课程,欢迎有问题再来提问!

Shader ES有不同的版本,如果在较旧的版本中使用了较新的语法,则会出现以上面错误,这时候需要我们去官方文档上查看相应的文档,寻找该版本下可以代替的其他版本或者升级shader es的版本。

发布
问题