三维建模的关键技术,第1张

(一)表面建模

基于面模型的构模方法侧重于3D空间实体的表面表示,如地形表面、地质层面、构筑物(建筑物)及地下工程的轮廓与空间框架。所模拟的表面可能是封闭的,也可能是非封闭的。基于数据内插的Grid模型(图5—2)和基于采样点的TIN模型(图5—3),通常用于非封闭表面模拟;而B—Rep模型和WireFrame模型通常用于封闭表面或外部轮廓模拟。

图5—2 Grid模型

图5—3 TIN模型

(二)实体建模

三维实体可以等分成无数体元,三维体元填充模型将三维空间物体分为相邻但不重合的三维体元的集合。它表达点状物体使用包含该点的一个体元,表达线状物体用一串沿一个方向(方向可以任意变化)延伸的相邻体元的集合,表达面状物体时用一片沿两个方向延伸的相邻体元的集合。体模型基于3D空间的体元分割和真3D实体表达,体元的属性可以独立描述和存储,因而可以进行3D空间操作和分析。可以根据体元的规整性分为规则体元和非规则体元两个大类。规则体元包括实体几何模型CSG—tree)、三维体元模型(Voxel)、八叉树模型(Octree,图5—4)、针体模型Needle)和规则块体模型(RegularBlock)共5种模型

图5—4 八叉树模型

1、用于城市管理

三维建模技术可以完成城市灾害事件和突发事件的动态模拟,实现城市各类信息的可视化查询,为政府对城市的管理和服务提供决策。

2、用于城市规划

对城市的未来形态进行预演,消失的城市形态也可以重新模拟出来,并根据规划成果随时进行修改,从而获得城市规划方案调整的科学依据,使城市规划更具前瞻性。

3、用于城市环境动态变化研究

使用三维技术可以将大量的统计数据转换成容易理解的图像,表现人类活动对环境施加的压力,预测不同人类活动条件下的环境效应。

4、用于旅游

建模技术不仅可以展现城市现有景观,而且能够再现不复存在的和正在规划建设中的景点,从而对城市起到宣传作用,有助于扩大城市影响、吸引投资和游客。

三维模型构成:

1、网格

网格是由物体的众多点云组成的,通过点云形成三维模型网格。点云包括三维坐标(XYZ)、激光反射强度(Intensity)和颜色信息(RGB),最终绘制成网格。

这些网格通常由三角形、四边形或者其它的简单凸多边形组成,这样可以简化渲染过程。但是,网格也可以包括带有空洞的普通多边形组成的物体。

2、纹理

纹理既包括通常意义上物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案,也称纹理贴图(texture),当把纹理按照特定的方式映射到物体表面上的时候能使物体看上去更真实。

纹理映射网格赋予图像数据的技术;通过对物体的拍摄所得到的图像加工后,再各个网格上的纹理映射,最终形成三维模型。

三维地质建模主要应用于开发阶段的油藏静态描述,在储层预测方面起到的作用有限。曾经在一个海上的项目里做了试验,确实有一定的效果。这里主要想说明只要建模技术得到恰当的应用,可以得到更广泛的成果。

这个工区有高分辨三维地震,并进行了反演,并根据反演进行了储层预测。在反演数据体的基础上通过建立三维地质模型,发现对曲流河砂体的描述更为合理准确。

原则1、载入详细的原子数据到维度结构中

维度建模应该使用最基础的原子数据进行填充,以支持不可预知的来自用户查询的过滤和分组请求,用户通常不希望每次只看到一个单一的记录,但是你无法预测用户想要掩盖哪些数据,想要显示哪些数据,如果只有汇总数据,那么你已经设定了数据的使用模式,当用户想要深入挖掘数据时他们就会遇到障碍。当然,原子数据也可以通过概要维度建模进行补充,但企业用户无法只在汇总数据上工作,他们需要原始数据回答不断变化的问题。

原则2、围绕业务流程构建维度模型

业务流程是组织执行的活动,它们代表可测量的事件,如下一个订单或做一次结算,业务流程通常会捕获或生成唯一的与某个事件相关的性能指标,这些数据转换成事实后,每个业务流程都用一个原子事实表表示,除了单个流程事实表外,有时会从多个流程事实表合并成一个事实表,而且合并事实表是对单一流程事实表的一个很好的补充,并不能代替它们。

原则3、确保每个事实表都有一个与之关联的日期维度表

原则2中描述的可测量事件总有一个日期戳信息,每个事实表至少都有一个外键,关联到一个日期维度表,它的粒度就是一天,使用日历属性和非标准的关于测量事件日期的特性,如财务月和公司假日指示符,有时一个事实表中有多个日期外键。

二、敏捷建模的原则

敏捷建模(AM)定义了一系列的核心原则和辅助原则,它们为软件开发项目中的建模实践奠定了基石。其中一些原则是从XP中借鉴而来,在Extreme Programming Explained中有它们的详细描述。而XP中的一些原则又是源于众所周知的软件工程学。复用的思想随处可见!基本上,本文中对这些原则的阐述主要侧重于它们是如何影响着建模工作;这样,对于这些借鉴于XP的原则,我们可以从另一个角度来看待。

核心原则

主张简单 当从事开发工作时,你应当主张最简单的解决方案就是最好的解决方案。不要过分构建(overbuild)你的软件。用AM的说法就是,如果你现在并不需要这项额外功能,那就不要在模型中增加它。要有这样的勇气:你现在不必要对这个系统进行过分的建模(over-model),只要基于现有的需求进行建模,日后需求有变更时,再来重构这个系统。尽可能的保持模型的简单。

拥抱变化 需求时刻在变,人们对于需求的理解也时刻在变。项目进行中,Project stakeholder可能变化,会有新人加入,也会有旧人离开。Project stakeholder的观点也可能变化,你努力的目标和成功标准也有可能发生变化。这就意味着随着项目的进行,项目环境也在不停的变化,因此你的开发方法必须要能够反映这种现实。

你的第二个目标是可持续性 即便你的团队已经把一个能够运转的系统交付给用户,你的项目也还可能是失败的--实现Project stakeholder的需求,其中就包括你的系统应该要有足够的鲁棒性(robust ),能够适应日后的扩展。就像Alistair Cockburn常说的,当你在进行软件开发的竞赛时,你的第二个目标就是准备下一场比赛。可持续性可能指的是系统的下一个主要发布版,或是你正在构建的系统的运转和支持。要做到这一点,你不仅仅要构建高质量的软件,还要创建足够的文档和支持材料,保证下一场比赛能有效的进行。你要考虑很多的因素,包括你现有的团队是不是还能够参加下一场的比赛,下一场比赛的环境,下一场比赛对你的组织的重要程度。简单的说,你在开发的时候,你要能想象到未来。

递增的变化 和建模相关的一个重要概念是你不用在一开始就准备好一切。实际上,你就算想这么做也不太可能。而且,你不用在模型中包容所有的细节,你只要足够的细节就够了。没有必要试图在一开始就建立一个囊括一切的模型,你只要开发一个小的模型,或是概要模型,打下一个基础,然后慢慢的改进模型,或是在不在需要的时候丢弃这个模型。这就是递增的思想。

令Stakeholder投资最大化 你的project stakeholder为了开发出满足自己需要的软件,需要投入时间、金钱、设备等各种资源。stakeholder应该可以选取最好的方式投资,也可以要求你的团队不浪费资源。并且,他们还有最后的发言权,决定要投入多少的资源。如果是这些资源是你自己的,你希望你的资源被误用吗。

有目的的建模对于自己的artifact,例如模型、源代码、文档,很多开发人员不是担心它们是否够详细,就是担心它们是否太过详细,或担心它们是否足够正确。你不应该毫无意义的建模,应该先问问,为什么要建立这个artifact,为谁建立它。和建模有关,也许你应该更多的了解软件的某个方面,也许为了保证项目的顺利进行,你需要和高级经理交流你的方法,也许你需要创建描述系统的文档,使其他人能够操作、维护、改进系统。如果你连为什么建模,为谁建模都不清楚,你又何必继续烦恼下去呢?首先,你要确定建模的目的以及模型的受众,在此基础上,再保证模型足够正确和足够详细。一旦一个模型实现了目标,你就可以结束的工作,把精力转移到其它的工作上去,例如编写代码以检验模型的运作。该项原则也可适用于改变现有模型:如果你要做一些改变,也许是一个熟知的模式,你应该有做出变化的正确理由(可能是为了支持一项新的需求,或是为了重构以保证简洁)。关于该项原则的一个重要暗示是你应该要了解你的受众,即便受众是你自己也一样。例如,如果你是为维护人员建立模型,他们到底需要些什么?是厚达500页的详细文档才够呢,还是10页的工作总览就够了?你不清楚?去和他们谈谈,找出你想要的。

多种模型开发软件需要使用多种模型,因为每种模型只能描述软件的单个方面,“要开发现今的商业应用,我们该需要什么样的模型?”考虑到现今的软件的复杂性,你的建模工具箱应该要包容大量有用的技术(关于artifact的清单,可以参阅AM的建模artifact)。有一点很重要,你没有必要为一个系统开发所有的模型,而应该针对系统的具体情况,挑选一部分的模型。不同的系统使用不同部分的模型。比如,和家里的修理工作一样,每种工作不是要求你用遍工具箱里的每一个工具,而是一次使用某一件工具。又比如,你可能会比较喜欢某些工具,同样,你可会偏爱某一种模型。有多少的建模artifact可供使用呢,如果你想要了解这方面的更多细节,我在Be Realistic About the UML中列出了UML的相关部分,如果你希望做进一步的了解,可以参阅白皮书The Object Primer -- An Introduction to Techniques for Agile Modeling。

高质量的工作没有人喜欢烂糟糟的工作。做这项工作的人不喜欢,是因为没有成就感;日后负责重构这项工作(因为某些原因)的人不喜欢,是因为它难以理解,难以更新;最终用户不喜欢,是因为它太脆弱,容易出错,也不符合他们的期望。

快速反馈从开始采取行动,到获得行动的反馈,二者之间的时间至关紧要。和其他人一共开发模型,你的想法可以立刻获得反馈,特别是你的工作采用了共享建模技术的时候,例如白板、CRC卡片或即时贴之类的基本建模材料。和你的客户紧密工作,去了解他们的的需求,去分析这些需求,或是去开发满足他们需求的用户界面,这样,你就提供了快速反馈的机会。

软件是你的主要目标 软件开发的主要目标是以有效的方式,制造出满足project stakeholder需要的软件,而不是制造无关的文档,无关的用于管理的artifact,甚至无关的模型。任何一项活动(activity ),如果不符合这项原则,不能有助于目标实现的,都应该受到审核,甚至取消。

轻装前进你建立一个artifact,然后决定要保留它,随着时间的流逝,这些artifact都需要维护。如果你决定保留7个模型,不论何时,一旦有变化发生(新需求的提出,原需求的更新,团队接受了一种新方法,采纳了一项新技术),你就需要考虑变化对这7个模型产生的影响并采取相应的措施。而如果你想要保留的仅是3个模型,很明显,你实现同样的改变要花费的功夫就少多了,你的灵活性就增强了,因为你是在轻装前进。类似的,你的模型越复杂,越详细,发生的改变极可能就越难实现(每个模型都更“沉重”了些,因此维护的负担也就大了)。每次你要决定保留一个模型时,你就要权衡模型载有的信息对团队有多大的好处(所以才需要加强团队之间,团队和project stakeholder之间的沟通)。千万不要小看权衡的严重性。一个人要想过沙漠,他一定会携带地图,帽子,质地优良的鞋子,水壶。如果他带了几百加仑的水,能够想象的到的所有求生工具,一大堆有关沙漠的书籍,他还能过得去沙漠吗?同样的道理,一个开发团队决定要开发并维护一份详细的需求文档,一组详细的分析模型,再加上一组详细的架构模型,以及一组详细的设计模型,那他们很快就会发现,他们大部分的时间不是花在写源代码上,而是花在了更新文档上。

补充原则:

内容比表示更重要一个模型有很多种的表示方法。例如,可以通过在一张纸上放置即时贴的方法来建立一个用户界面规格(基本/低精度原型)。它的表现方式可以是纸上或白板上的草图,可以是使用原型工具或编程工具建立和传统的原型,也可以是包括可视界面和文本描述的正式文档。有一点很有意思,一个模型并不一定就是文档。它们通常作为其它artifact的输入,例如源代码,但不必把它们处理为正式的文档,即使是使用CASE工具建立的复杂的图表,也是一样。要认识到一点,要利用建模的优点,而不要把精力花费在创建和维护文档上。

三人行必有我师你不可能完全精通某项技术,你总是有机会学习新的知识,拓展知识领域。把握住这个机会,和他人一同工作,向他人学习,试试做事的新方式,思考什么该做,什么不该做。技术的变化非常的快,现有的技术(例如Java)以难以置信的速度在改进,新的技术(例如C#和NET)也在有规律的产生。现存开发技术的改进相对会慢一些,但也在持续的改进中--计算机产业属于工业,我们已经掌握了其中的试验基本原理,但我们还在不断的研究,不断的实践,不断的改进我们对它的了解。我们工作在一个变化是家常便饭的产业中,我们必须通过训练、教育、思考、阅读、以及和他人合作,抓住每一个机会学习新的处事之道。

了解你的模型因为你要使用多种模型,你需要了解它们的优缺点,这样才能够有效的使用它们。

了解你的工具软件(例如作图工具、建模工具)有各种各样的特点。如果你打算使用一种建模工具,你就应当了解什么时候适合用它,什么时候不适合用它。

局部调整 你的软件开发方法要能够反映你的环境,这个环境包括组织特征,project stakeholder的特征,项目自身的特征。有可能受其影响的问题包括:你使用的建模技术(也许你的用户坚持要看到一个细节的用户界面,而不是初始草图或基本原型);你使用的工具(可能你没有数字照相机的预算,或是你已经拥有某个CASE工具的license);你遵循的软件过程(你的组织采用XP的开发过程,或是RUP,或是自己的过程)。因此你会调整你的方法,这种调整可能是针对项目的,也可能是针对个人的。例如,有些开发人员倾向于使用某一类工具,有些则不用。有些人在编码上花大力气,基本不做建模,有些则宁可在建模上多投入一些时间。

开放诚实的沟通人们需要能够自由的提出建议,而且人们还应该能够感受到他们是自由的。建议可能是和模型有关的想法:也许是某些人提出某部分新的设计方法,或是某个需求的新的理解;建议还可能是一些坏消息,例如进度延误;或仅仅是简单的工作状况报告。开放诚实的沟通是人们能够更好的决策,因为作为决策基础的信息会更加准确。

利用好人的直觉有时你会感觉到有什么地方出问题了,或是感觉什么地方有不一致的情况,或是某些东西感觉不是很对。其实,这种感觉很有可能就是事实。随着你的软件开发的经验的增加,你的直觉也会变得更敏锐,你的直觉下意识之间告诉你的,很可能就是你工作的关键之处。如果你的直觉告诉你一项需求是没有意义的,那你就不用投入大量的精力和用户讨论这方面的问题了。如果你的直觉告诉你有部分的架构不能满足你的需要,那就需要建立一个快速技术原型来验证你的理论。如果你的直觉告诉设计方法A要比设计方法B好,而且并没有强有力的理由支持你选择某一个方法,那就尽管选择方法A。勇气的价值就已经告诉你,如果未来证实你的直觉是错的,你也有能力来挽救这种情况。你应该有这种自信,这很重要。

软件是一种特别的产品,随着规模和复杂性的进步以及应用领域的扩大逐渐形成了工程。

是计算机中与硬件相互依存的另一部分,包括程序、数据和说明文档。

程序是按照设计要求和性能指标设计的指令序列

数据是程序能够正常操纵信息的数据结构

说明文档是用于开发和维护软件程序的各种图文资料。

软件工程是软件的工程性方法,涵盖了所有生命周期,并提供了一整套工程性方法来指导软件开发。

软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。

包含:1 软件开发技术 2 软件项目管理

软件工程三要素:方法、工具、过程

软件工程应包括的知识(10个):软件需求、软件设计、软件构建、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程工具和方法、软件质量

指计算机软件的开发和维护过程中所遇到了一系列严重问题。

包括分析、设计、实现、测试和维护等。

软件工程目标:正确性、可用性、费用合算

软件工程活动:需求、设计、实现、确认、支持

软件工程原则:适宜开发范型、合适设计方法、高质量工程支持

是为了获得高质量软件所需要完成的一系列步骤。

生命周期模型把生命周期划分成那些阶段以及执行顺序,也称为软件过程模型。

常见模型:瀑布模型、快速原型模型、增量模型、螺旋模型

应用场景: 大型软件项目;需求明确;需求变化少

特点:

优点:

缺点:

应用领域: 客户不熟悉软件、沟通理解困难

优点:

缺点

适用范围: 需求比较明确、架构稳定

优点:

缺点:

适用范围: 大型复杂的系统

优点:

缺点:

五个阶段: 规划、分析、设计、实施、运行维护

Jackson方法的表示: 顺序、选择、重复

自底向上的归纳、自顶向下的分解,尽可能运用人类自然思维方式

要点:

三大重要特征: 封装、继承、多态

基本概念: 对象、类、封装

核心概念: 对象、类

数据库设计需求

1 需求概述

建立完善的数据库结构管理设备的基本参数、运行状态和各种工作计划。

数据库的框架和结构必须根据设备和运行状态而设计,方便提供强大的录入、查询、统计、分析和报表等各种功能操作,较好的反映平台业务的基本情况和运行状况,满足平台的基本要求。

2 外部设计需求

21 标识符和状态

数据库表前缀:根据模块名定义(如用户模块:sys_)

用户名:root

密码:待定

权限:全部

有效时间:开发阶段

说明:系统正式发布后,可能更改数据库用户/密码。

22 使用它的程序

本系统主要利用java作为后端的应用开发工具,使用MySQL作为后台的数据库, Linux或Windows均可作为系统平台。

23 约定

所有命名一定要具有描述性,杜绝一切拼音、或拼音英文混杂的命名方式。

字符集采用 UTF-8,请注意字符的转换。

所有数据表第一个字段都是系统内部使用主键列,自增字段,不可空,名称为:id,确保不把此字段暴露给最终用户。

除特别说明外,所有日期格式都采用date格式。

除特别说明外,所有字段默认都设置不充许为空, 需要设置默认值。

所有普通缩影的命名都是表名加设置缩影的字段名组合,例如用户表User中name字段设置普通所以,则缩影名称命名方式为user_name_index。

24 专门指导

对本系统的开发者、使用这、测试员和维护人员,提出以下参考意见:

在使用数据库时,首先要参考上面的约定内容,做好软件的安装以及表格的建立。

数据库的输入统一采用键盘。对于数据库的使用权限,请参考本系统其他相关文档。

数据库的后台管理员没用等级差异,可根据实际情况添加删除管理员。

25 支持软件

操作系统: Linux / Windows

数据库系统:MySQL

查询浏览工具:Navicat Premium

命令行工具:mysql

注意:mysql 命令行环境下对中文支持不好,可能无法书写带有中文的 SQL 语句。

3 结构设计需求

31 概念结构设计需求

概念数据库的设计是进行具体数据库设计的第一步,概念数据库设计的好坏直接影响到逻辑数据库的设计,影响到整个数据库的好坏。

我们已经得到了系统的数据流程图和数据字典,现在就是要结合数据规范化的理论,用一种模型将用户的数据要求明确地表示出来。

概念数据库的设计应该极易于转换为逻辑数据库模式,又容易被用户所理解。概念数据库设计中最主要的就是采用“实体-关系数据”模型来确定数据库的结构。

数据是表达信息的一种重要的量化符号,是信息存在的一种重要形式。数据模型则是数据特征的一种抽象。它描述的是数据的共性,而不是描述个别的数据。一般来说,数据模型包含两方面内容:

数据的静态特性:主要包括数据的基本结构、数据间的关系和数据之间的相互约束等特性。

数据的动态特性:主要包括对数据进行操作的方法。

在数据库系统设计中,建立反映客观信息的数据模型,是设计中最为重要的,也最基本的步骤之一。

数据模型是连接客观信息世界和数据库系统数据逻辑组织的桥梁,也是数据库设计人员与用户之间进行交流的共同基础。概念数据库中采用的实体-关系模型,与传统的数据模型有所不同。“实体-关系”模型是面向现实世界,而不是面向实现方法的,它主要是用使用方便,因而在数据库系统应用的设计中,得到了广泛应用。“实体-关系”模型可以用来说明数据库中实体的等级和属性。

以下是实体-关系模型中的重要标识:

在数据库中存在的实体;

实体的属性;

实体之间的关系;

32 逻辑结构设计需求

物理结构设计需求

1)定义数据库、表及字段的命名规范:

数据库、表及字段的命名要遵守可读性原则。

数据库、表及字段的命名要遵守表意性原则。

数据库、表及字段的命名要遵守长名原则。

2)选择合适的存储引擎:

3)为表中的字段选择合适的数据类型。

4)建立数据库结构

4 运用设计需求

41 表名的命名规范

表名以英文单词、单词缩写、简写、下划线构成,总长度要求小于30位。

42 表字段的命名规范

字段名以英文单词、单词缩写、简写、下划线构成,总长度要求不超过30位。

字段名以名词或名词短语,字段采用单数形式。若表名由多个单词组成,则取各个单词的缩写组成,单词缩写间使用下划线作为分隔。

若某个字段是引用某个表的外键,则字段名应尽量与源表的字段名保持一致,一面混淆。

5 安全保密设计需求

51 防止用户直接操作数据库的方法

通过把关键应用服务器和数据库服务器进行分离,防止用户对数据库服务器的直接操作,保证数据库安全。

52 应用系统的用户口令进行加密

在软件系统中,对于数据的保护、业务操作的许可是通过识别用户身份和权限来完成的。用户口令相比较,相同的话系统将该用户的操作权限分配给用户,用户再根据所分配的权限对系统进行操作。

由以上过程可知,用户口令在传输过程中容易被窃取泄漏,另外如果数据库被非法进入则其中保存的口令能够被非法查看。因此,在传输过程中和数据库中的口令记录字段不应使用明文传递和保存,应该在口令被传递前对其明文口令使用有效的主流技术,对传输数据进行加密部分描述的加密算法进行加密,在加密后传输到系统。系统将用户提交的经过加密的口令数据保存的加密口令进行比较,相一致则进行后续操作。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 三维建模的关键技术

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情