注册

英思月刊第五期

其他分类其他2024-08-30
103

2024年8月        第五期             主办单位:行政人事部

目录

Contents

Unity美术的新纪元                                  01

使用Obsidian软件的简单介绍                02

于UE5的山洪推演平台研究                      03

水电站的类型                                       04

企业文化                                                05

Contents

Unity中的编程代码规范                         06

一、引言
Unity作为一款功能强大的游戏引擎,在游戏开发领域已经占据了举足轻重的地位。但是,Unity的应用范围远不止于游戏开发,它在各种类型的交互式应用程序中都发挥着重要作用。其中,Unity在美术创作和视觉呈现方面的能力尤为突出,为艺术家和设计师们提供了广阔的创作空间。
本期Unity美术月刊将深入探讨Unity在美术创作中的新动向,解析Unity强大的视觉表现能力,并分享一些优秀的Unity美术作品,以期为广大读者带来全新的视觉体验和创意灵感。
二、Unity美术创作的新趋势
1.实时渲染技术的崛起
近年来,实时渲染技术在Unity中得到了飞速发展。通过采用先进的光照算法和材质系统,Unity能够实现高品质的实时渲染效果,大大缩短了美术创作的周期。这不仅提高了工作效率,也使得艺术家们能够在创作过程中即时预览和调整作品,从而更好地把握视觉效果。
值得一提的是,Unity的实时全局光照系统(Real-Time Global Illumination)可以模拟真实世界的光照传播,为场景营造出更加逼真自然的氛围。同时,Unity还支持实时阴影、反射和折射等效果,进一步增强了视觉的真实感和沉浸感。

Unity美术的新纪元

探索创意无限的可能

作者:李春辉

2.虚拟现实和增强现实的应用
随着虚拟现实(VR)和增强现实(AR)技术的不断成熟,Unity在这些领域的应用也越来越广泛。Unity提供了强大的VR和AR开发工具,使得艺术家们能够在沉浸式的虚拟环境中进行创作和设计。
在VR应用中,Unity可以帮助艺术家们构建逼真的虚拟场景,并通过头显设备让用户身临其境地感受作品。同时,Unity还支持手势交互、物理模拟等功能,为用户带来更加自然和直观的体验。
在AR应用中,Unity则可以将虚拟元素无缝地融入到现实环境中,为用户提供增强现实的视觉效果。这不仅可以应用于游戏和娱乐领域,也可以用于教育、医疗、零售等各种场景,为用户带来全新的交互方式。
3.跨平台开发的优势
Unity的跨平台开发能力是其一大优势。无论是PC、移动设备还是游戏主机,Unity都能够提供统一的开发环境和工具链,大大简化了跨平台适配的工作。这不仅提高了开发效率,也使得艺术家们能够将作品发布到更广泛的平台,让更多用户欣赏到他们的创意。
同时,Unity还支持多种渲染管线,包括传统的Forward渲染和基于物理的Deferred渲染。这使得艺术家们能够根据不同平台的硬件性能,选择最合适的渲染方式,从而确保作品在各种设备上都能呈现出优秀的视觉效果。

三、Unity美术创作的典范作品
1.《Genshin Impact》
由miHoYo开发的开放世界RPG游戏《Genshin Impact》无疑是Unity美术创作的一个杰出代表作。该游戏采用了Unity引擎,通过精心设计的美术风格和细腻入微的视觉效果,营造出一个充满魔幻色彩的奇幻世界。
《Genshin Impact》的场景设计极其丰富多样,从广阔的大自然到精致的城镇建筑,无一不体现出艺术家们的创造力和对细节的追求。游戏中的角色建模和动作捕捉也达到了非常高的水准,让玩家感受到每个角色的独特个性。
此外,游戏中的光影效果也是亮点所在。Unity的实时全局光照系统使得场景中的光影变化更加自然和动态,为整体视觉效果增添了不少魅力。同时,游戏中的粒子特效、水面反射等技术运用也非常出色,为玩家带来沉浸式的视觉体验。
2.《Ori and the Will of the Wisps》
由Moon Studios开发的《Ori and the Will of the Wisps》是一款优秀的2D动作冒险游戏,同样采用了Unity引擎。该作品以其精美绝伦的美术风格和出色的视觉呈现而闻名。
《Ori and the Will of the Wisps》的艺术风格融合了东方水墨画和西方绘画的元素,营造出一种梦幻而又温馨的视觉氛围。游戏中的场景设计极其精致细腻,每一个角落都充满了细节和生机。同时,游戏中的角色建模和动画也非常出色,让人感受到每个角色的独特性和情感。
值得一提的是,《Ori and the Will of the Wisps》在光影效果方面也做出了大量的创新尝试。Unity的实时光照系统使得游戏中的光影变化更加自然动态,为整体视觉效果增添了不少魅力。同时,游戏中的粒子特效、水面反射等技术运用也非常出色,为玩家带来沉浸式的视觉体验。

3.《Hellblade: Senua's Sacrifice》
由Ninja Theory开发的《Hellblade: Senua's Sacrifice》是一款采用Unity引擎的动作冒险游戏,以其出色的视觉效果和引人入胜的故事情节而备受好评。该作品的美术风格极具特色,融合了北欧神话和精神病患者的内心世界,营造出一种阴郁而又神秘的视觉氛围。游戏中的场景设计极其细腻入微,每一个细节都体现了艺术家们的用心。同时,游戏中的角色建模和动画也达到了非常高的水准,让人感受到每个角色内心的挣扎和情感。
值得一提的是,《Hellblade: Senua's Sacrifice》在光影效果方面也做出了大量的创新尝试。Unity的实时光照系统使得游戏中的光影变化更加自然动态,为整体视觉效果增添了不少魅力。同时,游戏中的后期处理效果、水面反射等技术运用也非常出色,为玩家带来沉浸式的视觉体验。
四、结语
通过以上的探讨,我们可以看到Unity在美术创作领域的强大实力。从实时渲染技术的崛起,到虚拟现实和增强现实的应用,再到跨平台开发的优势,Unity为艺术家们提供了广阔的创作空间和无限的可能性。
同时,我们也欣赏到了一些优秀的Unity美术作品,它们不仅展现了Unity的视觉表现能力,也折射出了艺术家们的创造力和对细节的追求。相信在未来,Unity必将继续推动美术创作的发展,为我们带来更多令人惊叹的视觉体验。

当然,可以用作知识库的笔记软件还有许多,比如Notion、思源笔记、flomo甚至手机备忘录也是可以的。找到最适合自己的那个并着手开始记录才是最重要的。
建立个人知识管理系统的目的,其核心,是让知识更有组织,更能掌控自己的生活。建立个人知识管理系统可以节省时间,因为它使查找文件、链接和想法更加容易。花费较少的时间重新发明轮子,个人知识管理系统可以帮助我们找到信息之间的新连接。建立个人知识管理系统的目标是简化生活,用更少的时间、在更少的压力下完成任务。
接下来,我将简要介绍下我自己搭建个人知识库的大致步骤。
①创建知识库
打开 Obsidian 后,会看到一个全新的界面。点击“新建仓库”,然后给这个库起个名字。这样,就创建好了一个新的知识库。
②设置知识库结构
为了让知识库更加有序,我们需要为它设计一个合理的结构。在目录树中,我们可以创建不同的文件夹来分类存储笔记。我参考了罗曼笔记法,将笔记分为三个主要类别:灵感笔记、文献笔记和永久笔记。
- 灵感笔记:这类笔记主要记录日常生活中的所思所想,如突发奇想的观点、有趣的见解等。可以将这些笔记放在“灵感笔记”文件夹下,以便日后查阅。
- 文献笔记:这类笔记主要是对阅读书籍、文章后的思考与总结。每读完一本书或一篇文章,都可以在“文献笔记”文件夹下创建一个新的笔记文档,记录书中的重点内容和个人感悟。
- 永久笔记:这类笔记是经过反复思考和验证后确定下来的核心知识点,具有长期价值。可以将这些笔记放入“永久笔记”文件夹中,作为自己知识体系的基础。

随着互联网技术的发展,我们每天都会接触到大量的信息。如何有效地管理这些信息,并将其转化为自己的知识,成为了一个重要的问题。在这里,我想分享一下我是如何使用 Obsidian 这款软件来搭建我的个人知识库的。
首先,我们先来了解一下什么是 ObsidianObsidian 是一款基于 Markdown 语法的开源笔记应用软件,它不仅可以用来记录文字,还可以用来管理文件夹中的所有笔记文件,帮助我们构建一个强大的个人知识库。该软件支持多种客户端,在PC、安卓、苹果系统上均可使用。所有笔记内容均保存在本地,有效保护了隐私。同时它支持双向链接、插件系统、自定义主题、离线使用与多种方案的数据多端同步功能,是一款非常适合用于搭建个人知识库的强大笔记软件。

构建个人知识库的简单介绍

—— 作者:林理然

使用Obsidian软件

③编写笔记
Obsidian 支持 Markdown 语法,这意味着可以在笔记中插入链接、图片、表格等内容。当我们需要创建一个新的笔记时,只需在对应的文件夹下点击右键,选择“新建文件”,输入笔记标题后回车即可开始编辑。在编写过程中,我们可以通过链接的方式将不同笔记之间建立关联,形成一个相互联系的知识网络。
同时因为obsidian使用的是markdown格式,可以较好的与其他笔记软件互通,我们也可以在需要快速记录时使用更便捷的工具记录,事后再整理到知识库中来。
④利用插件增强功能
Obsidian 提供了丰富的插件资源,这些插件可以帮助我们更好地管理和使用知识库。比如,“Dataview”插件可以很方便的查询归类笔记;“Templater”插件可以方便的制作笔记模板,在创建笔记时可以很方便的进行调用;“Calendar”插件则能方便地创建日记周记等笔记。我们只需要进入“设置”页面,在“第三方插件“-”社区插件市场”选项卡中搜索需要的插件名称,点击安装即可,当然可能需要一点特殊的上网手段。
⑤定期整理和回顾
随着时间的推移,我们的知识库会不断积累新的内容。为了保持知识库的条理性,我们需要定期对笔记进行整理。可以以一周为一个周期,花一些时间检查最近新增或修改过的笔记,确保它们都被正确地分类和链接,便于后续的查找与使用。
通过以上五个步骤,我们就能够成功地使用 Obsidian 搭建起属于自己的个人知识库。当然,这只是基础中的基础,随着使用经验的积累,还可以根据自身需求对其进行更多个性化设置。总之,只要坚持使用并不断完善,相信每个人都能够建立起一个强大而实用的个人知识库!

构建个人知识库的简单介绍

—— 作者:林理然

使用Obsidian软件

于UE5的山洪推演平台研究

原创:华中大智水中心
供稿:匡正刚

一、引言
虚幻引擎起初是一款游戏制作引擎,但由于其高效且逼真的物理引擎特性,被越来越多的应用于战略演练、三维仿真城市建设、虚拟环境模拟等众多领域。在防洪管理领域,虚幻引擎的实时反馈机制极大地提高了决策的准确性和响应速度。此外,虚幻引擎内置了强大的物理引擎,无论是流体动力学模拟,还是碰撞和破坏效果的呈现,虚幻引擎都能够精确捕捉并再现洪水的动态行为。这对于洪水模拟、风险评估和防洪策略的制定具有重要意义。
利用UE5进行虚拟场景构建、洪水可视化、实时交互平台搭建,能够为防洪管理机构提供了一个逼真的防洪演练环境,帮助研究人员和应急管理部门更好地理解洪水灾害的动态过程和潜在影响,从而有效提高防洪救灾的效率和响应能力,并为未来的防洪减灾策略提供科学依据和技术支持。
二、国内外研究现状及发展趋势
在国内的研究中,介绍使用实景建模技术结合BIM 模型,借助 Cesium for Unreal 在虚幻引擎中实现水利工程设计阶段的可视化应用,为 BIM 技术在水利设计后续工作应用提供技术支持;借助 Oculus Rift DK2 获取矿井水灾场景内容,使用 Virtuix Omni 置身于虚拟环境中,实现了从巷道漏水到水灾发生后的逃生场景模拟;将地理信息系统、数字孪生实景三维建模、实景三维可视化展示、游戏引擎开发、大数据存储及分析等多项先进的技术相结合,分析智慧楼宇数字孪生三维可视化技术与应用,形成一套面向智慧楼宇、智慧社区等场景的高水平信息化解决方案;朱海南等针对当前洪水淹没可视化拟真度及实时性不高等问题,提出了一种洪水淹没仿真设计流程。通过搭建高拟真度流域场景,并使用蓝图设计触发事件,模拟洪水淹没的动态过程,表明其流程可有效提升洪水淹没三维仿真的拟真度及实时性。
在国外,Yu-Yeon LEE研究了经常遭受洪水破坏的地区,构建了基于 3D 地形,并制作了一个旨在预测内部洪水发生情况的系统。研究中发现与其他 3D 引擎相比,虚幻引擎具有出色的物理引擎,可以创建真实的图形和效果,从而可以模拟出类似于实际内部水泛滥的情况,使用户能够直观,快速地响应洪水;Xiaofang Zhang等为了提高显示效果,子系统中使用了多个插件,如OceanologyUltra Dynamic Sky插件。其中Oceanology插件用于渲染海洋环境,Ultra Dynamic Sky插件用于根据不同时间来渲染不同的天空和天气效果。

总体而言,这些研究现况和发展趋势表明,虚幻引擎的应用领域已非常广阔,可以将复杂的水利数据进行可视化呈现,提高数据的易读性和理解性,为水利工程的规划、设计、管理和决策提供了创新的工具和技术,有望推动水利领域向数字化、智能化转型,并为水资源管理带来新的发展机遇和挑战。
三、基于UE5物理引擎的仿真平台研发
本平台能够直观展现洪灾的淹没效果,开发流程包括基础数据处理、UE5中的场景搭建、基于蓝图的功能开发和实际项目应用,总体技术路线见图3-1。

图3-1总体技术路线

图3.1-1 添加碰撞网格后的地形

图3.3-1 计算淹没面积的蓝图实现

时间天气系统

3.1场景搭建
首先将收集到的倾斜摄影模型导入到引擎中,放置于坐标中心位置。导入后再使用超动态天空插件设置场景的光照,开启Lumen全局光照系统后可实时调整光照效果,以便更好的还原场景真实天气状态。之后在地形上放置植被、建筑物、道路等环境元素,通过材质编辑器为导入的模型添加材质纹理,调整材质参数,使自然环境和水利对象显示效果更加形象逼真。最后为地形添加碰撞网格,将模型碰撞复杂度设置为将复杂碰撞用作普通碰撞,碰撞网格如图3.1-1。

3.2功能开发
虚幻引擎拥有其独特的可视化脚本系统蓝图编辑器(Blueprint Editor),使用户无需编写代码,通过图形化界面进行调用、连接封装好的编程语言模块,实现功能开发。
蓝图由节点和导线组成。节点代表游戏元素,如变量;代表游戏操作的函数以及流程控制,如条件分支和循环。导线通过针脚连接节点,代表数据流和执行流。分配给节点的引脚分为数据引脚和执行引脚,前者用于连接代表数据流的导线,后者用于连接代表执行流的导线。图3.3-1为计算淹没面积的蓝图实现。

3.2.1切换时间天气
平台内置了超动态天空插件,该插件能够提供逼真的动态天空和天气效果。通过插件,我们可以模拟从晴朗到暴风雨等多种天气状况,以及实现昼夜更替的无缝过渡。

洪水模拟效果

阻水工况切换

通过这些功能的实现,洪水模拟平台不仅能够提供一个高度逼真的洪水灾害模拟环境,还能够根据实时数据动态调整场景,为洪水预测、风险评估和应急响应训练提供强有力的支持。这种集成了实时天气和时间控制的模拟平台,对于城市规划、防洪措施设计和灾害管理等领域具有重要的应用价值。
3.2.2洪水模拟
本研究构建了一个交互式的洪水模拟平台,该平台集成了多项关键功能,实现了对洪水事件的高效模拟和分析,以达到为抗洪避险提供指导作用的目的。

视频中展示了一个功能完备的洪水模拟平台,它不仅能够提供实时的洪水模拟,还能够进行精确的淹没分析和流量控制。这些功能的实现,为洪水风险评估和管理提供了一个强有力的工具。
3.2.3工况切换
该洪水模拟平台具备高级工况切换功能,允许用户选择不同的模拟场景,以查看在不同工况下的洪水影响。该功能对于评估桥梁结构在洪水事件中的稳定性和安全性至关重要。平台基于UE5的Chaos物理系统,对两座桥梁模型进行了详细的破裂效果制作。用户能够通过下拉框选择两桥完好、上游桥坍塌、下游桥坍塌和两桥坍塌四种工况进行模拟,实现了模拟塔林村上下游两座桥梁堵塞形成的特殊工况对洪水淹没情况的影响。通过这种方式,决策者可以更好地理解桥梁在洪水中的潜在风险,并制定相应的减灾措施。

四、差异分析
传统的水动力学模型和基于UE5物理引擎的模拟,模拟洪水时结果存在差异的原因可能包括以下几点:
1、模型假设与算法差异:传统水动力学模型通常基于物理方程,并通过数值方法求解。而UE5物理引擎则侧重于实时模拟,可能采用近似算法和简化的物理模型,这可能导致模拟结果的差异。
2、模型验证与校正:水动力学模型通常经过严格的验证和校正过程,以确保模拟结果的准确性。而UE5物理引擎可能缺乏同样程度的校正,尤其是对于特定应用场景的校正。
3、计算效率的不同:UE5物理引擎设计侧重于实时交互,注重计算效率和实时性。相比之下,水动力学模拟计算需要更多的计算资源和时间。
4、易用性和交互性:UE5物理引擎具有良好的用户界面和交互性,易于使用和调试。水动力学模拟通常需要更多的专业知识和技能来操作和分析。
UE5物理引擎的优势在于其计算效率高、易用性好、适用范围广等特点,适合于需要实时交互和视觉效果的应用场景。与传统水动力学模型模拟结果近似,能够为水利部门防洪减灾提供一定的指导意义。

五、总结和展望
本平台以2016年塔林村山洪灾害为研究对象,基于UE5引擎开发了山洪灾情推演平台。采集搭建场景所需要的数据底座,精确的重建塔林村及其周边地区的三维地形。在功能的开发实现上,借助UE5提供的强大插件支持,实现了切换时间天气、场景漫游、洪水模拟、工况切换等功能。
尽管本研究在山洪灾害模拟方面取得了一定的成果,但仍存在一些局限性和未来改进的空间。在今后的研究中需要进一步探索物理引擎与水动力模型的耦合,以提高模拟的准确性和效率。其次,虚拟现实(VR)和增强现实(AR)技术在水利工程可视化中的应用也是一个值得深入研究的方向。通过VR和AR技术,可以提供更加沉浸式的交互体验。同时,本研究的成果也可以推广应用于其他类型的自然灾害模拟和应急管理中,如地震、台风、滑坡等。最后,需要加强应用平台建设,本研究开发的平台在未来可以作为一个基础框架,为水利工程的规划、设计、施工和管理提供数字化、智能化的解决方案。通过不断地技术创新和功能完善,有望推动水利领域向数字化、智能化转型,为水资源管理带来新的发展机遇。

参考文献
[1] 张洋.基于虚幻引擎实现BIM模型结合实景建模在水利工程中可视化的应用[J].治淮,2023,(02):35-36.
[2] 冯文琪,李健.基于虚幻引擎的矿井水灾逃生系统设计[J].电子质量,2018,(09):78-80.
[3] 赵钦,蔡耀君,谢聪慧等.基于UE5的数字孪生三维可视化技术在智慧楼宇中的研究与应用[J].测绘,2023,46(03):103-107.
[4] 朱海南,万定生,余洋.基于UE4的洪水淹没仿真技术研究与应用[J].信息技术,2020,44(03):13-18.DOI:10.13274/j.cnki.hdzj.2020.03.003.
   [5] Lee Y Y, Park H J, Oh S C. A Study on the Development of Urban Internal Waters Flooding Visualization System Using Unreal Engine[C]//Proceedings of the 40th Asian Conference on Remote Sensing, Daejeon, Republic of Korea. 2019: 14-18.
   [6] Zhang, X.; Fan, Y.; Liu, H.; Zhang, Y.; Sha, Q. Design and Implementation of Autonomous Underwater Vehicle Simulation System Based on MOOS and Unreal Engine. Electronics 2023, 12, 3107
[7] Wayama K, Yokogawa T, Amasaki S, et al. Verifying Game Logic in Unreal Engine 5 Blueprint Visual Scripting System Using Model Checking[C]//Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering. 2022: 1-8.
[8] 丘雨轲,陈冰清,陈杰文.基于UE5的水利工程可视化平台设计与实现[J].人民珠江,2024,45(04):26-32.

着对清洁能源需求的增长和环境保护意识的提高,水电作为一种重要的清洁能源,在世界各地得到了广泛的应用和发展。水电站利用水位差产生的将动能转化为电能,是目前世界上最大的可再生能源来源之一。
英思服务于水利水电行业20多年,成为了行业的领跑者,在此分享一些基础概念,以便加深英思人对水电站的理解。
一、水电站的类型
水电站依据不同的标准可以分为多种类型。
1.按开发方式分类
坝式水电站:利用大坝聚集水流形成水头,按厂房与坝的相对位置,可分为河床式(葛洲坝)、坝后式(三峡)、坝内式、厂房顶溢流式、岸边式和地下式等。

作者:纪小会

引水式水电站:是采用引水建筑物集中天然河道落差以形成发电水头的水电站。根据引水道的水力条件,引水式水电站又可以分为无压引水(适用于中小型水电站)和有压引水(适用于大中型水电站)两种类型。

抽水蓄能电站:是具有上、下水库,利用电力系统中低谷多余电能,把下水库的水抽到上水库内,以位能的形式蓄能,需要时再从上水库放水至下水库进行发电的水电站。按水源不同,抽水蓄能电站又可分为纯抽水蓄能电站、混合式抽水蓄能电站、调水式抽水蓄能电站。

水电站的类型

Another day

长龙山抽水蓄能电站枢纽布置图

夹岩面板堆石坝

科哈拉水电站

混合式水电站:适用于上游有良好坝址,适宜建库,而紧邻水库的下游河道突然变陡或河流有较大转弯的情况。混合式水电站和引水式水电站之间没有明确的分界线。在工程实际中常将具有一定长度引水建筑的混合式电站统称为引水式电站。
2.按工作水头分类
按工作水头分类,水电站可以分为高水头(>200米)、中水头(40-200米)和低水头(<40米)三类。高水头水电站多位于河流上游的山区,而低水头水电站则常见于河流中下游。
3.按装机容量分类
根据装机容量的不同,水电站还可以分为大型(≥300MW)、中型(50-300MW)和小型(<50MW)三类。
二、大坝的分类
大坝作为水电站的关键组成部分,根据其建造形式和工作原理,主要可以分为土石坝、重力坝和拱坝等几种类型。
1.土石坝
土石坝是指由土、石料等当地材料填筑而成的坝,是历史最为悠久的一种坝型,土石坝是世界大坝工程建设中应用最为广泛和发展最快的一种坝型。
土石坝因其灵活性、经济性和适应性广泛应用于世界各地的水利工程项目中。通过精心设计和严格施工,土石坝可以有效发挥其功能,同时对环境造成的影响较小。
土石坝细分的类别也比较多。像土坝、堆石坝、面板坝(混凝土面板坝、沥青混凝土面板坝)、心墙坝(黏土心墙坝、沥青混凝土心墙坝)、斜墙坝、水坠坝等。

2.重力坝(三峡大坝、丹江口大坝、黄登水电站)
重力坝是用混凝土或石料等材料修筑,主要依靠坝体自重保持稳定的坝。
重力坝的工作原理
重力坝在水压力及其他荷载作用下,主要依靠坝体自重产生的抗滑力来满足稳定要求;同时依靠坝体自重产生的压应力来抵消由于水压力所引起的拉应力,以满足强度要求。重力坝基本剖面呈三角形。在平面上,坝轴线通常呈直线,有时为了适应地形、地质条件,或为了枢纽布置上的要求,也可布置成折线或曲率不大的拱向上游的拱形。

3.拱坝
拱坝是固接于基岩的空间壳体结构,在平面上呈凸向上游的拱形,其拱冠剖面呈竖直的或向上游凸出的曲线形。

拱坝工作原理
拱坝坝体结构既有拱作用又有梁作用,其承受的荷载一部分通过拱的作用压向两岸,另一部分通过竖直梁的作用传到坝底基岩。
拱坝的特点
   1.稳定特点:拱坝坝体的稳定主要依靠两岸拱端的反力作用,不像重力坝那样依靠自重来维持稳定。因此拱坝对坝址的地形、地质条件要求较高,对地基处理的要求也较严格。
     2.结构特点:拱坝属于高次超静定结构,超载能力强,安全度高。当外荷载增大或坝的某一部分发生局部开裂时,坝体的拱和梁作用将会自行调整,使坝体应力重新分配。拱坝是整体空间结构,坝体轻韧,弹性较好,工程实践表明,其抗震能力也很强。另外,由于拱是一种主要承受轴向压力的推力结构,拱内弯矩较小,应力分布较为均匀,有利于发挥材料的强度。从经济意义上讲,拱坝是一种很优越的坝型。    3.荷载特点:拱坝坝身不设永久伸缩缝,温度变化和基岩变形对坝体应力的影响较为显著,设计时,必须考虑基岩变形,并将温度作用列为一项主要荷载。   4.施工特点:由于拱坝剖面较薄,坝体几何形状复杂,因此,对于施工质量、筑坝材料强度和防渗要求等都较重力坝严格。
随着技术的不断进步和环境保护意识的增强,水电站的设计与建设正朝着更加高效、环保和可持续的方向发展。其在能源供应中的作用也将更加突出。未来,水电站的发展趋势可能包括更高的效率、更小的环境影响以及更灵活的运行模式。

重力坝的优点
结构作用明确,设计方法简单,安全可靠。据统计,在各种坝型中,重力坝的失事率是较低的。
对地形、地质条件适应性强。任何形状的河谷都可以修建重力坝。
枢纽泄洪问题容易解决。重力坝可以做成溢流的,也可以在坝身不同高度设置泄水孔,一般不需要另设溢洪道或泄水隧洞,枢纽布置紧凑。
便于施工导流。在施工期间可以利用坝体导流,一般不需要另设导流隧洞。
重力坝的缺点
1、坝体剖面尺寸大,材料用量多。
2、坝体应力较低,材料强度不能充分发挥。
3、坝体与地基接触面积大,相应坝底扬压力大,对稳定不利。
4、坝体体积大,由于施工期混凝土的水化热和硬化收缩,将产生不利的温度应力和收缩应力,因此,在浇筑混凝土时,需要有较严格的温度控制措施。

1 文化引导,构建学习创新型组织
企业文化与学习创新型企业是一种相互包容的关系,企业文化建设包含着学习创新型企业创建,学习创新型企业创建丰富着企业文化。创建学习创新型企业是企业文化建设的有效载体和重要突破口,衡量一个企业的企业文化建设搞得好坏的一个重要标志,就是看这个企业能否最终成为一个学习创新型企业。英思一直以“诚信自励,协作进取,创新高效,精益求精”为核心价值观引导员工,进一步增强企业合力和凝聚力。
英思企业在学习创新的基础上,逐步建立了适合企业自身特点的管理模式。英思公司领导层清醒地认识到,只有重新打造新高品质的英思企业文化,构建学习创新型的团队,才能为企业持续发展提供强有力的支撑,使企业得到永续发展。
为此,英思以建设高品质企业文化为契机,大兴学习创新之风,加大对普通员工和管理者的培训力度,开展了形式多样、内容丰富的学习教育活动:英思企业文化核心内容的学习;精益生产经营管理知识的学习;国内外先进企业经营管理经验算的学习以及结合项目引进、岗位变换进行的业务知识技能更新、充电的学习等等。并在实践中总结各种学习方式,鼓励多层次的交流沟通,通过各种手段激发员工的积极性和创造性。企业内部融洽的气氛,管理层与普通员工之间坦诚的关系,部门之间沟通协作的意识,创造学习、沟通的氛围和渠道,减少了管理成本,提高了企业的核心竞争力。如今,崇尚学习、鼓励交流、坚持开放、激励创新,正成为其奉行的新原则。

2 机制保障,提供良好的“学习创新”环境
英思文化的重新提炼和打造本身就是一个学习创新的过程。为了培养造就一支高素质的英思员工队伍,英思把培养学习创新型人才作为新的创业工作中的重中之重。英思高层领导搞好协调和服务,坚持多层次、多途径培养和造就人才,为企业发展提供人才保障。
英思制定“与员工共同奋斗、共同成长,协助员工实现个人职业生涯,达到个人成功、英思成长”的内在目标,将培训作为一种投资。英思对市场前沿的最新技术结合本公司的业务需求主动不定期的开展专业的技能知识分享讲座。
新员工入职后,英思为了使新员工更快适应公司环境,通过职前培训让新员工了解英思的环境及状况。由部门负责人从理论到实地演练,由浅入深地手把手辅导新员工的学习。
3 注重实践,提供展示才华的舞台
为有“亮点”的人才创造放光的机会是英思致力于创建学习创新型企业的重要举措。英思以政策为保证,通过环境的塑造形成良好的“赛马”氛围,在企业发展的实战中锻炼人。
建立“竞争、择优、动态”的用人机制,使学习创新人才“有位”而“有为”。为了建立有利于优秀人才脱颖而出、充分施展才华的选人用人机制,改“相马”为“赛马”。近几年来,英思公司开展了中层管理岗位竞争上岗、全员劳动竞赛、技术工人技术比武等赛马活动;在公开招聘中层管理人员和重要岗位人员时,严格遵循公开、公平、公正和择优的原则,优胜劣汰;在部门人员的选聘中,也采取考核、考试相结合的办法,实行末位淘汰制。
4 不断提升的ins创新文化
INS 英思含义:Infrastructure (基建工程 ) Information (信息化 ) Intelligence (智能化)Internet ( 网络化)以“IN”打头的后加 S 表 示复数(多的意思)。Ins是一项长期性的工程,只有不断的学习ins基础知识,并将ins理论转化为实际的操作,实现“科技服务工程,质量铸就品牌”。
英思导入ins的精实理念,从源头的培训及实际生产中消除浪费,持续改善,达到最高的品质,最低的成本,更有弹性的生产,适应国际形势的变化需求。英思特别整合了培训资源,建立了ins学习中心,不仅含新员工的培训及干部的提升培训。英思以月刊《英思月刊》“精实专栏”作为宣传ins的园地,积极传播ins文化,以帮助大家创新思维,改善工作,提高效率。
综上所述企业文化通过把创新文化融入员工知识结构,通过影响培训机制和学习氛围而影响创新思维。

企  业 文  化

作者:袁吉

Unity中的编程代码规范

作为程序员的你,大概率为 Review 烦恼过:花大量的时间来检查小伙伴的代码是否符合代码规范和框架要求。项目开始时,主程和核心人员大都会先设计框架、制定各种规范,其中比较重要的一项就是制定代码规范。在前期团队人员较少的时候,代码规范还能较好的执行,通过代码扫描工具、代码质量控制工具、以及 Review 来保证开发人员的代码符合规范。然而,随着团队人员的增加、开发节奏的加快,Review 成了负担。而且,想通过工具来检查代码是否符合框架要求还不太现实,很难找到相应的工具。 
最近,我在研究 DOTS 时,发现其用了一个很好的 C# 特性:Roslyn。查看文档后,发现 Unity 很早就支持 Source Generator 和 Analyzer。经过一段时间的项目实战,使用了代码生成(Source Generator)和 Analyzer。其中 Souce Generator 主要用来辅助框架的搭建,Analyzer 主要用来框架规范的检查,这些都是在 precompile 阶段完成的,不符合要求的代码会直接报 Error 且无法编译。可以粗略的认为是实现了自定义语法。
接下来,我将通过实例的形式和大家一起探讨学习 Roslyn 在代码规范和框架搭建上的应用。
⦁ Analyzer 初体验:强制使用大括号包括逻辑分支 (if...else...)
⦁ 强制加注释(上)类注释 | 强制加注释(下)方法注释
⦁ 命名规范检查(一)命名空间和类名
⦁ 命名规范检查(二)public和private方法名称规范检查
⦁ 命名规范检查(三)成员变量命名规范检查
⦁ 命名规范检查(四)临时变量命名检查
⦁ 检查继承关系

作者:张光胜

由于编程习惯的不同,在写 if...else... 逻辑分支时,如果只有一行代码,有人习惯使用 {} 包括,有人却习惯不用(特别是新手)。但经验上来看,加 {} 不但可读性强,而且有益于维护,特别适用于不同的人维护同一段代码、一行变多行的情况。
希望实现的效果:Unity 中,强制使用“推荐的写法”,即添加花括号 {}。
不推荐的写法:

推荐的写法:

一、开发 Analyzer
1. 准备环境
工具使用 Visual Studio 2022 Community,搜索下载安装即可。
⦁ 使用 VS 新建类库项目
⦁ 类库框架选择 .Net Standard 2.0 (兼容 Unity)
⦁ 添加 Roslyn 包:搜索找到 Microsoft.CodeAnalysis.CSharp,安装 3.8.0 版本。安装成功后,依赖项中会出现“分类器”。

2. 新建分析器
⦁ 新建常量类 DianogsticIDs 类,用来定义错误 ID 常量
⦁ 新建 DiagnosticCategories 类,用来定义

⦁ 排除目录定义(配置)ConstraintDefinition.cs

⦁ 排除目录定义(配置)ConstraintDefinition.cs

⦁ 新建类文件 ForceStatementBrace.cs,代码如下
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Diagnostics;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
namespace Analyzer
{
    [DiagnosticAnalyzer(LanguageNames.CSharp)]
    internal class ForceStatementBrace : DiagnosticAnalyzer
    {
        private static readonly DiagnosticDescriptor FroceBraceDescriptor =
            new DiagnosticDescriptor(DianogsticIDs.FORCE_BRACE_ID, // ID
                           "逻辑分支必须使用花括号包括", // Title
                           "逻辑分支必须使用花括号包括", // Message format
                            DiagnosticCategories.Criterion,// Category
                            DiagnosticSeverity.Error, // Severity
                            isEnabledByDefault: true // Enabled by default
 );
        public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(FroceBraceDescriptor);
        public override void Initialize(AnalysisContext context) { context.RegisterSyntaxTreeAction(AnalyzeSymbol); }
        private static void AnalyzeSymbol(SyntaxTreeAnalysisContext context)
        {
            var root = context.Tree.GetRoot(context.CancellationToken);
            List<ExpressionStatementSyntax> reportedNode = new List<ExpressionStatementSyntax>();
            foreach (var ifstatement in root.DescendantNodes()?.OfType<IfStatementSyntax>())
            {
                var expressStatements = ifstatement.DescendantNodes()?.OfType<ExpressionStatementSyntax>().ToList();
                foreach (var estate in expressStatements)
                {
                    if (ConstraintDefinition.ExcludeAnalize(context.Tree.FilePath))
                    {//排除特殊目录
                        return;
                    }
                    if
                        (reportedNode.Contains(estate))
                    { continue; }
                    if (!(estate.Parent is BlockSyntax))
                    { reportedNode.Add(estate);
                        var diagnostic = Diagnostic.Create(FroceBraceDescriptor,
                            estate.GetFirstToken().GetLocation());
                        context.ReportDiagnostic(diagnostic); }
                }
            }
        }
    }
}

3. 编译该项目,生成 dll 文件备用 (debug)
二、在 Unity 中使用
1. Unity 工程
⦁ 新建 Unity 项目
⦁ 在 Assets 下新建 Scripts 目录
⦁ 把之前生成的 dll 文件放入 Assets/Scripts 目录下
⦁ 在 Unity project 出口中找到该 dll,点击选中,在 Inspector 设置如图:

2.测试脚本
⦁ 新建脚本 TestAnalyzer.cs,并添加测试脚本

⦁ 这时可以看到 Unity Console 窗口中有两行报错

3.强制加注释
注释的重要性,大家应该够能感同深受,这里不再啰嗦。但有多少项目拥有完整的注释,很多人也都心知肚明。今天举个小的例子,来说明如何给类和方法强制添加 xml 文档注释,个性化的需求可以自己添加。
实现目标:强制所有 public 方法都加 xml 文档注释。
编写 Analyzer 分析器
首先定义错误 ID 在类 DianogsticIDs 中添加成员

新建分析器类,对方法进行强制注释。由于代码过长,不便于展示,感兴趣的同事,可以在私下跟我沟通交流。
4.命名规范检查
命名空间和类名一般要求驼峰命名法,我们来检查者两者是否符合规范。但驼峰命名要检查每个单词,需要英文单词库,需要的可以自行建立单词库,这边只检查首字母是否大写和是否全是大写两种情况。
实现目标:
1.强制类名首字母大写,并且不能全部是大写;
2.强制命名空间每段首字母大写
编写 Analyzer 分析器:
首先在类 DianogsticIDs 中定义新的错误 ID:
public const string FORCE_NAMING_CONVENTIONS_ID= "FERR1003";`
然后在 AnalyzerReleases.Unshipped.md 文件添加该规则,如下:

新建分析器类ForceNSClassNamingConventions.cs,对名称进行限制。由于代码过长,不便于展示,感兴趣的同事,可以在私下跟我沟通交流。
代码如有不足或不优雅之处,望同仁们不吝赐教。
本文的核心,是在阐述如何在编辑器阶段,进行强制代码规范,如果没有按照规范,那么就会通不过编译。希望给大家提供一些思路,发散。
由于篇幅有限,本次先分享到这里,后续有机会继续分享,谢谢大家的阅读。

1.哪一个月有二十八天?(脑筋急转弯)
2.请问在《英思员工手册》中关于“日志”的提交时限是几天?(超过几天无法提交?)
(第一个两题都答对的同事将获得公司提供的精美小礼品一份,请大家积极参与,快快在“英思之家”群里给出你的答案吧!)

8月 ● 寿星

李俊平

谢红星

祝明全

刘潇然

龚冠璋

张力

朱俊浩

王秋实

栾想平

赵峰

本期有奖问答

地址:湖北省武汉市小洪山东区34号湖北省科技创业大厦A座12楼电话: 027- -87320576公司网址: www. wuhanins. com

Copyright © 2024 陕西妙网网络科技有限责任公司 All Rights Reserved

增值电信业务经营许可证:陕B2-20210327 | 陕ICP备13005001号 陕公网安备 61102302611033号