热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

三维场景中的实时动态云彩绘制方法

摘要:本文一种介绍了在三维虚拟场景中实时绘制动态的云彩方法,在室外场景中云彩是提供三维真实感的重要图素之一,由于云彩变化多端,形状多样,没有规则
摘要:
  本文一种介绍了在三维虚拟场景中实时绘制动态的云彩方法,在室外场景中云彩是提供三维真实感的重要图素之一,由于云彩变化多端,形状多样,没有规则,完全逼真实时地绘制云彩几乎是不可实现的,常见的云彩绘制方法是使用天空体贴图[1,2],但天空体贴图的绘制方法逼真度较差,云彩缺乏层次感和变化,本文设计了用多层公告板动态模拟云彩的方法,实践中效果较好。
 
  关键词:三维场景,实时动态,云彩绘制,公告板
 
  前言
  云彩是三维室外模拟场景中获得真实感的重要图素,由于云彩的多变,形状无规则,用普通的多边形和粒子系统描述云彩几乎是不可实现的,这样会产生数量巨大的多边形,令PC级别的计算机无法实时绘制,当前常见的云彩绘制方法是使用天空体贴图,天空体贴图实际上将天空简化成矩形体或球形体,人们在地球上看到好像是天空体的内表面,通过将云彩的照片直接贴在天空体的内表面模拟天空效果,能够产生一定逼真度的天空效果,突出优点是天空的模型很简单,可以提供很好的实时性,但由于云彩贴在一个表面上,缺乏距离层次感和云彩之间相对运动感容易被看出是一种平面云彩的效果,对要求较高的场合逼真度欠佳,本文设计的云彩绘制方法从增加云彩的层次感和动态感出发改进了天空体的方法,实际运行中可以看出逼真度有大幅度提高,实时性仍然较好。
  1、天空体方法
  比较简单的天空体是矩形体,一个矩形体共有6个面,扣除底面剩5个面,每个面分成2个三角形,这样一个天空只要处理10个三角形,实时性能很好,但矩形天空体在矩形的边角处的失真很大,
图1 半球形天空的网格结构
  可以非常明显地看出边角处由两个垂直的平面构成。比较好的天空体是用半球体,如图1所示,半球体的天空消除了平面角度90度突变,增加了真实感,但半球体需要由较多的三角形构成,实时性能稍差,在天空体上贴云彩照片后的效果如图2,天空体生成的天空效果如图3
图2 半球形天空体贴图效果
  
  图3 天空体生成的天空效果
  比较容易看出天空中的云彩好像位于同一个水平面上,天空显得比较薄。
 
  2、多公告板方法
  天空体造成云彩逼真度较低的原因在于将云彩照片贴于一个接近平面的面上,仅用一个面模拟具有很大范围,具有深度层次感的天空,另外云彩照片是一个整体的大照片,云彩之间的位置关系是静止的,缺乏变化,只能给出一个静止天空效果,这些和自然界的真实天空都相距较大。本文根据天空体这些不足设计了由多公告板组成云彩群,可以天空体的一些固有的缺点,公告板[3]是一种常用三维绘图技术,主要用于模拟外形很复杂的物体,对于外形很复杂的物体用多边形模拟会产生大量的三角形严重降低系统的实时性能,公共板技术指用一个简单的平面矩形贴上复杂三 维物体的照片模拟三维物体,边缘采用透明贴图技术模拟复杂三维物体的不规则边缘,为了不让观察者看平面扁平的一侧,公告板必须跟随观察视线转动,让观察者只能看到平面的正面,而不能看到侧面,这样公告板就能永远显示复杂三维物体的正面,具有模拟复杂三维物体的能力,比如三维场景中的树木用公告板绘制效果就比较好,如图4。
图4 公告板示意图
  由于云彩也是一种复杂的三维物体,因此也适合采用公告板绘制,为了表现逼真的云彩效果本文设计了多公告板绘制动态云彩的方法。
  首先,单块云彩和云彩之间采用独立的公告板,使云彩之间的相对运动和相对尺寸变化成为可能,由于单块云彩采用独立的公告板,而公告板位置可以独立改变,因此通过公告板位置之间自由设置,少量的单块云彩可以通过组合生成复杂多样,形状不重合大量天空效果,单块云彩和云彩之间可以互相重叠一部分,通过颜色融合技术重叠的部分不会被观察者发觉,程序实现表明,只要有三个单块云彩以上通过多公告板(公共板取128个,可以重复使用同一种云彩照片)的组合,颜色融合,尺寸放缩可以产生足够多样的天空,观察者无法发觉复杂的天空只是由少数几块云彩组成。单块云彩照片可以从照片种挑选出来。
图5 高程数据加入地形网格中
  其次,云彩在天空中的分布需要有一定的规律,由于云彩离地面有较高的高度,一般的第一人称三维场景是不能够到云彩的,因此云彩要一直保持远离观察者,考虑的三维场景的实时性,一般程序实现时会人为地限制限制三维场景的范围,如果按真实的比例和位置绘制云彩,云彩的往往超出三维场景的限制范围,得到的效果是三维场景中无法看到云彩,因此一般会采用非真实比例绘制云彩,云彩的高度较低,位置离观察者较近,这样带来的问题是观察者较大范围运动时会够到云彩,这是很不真实的,即使是真实的情况,比如观察者乘坐在飞机上,但由于三维场景中云彩只是用公告板模拟的,如果观察者离云彩过近就会发现云彩实际是平面的,这样的效果也会很差,因此程序中要避免观测者接近云彩。本文的做法是让云彩总是分布在以观察者为中心,一定半径的一个上半球面上,观察者改变位置时,云彩也要更改位置,让观察永远无法接近云彩。
图5 多公告板云彩示意图
  再次,由于云彩由独立的公告板绘制,公告板的数量可以控制云彩的稠密程度,云彩的稠密程度可以动态更改,通过添加公告板或减少公告板即可实现,但是不能硬性添加和删除公告板,硬性添加和删除公告板带来的视觉效果是云彩的突然出现和消失,这是不符合自然规律的。软性添加和删除公告板的方法是通过设置公告板的透明度,在公告板出现和消失的过程中令公告板从完全透明到不透明渐变,可以消除云彩突然出现和消失的现象,获得比较真实的云彩稠密度渐变结果。
  2、结束语
  本文设计的多公告板动态云彩绘制方法和天空体方法相比云彩的逼真度有了大幅度提高,实际应用中表明本方法系统开销较小,实时性能良好,达到了预期的目标,实际效果如图5。
图5 多公告板云彩实际效果

推荐阅读
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 110. Balanced Binary Tree [Easy] 平衡树/递归
    本文介绍了一道关于平衡树的题目,通过递归和辅助函数来判断一个二叉树是否平衡。辅助函数返回根结点的深度,如果左子树或右子树不是平衡树,则返回-1。主函数根据辅助函数的返回值判断二叉树是否平衡。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 北京景点排行榜 北京最好玩的旅游景点
    2019北京最好玩的旅游景点有哪些?下文为大家整理了2019北京景点排行榜,希望可以帮到您哦!  2019北京景点排行榜:  1、故宫  帝都必打卡的地点之一。  北京故宫是中国明 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • SEEBURGER SAP GTS解决方案:数字化助力企业实现海关流程数字化
    SEEBURGER作为SAP的合作伙伴,在2019 SAP GTS信息交流会上分享了SEEBURGER SAP GTS解决方案的应用案例,介绍了如何利用数字化助力企业实现海关流程数字化。SEEBURGER的集成技术和解决方案支持SAP GTS产品和服务的推广及应用,通过数据通讯和报文格式转换满足与海关当局的电子数据交换需求。该解决方案能够帮助企业管理全球贸易,保证贸易规范,优化跨境供应链,提升企业合规性。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 数据结构与算法的重要性及基本概念、存储结构和算法分析
    数据结构与算法在编程领域中的重要性不可忽视,无论从事何种岗位,都需要掌握数据结构和算法。本文介绍了数据结构与算法的基本概念、存储结构和算法分析。其中包括线性结构、树结构、图结构、栈、队列、串、查找、排序等内容。此外,还介绍了图论算法、贪婪算法、分治算法、动态规划、随机化算法和回溯算法等高级数据结构和算法。掌握这些知识对于提高编程能力、解决问题具有重要意义。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 深入理解线程、进程、多线程、线程池
    本文以QT的方式来走进线程池的应用、线程、进程、线程池、线程锁、互斥量、信号量、线程同步等的详解,一文让你小白变大神!为什么要使用多线程、线程锁、互斥量、信号量?为什么需要线程 ... [详细]
  • “您可以从三个选项中(快速、便宜或好)选择两个”提出这个问题的人可能不是可观测性工程师。但也可能是,在可观测性方面,决定您 ... [详细]
author-avatar
哥斯拉2502919771
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有