分析THREE.JS中examples的案例之-canvas_geometry_panorama_fisheye.html纹理贴图

1.分析THREE.JS中examples的案例之-canvas_geometry_panorama_fisheye.html纹理贴图

1.首先我们先看这个案例的效果图,
就是一个纹理贴图的效果

2. 那么这个应该怎么做呢?

  1. 这个其实不能,如何让我做的话我会是在一个矩形的几何体中添加对应的纹理贴图
  2. 但是如果你和我是一样的想法的话,那你就错了。
  3. 其实这个案例的代码也挺简单的,不难就是有两个疑惑点

我这里就是说一些特殊点,不会从头说明这个代码的实现。
从源码中可以看到
4. 创建了一个立方体几何体(THREE.BoxGeometry(300,300,300,7,7,7))
5. 然后由这个几何体和一个材质数组一同传入Mesh()构造函数中,
6. 再将scene.add(mesh)添加到场景中。
这看起来没什么特别的也是需要这么做。但是这个结果却是这样的
在这里插入图片描述
这显然不是我们需要的结果。
那么应该怎么变呢才会出现上面的那样的效果,我们再往下看代码。
循环遍历这个几何体的顶点
首先我们从代码中看到的结论:
7. 这个for循环是对上面的添加到场景中的立方体模型的顶点做循环遍历的。
8. 循环第一句代码,就是拿到当前顶点的坐标
9. 第二局就是对这个坐标进行归一化处理(就是将这个三维向量转为单位向量)
10.然后再将其放大600倍数

效果为:
在这里插入图片描述
这怎么就成这样呢?
我们将几何体的每个顶点坐标转换为单位向量,然后再放大600倍数
最终每个顶点到到几何体的中心点的距离是相当的,只是方向不同而言。
那么距离相同,方向不同,那么这些顶点的到几何体的中心点不就是圆的半径吗。
其实最终是将立方体几何体转化为球体

3.那么为什么要将立方体转化为球体,而不之间用球体

  1. 我们使用立方体转换为球体,我估计是为了考虑纹理贴图,因为一共需要贴6张图片,上,下,左,右,前,后。而再球体中这个怎么做区分那?所以先把贴图贴在立方体上,在转换为球体。

猜你喜欢

转载自blog.csdn.net/webMinStudent/article/details/119334699