墓石设计系统渲染功能的ObjectARX实现-本科毕业论文_第1页
墓石设计系统渲染功能的ObjectARX实现-本科毕业论文_第2页
墓石设计系统渲染功能的ObjectARX实现-本科毕业论文_第3页
墓石设计系统渲染功能的ObjectARX实现-本科毕业论文_第4页
墓石设计系统渲染功能的ObjectARX实现-本科毕业论文_第5页
免费预览已结束,剩余29页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

厦门大学软件学院学士学位论文本科毕业论文(科研训练、毕业设计)题 目:墓石设计系统渲染功能的ObjectARX实现姓 名:学 院:软件学院系: /专 业:软件工程年 级:学 号:指导教师(校内): 职称:教授指导教师(校外): 职称:2005年 05月 29 日墓石设计系统渲染功能的ObjectARX实现摘要 近些年来,随着墓石设计行业的快速发展,墓石制品公司间争夺客户的竞争越来越激烈。对于不懂图纸设计的客户来讲,一张色彩斑斓的设计效果图往往比一堆纵横交错的黑线来得更直观和真实。而要渲染出一张美仑美奂的效果图,往往要耗费设计人员大量宝贵的时间。在此应用背景下,本文利用VC+和Autodesk公司提供的CAD二次开发工具ObjectARX,针对渲染图片库管理和渲染要素的参数化设定两个方面进行设计,以达到节省设计人员工作时间的目的。关键字 墓石设计系统 AutoCAD ObjectARX Render API 渲染Programming Render Functions For Stone Design Using ObjectARXAbstract As Stone industry develops rapidly in recent years,stone product companies try their best to shoot customers in fierce competition. Compared to a mass of black curves,a colorful picture is more attractive to customers.But it takes designers a lot of time to render a model into a shining picture.The paper,which is based on VC+ and ObjectARX progrmme language,chiefly researchs how to manage databases of render materials and how to conveniently configure render preferences.Keywords Stone CAD Design System AutoCAD ObjectARX Render API Render墓石设计系统渲染功能的ObjectARX实现目录第一章 引 言5第一节 什么是墓石设计系统5第二节 什么是墓石渲染6第三节 本文主要内容7第二章 系统总体设计8第一节 系统功能模块图和需求分析8第二节 开发工具(Object ARX)介绍11第三节 AutoCAD数据库介绍11第四节 Render API库结构解析12第三章 系统详细设计18第一节 三类文本库的设计18第二节 数据库(access)设计20第三节 各功能模块详细设计20第四章 系统运行结果演示26结束语和感想31致谢语32参考文献33第一章 引言第一节 什么是墓石设计系统墓石指的用石头建成的陵墓。要建成漂亮的陵墓,不仅要在石材加工厂里把粗糙、不规则的石头磨成方圆有形的石种,还要在设计室里费尽心思地进行造型设计,后一种工作就叫做墓石设计。在墓石行业发展的初期,设计者采用手工制图,主要依赖的工具是纸和笔,画过的局部造型往往没有可重用性,因此设计过程中存在许多重复劳动。随着计算机技术的发展,石材设计行业引进了计算机辅助设计( Computer Aided Design,简称CAD )技术,从此进入了无纸化设计时代。计算机辅助设计( Computer Aided Design,简称CAD )技术,是指设计人员(或用户在产品或工程设计过程中借助于CAD系统(硬件、软件)的帮助来完成设计任务,并达到提高设计质量和缩短设计周期的目的的技术。而在所有的CAD软件系统中,由美国Autodesk公司开发的AutoCAD是目前国内外最广泛使用的计算机辅助绘图和设计软件包。本文所进行的二次开发也正是以AutoCAD为平台的。在墓石设计中,固然包含着需要由人来完成的创造性的工作,但是同时也包含了很多重复性的工作,如大量的计算、绘图等工作。在CAD技术出现以前,工程设计的全过程都是由人来完成的.而计算机具有运算速度快、存储数据多、精确度高、有记忆和逻辑判断的能力、可处理图形等特点,这些重复性的工作可以由计算机更快、更好地去完成,这就是把CAD技术应用在墓石设计领域的意义所在。总结起来CAD技术在墓石设计领域具有如下优势: 提高效率,采用CAD技术后的结构设计和工程制图的速度大大提高,对于复杂构件和工程细部的设计实现无级缩放,分级设计。 有利于成组设计,可以广泛应用标准图和标准设计。 修改设计方便,只需对己存储的图纸做局部修改就可成为新图。 易于实现产品数据的标准化。设计单位的产品数据包括设计、图文、技术文档等,标准化,易于设计单位积累产品资源,易于继承历史的知识财富,方便产品数据的存储、传递、转换和理解。 降低设计成本,提高设计质量。目前,在墓石设计业中,CAD技术得到了广泛的应用,CAD技术极大的提高了设计效率和设计精度,减少了设计过程中的差错,并且显著的缩短了设计周期和降低了设计成本。但是,新的东西往往会带来新的问题。CAD技术的出现意味着设计人员不仅要懂得设计,还要懂得计算机相关操作知识,而不再是笔一挥就能在图纸上看到所想的东西。再者,AutoCAD并不是针对单个设计行业开发的,所以很多功能都无法满足设计人员工作的需要。比如AutoCAD提供了一个渲染库,但却没有提供分类存储,无法进行方便高效的图片库管理。以上二点促使了CAD二次开发的兴起,开始出现了为墓石行业量身定做的CAD软件,即本文所称的墓石设计系统。经过二次设计的CAD软件不需要软件操作员有电脑与CAD的专业操作知识,就可以快速、简便地制成设计图纸,把设计人员的构思真实、完美地表现出来。对于完成后的图纸,系统将自动完成报价与原价管理等工作。第二节 什么是墓石渲染 用CAD软件制图,输出的一堆具有几何意义的线条,并不具有直接的视觉冲击力。比如画一块长方体的墓碑,显示在屏幕上的就是一个由十二条直线构成的长方体,很难让人们把它和现实生活中见到的有颜色、有质感的墓碑联系起来。对于非专业设计人员来讲,一张色彩斑斓设计效果图往往比一堆纵横交错的黑线来得更直观和真实。所以,当设计者设计完墓石造型后,往往要担当起“画家”的角色,把画出来的每一块石头贴附上与石种相配的图片,并在墓石周围画上相宜的景物。这个工作过程实际上就是模拟现实场景对设计图进行渲染。渲染完成后,就可以通过网络传输给客户观看了,如图1所示。图1第三节 本文主要内容渲染工作并不是一件简单的事情,要模拟出真实的场景,不仅要能模拟出石料品种、石料花纹疏密、石料加工外理方式(磨光面或者粗糙面)等内部属性,还要能模拟出太阳光照、花草树木人等外部属性。而要模拟出这些属性,就要设定大量不同的参数。所以AutoCAD软件提供的渲染功能不可避免地具有参数多,设定繁琐,渲染效果不好的缺点。本文针对墓石设计过程中的渲染工作进行分析和设计,提取墓石渲染过程中主要的工作流程,对以下这两个方面进行了设计:第一,通过建立石料图片库、外部景观图片库、背景图片库板、地板料图片库、灯光库这五大文本数据库,对渲染图片进行方便高效的管理;第二,把一部分渲染参数固定化,提供精简了参数的MFC界面,用于设定各种渲染配置,从而达到节省设计人员工作时间的目的。第二章 系统总体设计第一节 系统功能模块图和需求分析图2 系统功能模块图如图2所示。以下,将给出各个模块的具体需求,每一点描述一个子模块。1.部材石料选择部材石料指的是要在石头上贴附的材质图片。选择图片时,要从石料库中选择对应的石料名称。所有的石头分为三大类:墓碑,周边,外栅。所有的墓碑用一种材质来渲染,周边、外珊也各用一种材质渲染。根据需要,也可以对个别的石头选择特殊的材质来渲染。同时为了扩充石料种类库,要求提供石料种类的删除,添加,修改功能。另外,要求可以记录下最近使用的材质,和上一次渲染时三大类分别用的是什么材质。2.渲染精度设定 设定渲染精度,精度高则图片清晰度高,精度低则清晰度低。如果把渲染效果选择为粗糙面,则材质的效果偏暗淡,如果选择为光面,则材质的效果偏亮。要求记住上次渲染选定的精度和效果。3.灯光设定模拟外部灯光,使效果图中出现阴影等效果,增加效果图真实感。主要设定如下: 周围光设定 太阳光设定 环境光设定 自定义模式:手动设定外部灯光,并提供灯光效果记忆功能,即可见本次的灯光设定命名保存,下次需要时调入使用。 固定组合模式:提供多种常用各种光源的组合模式。4.背景设定选择渲染时要用的背景图片,使场景更真实,比如一片天空或一个陵园的景象等。同时为了扩充背景库,要求提供背景种类的删除,添加,修改功能。5.地板料铺设设定渲染所需的内部铺设石料,实际上是铺设地板料,同时提供地板料的添加,删除,修改功能。6.外部景观设定外部景观,是指树,人,佛像等为了模拟实际效果而加入的图片。在选择外部景观时可改变高度,修改其相关属性。系统要求提供外部景观的添加,删除,修改功能。第二节 开发工具(Object ARX)介绍第一小节 ObjectARX简介第一章中介绍的AutoCAD是目前在微机中应用最为广泛的CAD系统,这不仅是因为它功能的强大,更因为其良好的开放性。Autodesk公司己经提供了四种二次开发手段: AutoLISP, ADS,ActiveX/VBA(Visual Basic for Application)及ARX。AutoLISP是一种解释型语言,只能简单地为AutoCAD添加新的命令。ADS应用程序是用C语言编写且编译过的,作为外部函数能通过AutoLISP解释器加载并执行。ActiveX/VBA是通过ActiveX技术向开发人员提供的在第三方开发环境下进行AutoCAD二次开发的应用集,该应用集简单易用、功能强大。ARX(Acad Runtime eXtend)应用程序是在VC+环境下编写且编译过的动态连接库,与AutoCAD共享内存空间,是在AutoCAD中运行的高效的二次开发应用程序。ARX是Autodesk公司推出的最强大的二次开发工具,它不但支持面向对象的程序设计,而且提供了许多应用程序接口(如ODBC)。具体而言,ARX具有以下显著特征: 功能强劲。ARX充分利用AutoCAD的开放式体系结构,可以监控和处理AutoCAD各种事件,可以定义AutoCAD命令(包括可透明使用的命令),可以定义数据库对象,等等。可以说,ARX是在兼具了Autolisp良好交互性和ADS良好综合性的基础上,提高了应用程序的智能化程度。 面向对象。ARX继承了标准C+面向对象的特性,提供了访问和控制AutoCAD及处理CAD常见事务的六个主要类库。它不但可以像标准C+一样自定义或由派生得到新类,而且允许定义参与运行时类型识别的新类。 运行性能好。由于每个ARX应用都是一个动态链接库,它与AutoCAD系统共享同一内存地址空间,所以ARX应用能够直接访问AutoCAD的各种内存对象,既节省了内存开销,又提高了应用程序的运行速度。ARX上述特性无疑使它成为集成CAD图形软件和标准数据库的编程接口中最佳可选的开发工具。ARX技术将是CAD软件开发的一个方向。第二小节 ARX类库ARX类库集是用C+编译的类的集合。利用ARX进行开发,必须通过ARX类库集来访问AutoCAD数据库。ObjectARX环境由以下类库和函数库构成:1.AcRx类库AcRx库提供了系统级的类,用于动态连接库的初试化和连接、运行时类的注册、识别。这个库的基类是AcRcObject,它提供了以下工具: 对象运行时类的识别和派生分析。 在运行时向己有的类附加新的协议。 对象的相等和关系测试。 对象拷贝。2.AcEd类库AcEd库提供用于定义和注册新的AutoCAD命令的类,采用与AutoCAD定义内部命令一样的方式。定义的新命令成为“本地命令”,和AutoCAD内部命令一样放在同一个内部结构(AcEdConunandstack)中。该库中有一个重要的类AcEditorReactor,它监视着AutoCAD编辑器的状态,并在指定事件发生时通知应用程序,如一个命令的开始、结束或取消。3.AcDb类库AcDb类库提供组成AutoCAD数据库的类。这个数据库存储了组成AutoCAD图的所有图形对象(称为实体)的所有信息,还存储了非图形对象(例如图层、线型、字型等)的信息。利用AcDb库,可以查询、处理已有的AutoCAD实体和对象的实例,也可以创建新的实体和对象的实例。4.AcGi类库AcGi库提供用于绘制AutoCAD实体的图形界面。这个库由AcDbEntity的成员函数worldDraw()、viewportDraw() 和saveas ()使用,这些函数是标准实体函数的一部分。所有实体类必须定义worldDraw()函数。AcGiWorldDraw()对象提供一个应用程序编程界面(API)通过它AcDbEntity worldDraw()可以在所有视窗中同步处理这个对象的图形表示。同样,AcDbEntity对象也提供API界面AcDbEntity: viewportDraw(),可以在单个视窗中对实体进行特别处理。5.AcGe类库AcGe库由AcDb库使用,并提供使用工具类如矢量、点、矩阵等,用来提供通用的2D和3D几何操作。它也提供了简单的几何对象,如点、线、面等。6.ADS库ADS库是一个C函数库,一般ARX应用程序通过ADS库函数完成诸如实体选择、选择集操作、数据获取等任务。ADS库是开发时充分利用AutoCAD界面的很好工具。第三节 AutoCAD数据库介绍在AutoCAD平台上开发应用程序,就必须要操作AutoCAD的数据库(AutoCAD DataBase,简称AcDb。AutoCAD数据库是按一定结构组织的AutoCAD图形全部有关数据的集合。存储在AutoCAD数据库中的数据称为数据库对象(AcDbObject),它是一幅AutoCAD图形的基本组成部分,包括可见几何实体对象和不可见的非几何对象等。几何实体对象在图形中具有图形显示,如line, circle, arc, text, solid, region等。非几何对象的例子如图层、线型、文字样式等。符号表(BlockTable)和有名对象字典(Named object Dictionary)是AutoCAD数据库的关键组成部分,由于它们又包含了其它对象,因而称为容器对象(Container Object)。容器对象的作用是组织和管理数据库对象。第四节 Render API库结构解析第一小节 Render API简介 Autodesk公司提供的AutoCAD Render API是一个专门为AutoCAD渲染功能进行二次开发的应用开发包。它的设计包括了两个部分:动态链接库acRender.arx和编程库avlib.lib。在程序实现过程中,acRender.arx负责与AutoCAD进行通信,而avlib.lib则包含了与acRender.arx通信的各种编程接口。第二小节 Render API结构模式 Render API函数库提供了20个函数,每个函数都实现一个特定的功能,如灯光设定。与这20个函数配套的是20个不同的结构体,这些结构体有一个共同的字段mode:mode 表示要调用本函数的哪个具体功能,比如灯光设定有多种模式:灯光删除,灯光添加,灯光编辑等,mode 取值AvLightDelete,就表示调用删除灯光的功能。以下有一段avlib.h函数库示例(以函数av_light为例)。av_light()GENERALThe av_light command is used to create, modify, and query lights and establish North in the drawingSYNOPSIS#include avlib.hAvErrorCode av_light(AvLightParam *p);typedef enum AvLightIntensity = 0x000001, AvLightColor = 0x000002, AvLightName = 0x000004, AvLightFrom = 0x000008, AvLightTo = 0x000010, AvLightShadowmap = 0x000020, AvLightHotspot = 0x000040, AvLightFalloff = 0x000080, AvLightShadowsoft = 0x000100, AvLightShadowObject = 0x000200, AvLightShadows = 0x000400, AvLightMonth = 0x000800, AvLightDay = 0x001000, AvLightHour = 0x002000, AvLightMinute = 0x004000, AvLightDaylight = 0x008000, AvLightLatitude = 0x010000, AvLightLongitude = 0x020000, AvLightTimezone = 0x040000, AvLightAttenuation = 0x080000, AvLightNewName = 0x100000, AvLightNorthUCS = 0x200000, AvLightNRotation = 0x400000, AvLightTypeFlag = 0x800000 AvLightFlags;typedef enum AvLightNewDistant = 0, AvLightNewPoint, AvLightNewSpot, AvLightAmbient, AvLightAmbientList, AvLightModify, AvLightDelete, AvLightRename, AvLightNorthLocator, AvLightNorthLocatorList, AvLightList, AvLightListAll, AvLightUI AvLightMode;typedef enum AvAttenuationNone, AvAttenuationInverse, AvAttenuationInverseSquare AvAttenType;typedef enum AvLightDistant, AvLightPoint, AvLightSpot AvLightType;typedef struct AvLightMode mode; double intensity; AvColor color; char *name; ads_point from; ads_point to; int shadowmapSize; double hotspot; double falloff; double shadowSoftness; AvBoolean shadows; ads_name shadowObjects; int month; int day; int hour; int minute; AvBoolean daylight; double latitude; double longitude; int timezone; AvAttenType attenuation; char *newName; char *northUCS; double northRotation; AvLightType type; struct resbuf *stringList; unsigned long flags; AvLightParam;DESCRIPTIONav_light() has 13 modes:(篇幅所限,本文只列举其中二种模式)AvLightNewDistantCreate a new distant light. If any of the sun angle parameters are supplied (month, day, hour, minute, daylight, latitude, longitude, timezone) then calculate the light location using the calculated sun angle.AvLightParam:ParameterReqdValuesDefaultDescriptionnameYes8 characterNoneLight ensityNo0.0 . 1.01.0Light intensity.colorNoAvColor(1.0,1.0,1.0)Light color.fromNoads_pointCurrent look-fromLight location.toNoads_pointCurrent look-atLight target.shadowmap-sizeNo0 . 40960 (no shadow map)Shadow map dimension in pixels.shadow-softnessNo1.0 . 10.01.0shadowNoAvBooleanOFFShadow-casing toggle.shadowobjectsNoads_nameNoneSelection set of objects which bound shadow maps.monthNo1 . 129dayNo1 . 3121hourNo0 . 2415minuteNo0 . 590daylightNoAvBooleanOFFDaylight savings toggle.latitudeNo-90.0 . 90.037.62Latitude of San FranciscolongitudeNo-180.0 . 180.0122.37Longitude of San FranciscotimezoneNo-12 . 128 (PST)Offset, in hours, from GMT AvLightUIInvoke the Lights dialog.第三小节 渲染函数的使用 以第二小节中的函数为例,要新建一个远灯光时,首先声明一个结构体AvLightParam的实例lightParam,设定模式为AvLightNewDistant:lightParam.mode = AvLightNewDistant,再向lightParam填充各项数据:灯光名称,强度,颜色,角度,阴影选择,是否日照等等( Reqd一栏中为yes的是必须填充的数据项,no的是选择填充的数据项 )。然后再调用灯光设定函数av_light( &lightParam )。这样就在AutoCAD中新建成了一个灯光。此外,也可以通过AvLightUI模式直接调用系统设定灯光的对话框。第三章 系统详细设计第一节 三类文本库的设计1.石料库、地板料库、背景库 利用AutoCAD提供的材质库Render material libraries ( .mli 文件 ),对石料库和地板料库进行管理。.mli文件类似于一个access数据库,里面存放各种石料的名称、对应图片名称、渲染比例、反射系数、粗糙系数等材质属性。但由于.mli文本一般记录的是材质的图片名称,无法记录材质的中文名称,所以要利用文本操作从另一文本文件Render pattern ( .pat 文件 )中读出材质名称。为此设计一个读取文本文件的类CText。.pat文本文件示例:DATAMT_JP01=大理石MT_JP02=中国山崎MT_JP03=黑石MT_JP04=白石2.灯光库 把灯光各项参数配置记录在文本文件.lit中,记录格式如下:datanum=1ambientintensity=0.3color=1,1,11name=SIGHTtype=Dintensity=0.2color=1 1 1from=2061.92 2060.21 0.300767to=2061.92 2061.92 0shadowmapsize=12800shadowsoftness=3shadow=OFFtimezone=9以上这段文本表示本灯光由一种光源组成,周围光强度为0.3,周围光颜色为( 1,1,1 )(RGB颜色编码),光源名称为SIGHT,类型为远光源,强度为0.2,颜色为( 1,1,1 )(RGB颜色编码),光源点坐标为(2061.92,2060.21,0.300767),目标照射点为( 2061.92,2061.92,0 )。剩下的参数表示灯光阴影和时区设定。灯光文本以灯光的名称命名,所有的灯光文本放在同一文件夹lights下。当启用灯光库时,利用CFileFind类读取lights下所有灯光文本名称,显示给用户选择,当选定了一种灯光后,用CText类读取灯光文本中数据,从而生成一个新的灯光。3.外部景观库 利用AutoCAD提供的外部景观库landscape library information ( .lli 文件 ),对外部景观进行管理。AutoCAD使用的景物需要两个图像文件来完成,一个是外部景观图像文件,另一个则是显示景物的蒙板(AutoCAD称为不透明贴图文件),所以.lli文本主要用于记录各种景观的这两种图片的名称。.lli文本文件示例:(最后一个字段表示景观的类别)# AutoVision Landscape library# Entries are of the form:# Landscape Object Name# Texture Map# Opacity Map# Alignment (0 = camera aligned one face, 1 = one face, 2 = crossing faces, 3 = camera aligned crossing faces)Bush #18bush02l.tga8bush02o.tga0第二节 数据库(access)设计 对于与具体设计工程有关,或与使用频率有关的数据,采用access数据库进行记录,设计二张表,一张表表名为projectini,记录本工程上一次渲染所采用的三大材质、效果(粗面或光泽)和渲染精度。分别用ws,ms,zb, wss,mss,zbs,precision七个字段来存储。一张表表名为renderMat,记录最近使用过的材质名称,设计一个字段count记录使用频率。查询最近使用的二十种材质时,按count字段降序排列取出前二十列即可。第三节 各功能模块详细设计1.石料录入模块名称石料录入功能描述扩充石料种类库,提供石料种类的删除,添加功能。如增添一种石料,或删除一种石料。接口与属性本部分用到材质库shiliao.mli.数据结构与算法1.实现添加功能: 由页面获得石料名称和渲染图片的本机路径,由av_matlib函数的AvRmatNew模式,传入材质信息,新建成一个新的材质,而后由av_matlib函数的AvMatlibExport模式把新建的材质录入材质库shiliao.mli中.2.实现删除功能: 由页面获得石料名称,遍历shiliao.mli材质库,查找到该名称对应的材质信息, 由av_matlib函数的AvMatlibRemove模式把材质信息删除.补充说明2.地板料录入模块名称渲染地板料录入功能描述扩充地板料种类库,提供地板料种类的删除,添加功能。如增添一种地板料,或删除一种地板料。接口与属性本部分用到材质库floor.mli.数据结构与算法1.实现添加功能: 由页面获得地板料名称和渲染图片的本机路径,由av_matlib函数的AvRmatNew模式,传入材质信息,新建成一个新的材质,而后由av_rmat函数的AvMatlibExport模式把新建的材质录入材质库floor.mli中.2.实现删除功能: 由页面获得石料名称,遍历floor.mli材质库,查找到该名称对应的材质信息, 由av_matlib函数的AvMatlibRemove模式把材质信息删除.补充说明3.景观录入模块名称景观录入功能描述对经过用户编辑修改的景观以编辑后的高度等度量存入景观库中接口与属性本部分用到材质库render.lli数据结构与算法主要涉及avlib.h中的av_lsobj函数a.实现添加功能: 由页面获得景观名称,由av_lsobj函数的AvLsLibAdd模式,传入景观信息,新建成一个景观,并把新建的景观录入景观库render.lli.b.实现删除功能: 由页面获得景观名称,遍历render.lli景观库,查找到该名称对应的景观信息, 由av_lsobj函数的AvLsLibDelete模式把材质信息删除.补充说明4.灯光录入与删除模块名称灯光录入功能描述对经过用户设定的灯光和视角以场景的形式存入场景库中接口与属性所有灯光资料放在lights下,以.lit文件格式存储。用以CText接口类来进行读取.lit文件的格式如下:datanum=1/灯光的个数ambientintensity=0.3/周围光的强度color=1,1,1/周围光的颜色1/第一个灯光name=SUN/灯光的名称type=D/灯光的种类,D为远光源,P为点光源,S为聚光源intensity=1.0/灯光的强度color=1.0 1.0 1.0/灯光的颜色from=0 0 0/光源的出发点to=-0.26 0.2 -0.95/光源的目标点shadowmapsize=0/灯光的阴影范围shadowsoftness=0.0/灯光的阴影强度shadow=on/有阴影timezone=1/光照的时区数据结构与算法本部分调用命令tlight,实现编码的文件为bdpqLightLib.cpp中lightLib( ).实现功能的过程如下:1. 调用主对话框为LightLibDlg,在对话框初始化时,把已有的灯光组合名称从文件夹lights中提取出来,放在listbox中。2. 点击”New light”,从用户处获得新灯光组合的名称。在lights文件夹下创建一个以此名称命名的空文本.lit,向文本写入当前工作区所有的灯光设置参数。写入过程如下:2.1调用av_ligh函数t的AvLightListAll模式,得到 the names of all lights in the drawing。2.2调用av_ligh函数的AvLightListg 一个个查询灯光的各项设置参数,通过CText类的write()方法写入文本中。3.选中某一灯光组合的名称,点击” Delete From lib”,则从lights文件夹中删除掉以该名称命名的lit文件。.补充说明5.渲染石料选择模块名称渲染石料选择功能描述选择渲染外珊,碑石,周边的石料接口与属性与图层分类管理紧密相关,图层如何命名,此处就如何以该规则寻找附材质对象.如外珊层的图层名为_ws结尾,则本drawing中所有此类图层内的实体都用本部分选中的外珊材质进行渲染.数据结构与算法主要涉及avlib.h中的av_rmat函数1. 由用户从shiliao.mli材质库中分别选定用于渲染外珊,碑石,周边的石料.然后遍历本drawing的CAD后台数据库,找到图层名以_ws结尾,且为haodablk,且未被单独附了材质的实体,用av_rmat函数的AvRmatAttach模式,附外珊材质,以此类推,以_ms结尾的附碑石指定材质,以_zb结尾的附周边材质.2. 调用av_rmat函数的AvRprefSet模式把渲染参数设置成AvRprefRenderAvis,再调用av_render的AvRender模式渲染成图。3. 渲染完成后调用av_rmat函数的AvRmatDetach模式把在本命令过程中附过材质的实体去除材质附着,以便与用局部部材变更附着材质的实体相区别。补充说明6.地板料选择模块名称地板料选择功能描述选择墓地与地面接触部分的铺设材料接口与属性数据结构与算法主要涉及avlib.h中的av_rmat函数由用户从floor.mli材质库中选定用于渲染地板的石料.在选定要铺设地板料的范围内生成一个很薄的长方体,然后对这个长方体附地板料材质(用av_rmat函数的AvRmatAttach)补充说明7.景观选择模块名称景观选择功能描述选择要插入的外部景观(人或树)接口与属性数据结构与算法主要涉及avlib.h中的av_lsobj函数由用户从render.lli材质库中选定一个景观,遍历景观库,查找到相关信息,用av_lsobj函数的AvLsNew模式引入本CAD的后台数据库,然后可以据AvLsEdit模式改变它的大小补充说明8.灯光选择模块名称灯光选择功能描述设置当前灯光为预置的灯光组合接口与属性所有灯光资料放在RENDERLDIR下,以.lit文件格式存储。用CText类接口类来进行读取.lit文件的格式如3.3.4中所示。数据结构与算法本部分调用命令tlight,实现编码的文件为bdpqLightLib.cpp中lightLib( )。实现功能的过程如下:1.调用主对话框为LightLibDlg,在对话框初始化时,把已有的灯光组合名称从文件夹lights中提取出来,放在listbox中。2. 选中某一灯光组合的名称,点击”ok”,在lights文件夹下搜索以此名称命名的.lit文本,用CText类的readtxt(),readInt() 方法从文本读入所有的灯光设置参数,设置为当前灯光,具体实现如下:2.1调用av_ligh函数的AvLightListAll模式,得到 the names of all lights in the drawing。调用av_ligh函数的AvLightDelete模式逐个删除。2.2读出.lit文件的各灯光的设置,调用av_ligh函数的AvLightNewDistant, AvLightNewSpot

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论