宝哥软件园

三 JS介绍教程(6)创建自己的全景图的实现步骤

编辑:宝哥软件园 来源:互联网 时间:2021-10-04

Translate Three.js是一个很棒的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器中实现真正的3D。然而目前这项技术还处于发展阶段,信息极其匮乏。粉丝应该通过Demo源代码和Three.js源代码来学习。0.简介全景很酷。用三个js制作自己的全景图并没有那么难。要制作全景图,你需要一个软件来制作张全景的照片。我用iPhone上的微软Photosynth软件做的。1.环境肌理首先,什么是环境肌理?它们实际上是WebGL或OpenGL中特殊的立方体纹理。立方体纹理是对整个场景(虚拟或真实)的观察,场景的外观被“粘贴”在立方体的内表面。想象你站在山顶,向前看,左,右,上,下,最后回来。每次看到“立方体”的内表面,你都站在立方体的中心。如果立方体足够大,就很难区分立方体的棱角,给你一种身处大环境的错觉。如果你还没想明白,维基百科上的立方体贴图条目会很有帮助。这很酷,但它是如何工作的?我们可以进行反射和折射,事实上,两者的功能都是用GLSL和WebGL着色器语言构建的。你只需要将6张纹理图片传递给着色器,每张图片代表一个立方体的内表面,然后告诉WebGL这是一个立方体纹理,然后就可以使用上面的效果了。半轴:这个术语用于立方体纹理。因为我们通常使用三个轴来描述三维空间:X轴、Y轴和Z轴,所以用于立方体纹理的图片也是通过轴的名称来识别的。一共六张图片,每轴两张,正半轴一张,负半轴一张。2.创建全景图片创建全景图片的第一步是到户外,用手机上的应用程序拍照。我在伦敦金融区逛了逛,然后在小黄瓜拍了张照片。我得到了以下图片:

值得指出的是,这个应用程序把图片做成贴在球体上的那种。这看起来很好,但是现在我们需要把它粘贴在立方体的内表面,所以我们必须处理这张图片。3.我将简要介绍一下转换为立方体的部分。我把刚拿到的照片加载到一个3D建模软件,比如Maya或者Blender,然后贴在一个球体的内表面。然后我创建了六个正交投影相机,每个对应一个半轴。最后,我保存了这六个摄像头拍摄的图像。如何完成很复杂,这里不需要解释,所以我写了一个Blender脚本文件,一切都设置好了。要使用这个脚本文件,您只需要:1。把你自己的全景改名为environment.jpg;2.将全景和Blender脚本文件放在同一个文件夹中;3.加载脚本文件;4.单击右侧的动画按钮;5.等一下,已经创建了6个图像。很酷吧?现在,您可以重命名这些图像以匹配每个半轴。例如:0001.png0002.png、pos-z.png0003.png、neg-x.png0004.png、neg-z.pngpos-x.png 0005 . pngneg-y . png 0006 . pngpos-y . png 4。加入场景现在我们已经获得了环境纹理,然后将其加载到场景中。三. js把这个做得很简单:复制代码如下: //纹理图像的URL var URL=[' path/to/pos-x . png ',' path/to/neg-x.png ',' path/to/pos-y.png ',' path/to/neg。Path/to/pos-z.png ',' path/to/neg-z.png'],//被打包到object cube map=three . imageutils . loadtexture cube(URL)中;//将格式设置为rgbcubemap . format=three . rgbfformat;现在你只需要给一个材质指定立方体贴图!复制代码如下: varmaterial=new three . mesh labertmaterial({ color :0 xfffff,env map 3360 cube map });5.以上就是总结。实现全景很酷,尤其是如果你能把自己的地方做成一个WebGL全景。和往常一样,我打包了本教程的源代码。

更多资讯
游戏推荐
更多+