前言

大家可能都了解了引擎自带的天空盒子,菜鸟也用过,感觉很棒。但是菜鸟在使用的过程中感觉天空盒子太大了,而场景比较小,所以想缩放一下天空盒子,奈何没找见,所以私下自己使用Cube实现了一下,分享给大家

效果展示

正文

1.坐标空间

在实现效果之前,菜鸟先对之前没有说到的知识点进行一下补充,先说下一坐标空间,也就是模型渲染到屏幕可预览的过程中经过的坐标转换过程

模型空间

  • 首先大家要知道模型或者物体都有各自独立的坐标空间,而模型的顶点坐标是根据模型空间的原点定义的,原点和坐标通常都是由美术在建模中设置的
  • 通常模型空间也被称为"对象空间"或者"局部空间"

世界空间

  • 也可以说是游戏空间,是最外层的空间,可以被用于描述绝对位置。打个比方,选中场景中的一个模型节点,其中Node属性下的Position就是表示模型原点在世界空间下的绝对位置坐标
  • 在渲染中,顶点变换的第一步就是把顶点从模型空间转换到世界空间

观察空间

  • 也可以称之为:摄像机空间,指的就是摄像机的观察空间
  • 在渲染流程中,顶点变换的第二步就是把顶点从世界空间变换到观察空间中,这个变换叫做观察变换(view transform)。

裁剪空间

  • 也称之为:齐次裁剪空间。把顶点从观察空间转换到裁剪空间中的矩阵叫做裁剪矩阵,也被称作投影矩阵。

屏幕空间

  • 就是屏幕的二维空间,将裁齐空间转化到归一化的设备坐标,然后通关屏幕的宽高像素进行映射,将坐标与屏幕像素坐标对应起来

2.Cube

  • 熟悉了坐标空间,咱们来认识一下Cube
  • 在模型空间中,+x轴,+y轴,+z轴分别对应的是模型的右,上和前向。如上图

    首先咱们做个测试,菜鸟做了一张图来认识一下前,后,左,右,上,下六个面的贴图效果:
  • 贴图:






通过上面六个面的贴图可以发现,有三个面:front(前),bottom(下),top(上)这三面的贴图效果和咱们提供的贴图比较被旋转了180度。

3.天空盒子

其实用Cube实现天空盒子和引擎自带的天空盒子差不多一样,同样是使用6个不同方向的贴图,围成一个封闭的天空效果。

4.代码

这里贴出给cube六个面设置不同材质贴图的代码,

vec4 frag () {vec4 col = mainColor * texture(top, v_uv);if(normal.x==1.0){col = mainColor * texture(right, v_uv);}else if(normal.x== -1.0){col = mainColor * texture(left, v_uv);}else if(normal.y==1.0){vec2 uv=v_uv;uv.y=1.0-uv.y;uv.x=1.0-uv.x;col = mainColor * texture(top, uv);}else if(normal.y== -1.0){vec2 uv=v_uv;uv.y=1.0-uv.y;uv.x=1.0-uv.x;col = mainColor * texture(bottom, uv);}else if(normal.z==1.0){vec2 uv=v_uv;uv.y=1.0-uv.y;uv.x=1.0-uv.x;col = mainColor * texture(front,uv);}else if(normal.z== -1.0){col = mainColor * texture(back, v_uv);}col = CC_APPLY_FOG(col, factor_fog);return CCFragOutput(col);
}
  • 在前面我们了解了Cube每个面切图实际的显示效果,想要达到预期的效果部分面需要进行特殊的处理

地址

  • 微信公众号:搬砖小菜鸟
  • 扫码关注公众号,发送"天空盒子"可获取源码

Cube实现天空盒子,看了你自己也能做相关推荐

  1. Cesium与STK中的天空盒子(skybox)

    天空盒子是计算机图形学中的概念,用于在3D展示中,显示观测者上下左右前后的全景图像. 星空图介绍 在STK和Cesium中,常常以地球为中心天体,背景就是宇宙星空,观测者超哪个方向看,就可以看到对应方 ...

  2. UnityShader_天空盒子中的反射、折射、聂菲尔效应

    反射 反射的原理在之前的文章中已有,在此不再赘述,这里主要讲一下天空盒子纹理的采集 主要看代码中有注释的部分,其中在 texCUBE 中没有对i.worldRefl进行归一化,是因为仅仅是传递方向变量 ...

  3. OpenGL应用:天空盒子(SkyBox)

    天空盒子(skyBox) SkyBox 制作3D游戏的一个经典技术应用. 原理 SkyBox 是基于正方体模型的渲染技术.将6个方向拍下来的天空图片分别贴在正方体的对应面上,从内部观察正方体就可以得到 ...

  4. Cesium近景蓝色晴空万里天空盒子替换方法源码及图片资源-实测可用

    最近看着Cesium默认的近景天空就觉得心情有点灰暗和压抑,看到有的平台的天空是蓝天白云非常的养眼,就尝试这更改下,原来Cesium提供的天空盒子是远景的,近景的话,就是蓝白色的天空 测试的版本:Ce ...

  5. Unity代码设置天空盒子skybox 及定时切换

    目录: 一.代码 二.解析 三.核心 前言:并非自创,看的是同行的博文--在此向前人致谢 一.代码 using System.Collections; using System.Collections ...

  6. 【一步步学OpenGL 25】-《Skybox天空盒子》

    教程 25 Skybox天空盒子 原文: http://ogldev.atspace.co.uk/www/tutorial25/tutorial25.html CSDN完整版专栏: http://bl ...

  7. 使用opengl绘制立方体_一步步学OpenGL(25) -《Skybox天空盒子》

    教程 25 Skybox天空盒子 原文: http://ogldev.atspace.co.uk/www/tutorial25/tutorial25.html CSDN完整版专栏: https://b ...

  8. Opengl-立方体贴图(天空盒子)

    立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都组成了立方体的一个面:一个有纹理的立方体.你可能会奇怪,这样一个立方体有什么用途呢?为什么要把6张纹理合并到一张纹理中,而不是直接使用6个单独 ...

  9. Unity 360全景图转换为天空盒子

    第一种方式 把你的全景图拖入到unity里面,然后新建材质球,选择shader/skybox/panoramic,更换全景贴图 ok 把天空盒换成你的材质球结束 (这个目前有一个问题,有一条缝,地面会 ...

最新文章

  1. 特征选择-处理缺失值-处理不平衡的数据-处理异常值-分档-编码-特征缩放
  2. Mysql5.7使用注意事项随笔
  3. 廖雪峰说python_廖雪峰官网Python部分的疑问及解决
  4. 插件开发-UI插件开发
  5. mac 怎样卸载mysql_如何卸载mac中的mysql?
  6. CCKS 2018 | 工业界论坛报告简介
  7. python怎么把列表转换成字符串_如何将字节列表(unicode)转换为Python字符串?
  8. python爬虫 正则表达式 re.finditer 元字符 贪婪匹配 惰性匹配
  9. 微服务面试必问的Dubbo,这么详细还怕自己找不到工作?
  10. android png转灰度,Android提高之使用NDK把彩图转换灰度图的方法
  11. 统计一行文本的单词个数_NLP中的文本表示方法
  12. 基于迁移学习的农作物病虫害检测方法研究与应用
  13. LeetCode 712. Minimum ASCII Delete Sum for Two Strings
  14. VOC 2007数据集结构
  15. 企业微信应用分享(一)
  16. 思科交换机关闭服务端口
  17. Android 开发者的下半场
  18. 来一起学习脚本语言吧,简单,高效,解放双手,感受自由!
  19. what is RPC?
  20. 【Python123】 存款买房(B)

热门文章

  1. 壬华科技通过CMMI 3级认证
  2. 来答疑了!关于网易云信 Innovation 2022 开发者大赛,你想知道的都在这儿!
  3. linux虚拟机关se,Centos关闭SELinux和防火墙的关闭
  4. mysql 启动 pid update_MySql服务器启动错误“服务器退出而不更新PID文件”
  5. 异常java.io.NotSerializableException
  6. 51单片机矩阵键盘的控制原理-扫描及使用方式
  7. Ubuntu16.04 rc.local不生效,启动过程中报“Failed to start /etc/rc.local Compatibility”错误
  8. Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)! To rerun under ARM use: ar
  9. tplink android管理软件,tplink手机app下载
  10. 【哪吒社区Java技能树 打卡day2】Java学习路线总结(思维导图篇)