- 1.63 MB
- 2022-06-17 14:58:37 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
天津纺织工学院硕士学位论文三维编织预制件光照模型的研究姓名:李仁璞申请学位级别:硕士专业:计算机应用技术指导教师:韩其睿19991201
摘要要妒JJc,3l£8本文洋述了课题“三维编织预制件光照模型的研究”的研究过程。通过使用SUN工作站XGL函数库,本文建立了适合于三维编织预制件的光照模型,并最终生成了预制件的较为逼真的真实感图形。整个课题进程大体可以分为三大部分:工作平台的熟悉和运用;三维编织预制件光照模型的建立;预制件立体显示系统的完善。课题使用了SunSPARCStarion20图形工作站,该工作站在CPU系统结构上采用了RISC技术,在工作站的系统构成上采用了主从式的Sbus总线结构,并自带ZXl二维、三维图形加速卡,具有强大的科学计算功能和丰富的图形处理功能。XGL是包含一个二维和三维图形函数的软件库。XGL库支持包含GKS和PHIGS在内的许多图形应用程序接口,需要时可自动使用硬件图形加速,特有的DGA显示技术也加速了XGL应用程序的运行速度。XGL函数库采用C/C++编写,支持面向对象编程。根据图形处理的特点,定义了特有的数据类型和结构,使其提供的图形函数结构更清晰,功能更强大。建立一个物体的光照模型是生成物体真实感图形的关键步骤。真实感图形的显示需要经过几何造型、投影变换、建立光照模型以及选择适当的明暗处理方法等几个步骤。通过对预制件的表面结构的全面分析,根据其表面特点,本文将预制件的单元体表面用四边形网格来近似代替。对表面的内部单元体和边界单元体进行了分类和相应处理,建立了预制件的合理的数据结构。特别是采用双抛物线拟合方法来求得网格点坐标,既简便易行,又收到了良好的效果。结合XGL函数库所提供的光照功能,本文为预制件设置了适宜的光照条件,建立起符合预制件性质的光照模型,并最终生成了预制件的初步(单面)的真实感图形。
摘要针对预制件在立体显示时出现的问题而进行的“显示系统的完善”部分对整个课题具有重要的意义。通过先测定相邻边界单元的兆有空间边界,再以此边界重新建立两个边界单元的多边形网格数据结构,对原有的近似处理方法进行了有效的改进,使最后生成的图形真实感水平达到了一个新的高度,显示的预制件的空间感增强,图形更加逼真、自然。预制件立体显示系统的完成对整个三维编织复合材料计算机辅助设计的发展具有重要的推动作用。通过光照处理,生成具有高度真实感的图形,不仅可以加快设计进程、缩短设计周期,而且对于优化工艺参数、提高设计质量,从而达到最佳设计效果具有十分重要的作用。同时,本课题的进行也带动了XGL函数库在SUN工作站j二的开发和应用。-一关键词:三维编织预制件,光照模型,真实感图形,XGL函数库,SUN工作站
ABSTltACI"ABSTRACTThispaperdescribesdetailedlytheprocessofthestudyoftheproject”thestudyoflightingmodelof3-Dbraidedpreformtl,UsingtheXGLfunctionlibraryonSUNworkstation,thispaperestablishesalightingmodelsuitablefor3-Dbraidedprefoml,andproducesthepicturesquegraphicsofpreformsintheend.Thewholeprocessmaybedividedintothreeparts:thelearningandexerciseofworkingenvironment;theestablishmentoflightingmodelof3-Dbraidedpreform;theperfectionofpreformdisplaysystem.TheprojectusesSunSPARCWorkstation20.ThiskindofworkstationadoptsRISCtechnologyinCPUandusesSBusbusstructure,andithasitsown2-Dand3-DhardwaregraphicsacceleratoLsothisworkstationpossessesstrongsciencecomputationabilityandbroadgraphicsprocessingfunction.XGLisasoftwarelibraryoftwo—dimensionalandthree—dimensionalgraphicsfunctions.XGLfunctionlibraryissuitablefursupportinganumberofgraphicsapplicationprogramminginterfaces,includingGKSandPHIGS.HardwaregraphicsaccelerationOccursautomaticallywithoutexplicitlyrequestingitfromwithinanXGLprogram.XGLalsoUSeSSun。sspeciNDirectGraphicsAccess(DGA)displaytechnologytoaccelerateapplicationsXGLlibraryisprogrammedwithC/C++language,supportsObject-OrientedProgramming(OOP).Accordingtocharacteristicsofgraphicsprocessing,XGLdefinespecialdatatypeandstructure,soitsgraphicsfuncfionshaveclearerstructureandstrongerfunctions.Toestablishalightingmodelforanobjectisanimportantphraseintheprocessofproducingitspicturesquegraphics.Thedisplayofa
ABSTRACTpicturesquegraphicsneedsseveralprocedures,includinggeometrymodeling,projectiontransformation,establishinglightingmodelandchoosingpropershadingtechnique,etc.Throughafullanalysisforthesurfacestructureofpreform,accordingtothecharacteristicofthesurface,thispaperusesquadrilateralmeshtoexpresstheunitsurfaceofpreform.Inthispaper,internalunitsandborderlineunitsofthestirfaceareclassifiedandtreatedseparately,datastructureofpreformsurfaceareestablishedreasonably.Especially,thispaperadoptanewmethod-’’doubleparabolaapproximating”toobtainthespacepositionofcontrolpointofquadrilateralmesh,whichissimpleandconvenient,andreceivedbettereffeCt.WiththehelpoflightingfunctionsprovidedbyXGLlibrary,thispapersetsasuitablelightingenvironmentforpreform,establishesalightingmodelappropriatedtothecharacteristicofpreform,atlast,producesapreliminary(single·side)picturesquegraphicsofpreform.Thefinalsection”theperfectionforperformthree—dimensionaldisplaysystem”hasimportantsignificanceforthewholeproject.Towardstheproblemsintheperformthree—dimensionaldisplay,thissectionmakesefficientimprovement.Inthissection,thejointspaceborderisfirstlydetermined,thenthedatastructureoftwoconjointborderlineunitsareestablishedonthebasisofthejointspaceborder.Thissectionmakesthefinalpicturesquegraphicsarriveahigherlevel,inwhichpreformaremorethree-dimensional,graphicsaremorelifelikeandmorenaturalThecompletionofpreform3-DdisplaysystemgivesagreatimpulsetOthedevelopmentof3-Dbraidedcompositescomputeraideddesign(CAD).Toproducepicturesquegraphicsofhighqualitybymeansoflightingnotonlyspeedupdesignprocessandshortendesignperiod,buttakeimportantrolesinoptimizingtechnicalparameters,2
ABSTRACTimprovingdesignqualityandthenarrivingatthebestdesigneffects.Also,thisprojectstartsuptheexploitationandapplicationofXGLfunctionlibraryonSUNworkstation.Keywords:3-Dbraidedpreform,lightingmodel,picturesquegraphics,XGLfunctionlibrary,SUNworkstation3
第一章绪论人类发展的历史和材料发展的历史息息相关,人类历史上的各方面的进步与新材料的创造、出现和应用是紧密相连的。复合材料由多种材料复合而成,既克服了单一材料的局限性,又能产生许多优异的性能。现代科学技术的发展己进入一个各种材料综合使用的新阶段。人们预测21世纪将是复合材料大发展的时代。三维编织复合材料作为复合材料的一种,具有比强度大、比刚度高、抗疲劳性好、减震、耐高温等特点。近年来己广泛应用于航空、航天、建筑、能源、交通、生物医学和体育运动等领域,具有良好的发展前景。计算机辅助设计(CAD)技术是当代最杰出的工程技术成就之一,它是伴随着计算机技术和计算机图形学技术的发展而迅速成长起来的。CAD技术已成为现代工业中必不可少的主要技术手段,其发展和应用水平成为衡量一个国家科技现代化和工业现代化水平的重要标志之一。在三维编织复合材料的设计和制造过程中应用CAD技术,不仅可以加快设计进程、缩短设计周期、改善劳动条件,而且能有效控制设计精度和提高产品质量。1.1三维编织复合材料简介复合材料是指由两种或两种以上的单一材料,用物理的或化学的方法经人工复合而成的一种固体材料。它是由各种组成材料(一般可分为增强材料和基体材料两类)取长补短复合而成的具有各种材料综合性能的新材料,可以得到各种单一材料所不能具有的特殊性能。复合材料从功能上可以分为结构复合材料和功能复合材料两种。结构复合材料主要利用复合材料的各种良好的力学性能,用于承受载荷的主结构中;功能复合材料则以复合材料的物理、化第1页
第一章绪论学和生物学的功能作为主要用途。三维编织复合材料是采用三维整体编织技术将高性能纤维织造成三维整体异型编织预制件,用此预制件作为增强相形成的新型高级纺织复合材料。图卜l三维编织机示意图三维编织技术具有异型件一次编织成型、结构不分层、整体性好和结构设计灵活等优点,目前三维编织结构复合材料形式倍受重视,已经在航空航天,交通运输,石油化工,武器装备,体育用品及医疗等诸多领域得到了广泛的应用。其主要突出的特点是:一、纤维在预制件中相互交织,多方向取向,从而形成一个完全整体的结构,使预制件在各个方向上得到增强,从而完全避免了传统复合材料的分层现象。三维编织结构复合材料具有质轻、不分层、比强度高、比刚度高、抗冲击、基体损伤不易扩展、综合力学性能好,以及耐烧蚀、抗高温等独特优点。二、可以直接编织出各种形状、不同尺寸的三维整体异型预制件。例如三维整体厚壁圆管、圆柱体、锥套体、工型粱、T型梁、L型梁、丌型梁、盒型梁等。用其制成的复合材料制件不需再加工,避免了加工造成的纤维损伤。第2页
第一章绪论三、可以用各种高性能纤维,如:碳纤维、碳化硅纤维、石英纤维、芳纶纤维、玻璃纤维等以及普通纤维进行编织。四、它是航空、航天、兵器、汽车、船只等部门中为提高重要部件的性能所急需的理想材料。1.2计算机辅助设计简介计算机辅助设计(CAD)技术是使用计算机帮助人们进行产品和工程设计。它将计算机高速而精确的计算能力、大容量存储和数据处理能力,与设计者的综合分析和逻辑判断能力以及创造思维结合起来,从而大大加快设计进程、缩短设计周期、提高设计质量。1962年美国麻省理工学院的I·E·萨瑟兰德发表了“Sktchpad:一个人机通讯的图形系统”的博士论文,首次提出计算机图形学、交互技术、分层存储符号的数据结构等新概念,为CAD技术的发展和应用打下了理论基础。1970年美国Applicon公司推出了第一个完整的CAD系统。伴随着计算机技术和计算机图形学技术的发展,CAD技术和系统迅速成长起来。目前,CAD技术的应用己迅速从发达国家向发展中国家扩展,由大型企业向中小企业推广,由高技术领域的应用向日用家电、轻工产品的设计和制造中普及。CAD技术推动了几乎所有一切领域的革命,并由此产生了巨大的经济效益与社会效益。它的优异功能主要表现在以下几个方面:(1)CAD技术可以帮助设计人员扩展其创造性思维的空问,借助所谓的智能CAD系统,通过人工智能、专家系统等技术的支持,以弥补设计人员经验的不足:(2)可以帮助设计人员按照现代设计理论进行大量的、复杂的运算,求出最佳的设计参数,并对设计方案进行最优化:(3)可以把正在构思的新建筑、新产品,以虚拟现实或三维实体逼真的图形形式展现在用户面前,以供评审与选第3页
第一章绪论择;(4)可以在计算机屏幕上对设计的原理、结构和特性进行动态仿真实验,而无须制造模型样机;(5)对己决定的设计方案自动进行二维、三维的绘图,编制工程施工、报价和产品加工制造用的全部设计资料,并可同时生成制造所需的各神工艺资料,如模具设计、数控机床加工程序等:(6)在设计过程中,通过数据库、图形库等,可以为设计人员提供大量的设计参考资料,随时调用,方便又高效;(7)通过CAD工作站的连网运行,可以使身处异地的一些设计人员用并行工程的现代化方式同时进行设计工作的探讨和齐头并进地进行设计;CAD技术已成为现代工业中必不可少的主要技术手段。由CAD(计算机辅助设计)/CAM(计算机辅助制造)/CAE(计算机辅助工程)构成的CIMS(计算机集成制造系统)使产品的设计工作内容和方式发生了根本性变革,成为工业发达国家制造业保持竞争优势,开拓市场的主要技术手段。目前,CAD技术已经受到世界各国的广泛关注。在CAD技术上美国一直保持着领先优势,其他发达国家和地区如西欧和日本也获得了长足的进步。我国近年来也在大力提倡和推广应用这一技术,如国家科委正在施行的CIMS工程和CAD应用工程,就是国家资助大学、科研院所和工厂企业推广和应用CAD技术的开发项目。随着计算机及其外围设备、图形设备及其软件的逐步发展和完善,CAD技术将朝着标准化、集成化和智能化的方向进一步发展。未来的CAD技术将会更加易于推广和移植。1.3课题的提出和意义复合材料三维整体异型编织技术是二十世纪八十年代发展起来的高新纺织技术。它创造了~种新的复合材料结构形式,具有整体性和力学的合理性两大特点。第4页
第一章绪论复合材料三维整体异型编织技术研究起步于1983年,主要应用于航空、航天领域,特别是军用航空、航天领域。十多年来,其应用己迅速从军事工业向民用工业扩展,许多产品陆续推向市场。此项技术一经推出即引起世界各国的广泛关注,美国航空航天局投资一亿多美元专门开发这门技术。国内对此领域的研究虽然近年来刚刚起步,但发展迅速,并获得了相当的成果。但在编织工艺,单元体模型,力学分析,树脂基复合等方面还存在着一定的差距。复合材料计算机辅助设计是当前复合材料领域中的一项新兴课题。国内外的一些专家学者正在研制三维编织的计算机辅助设计系统,并且在某些方面已经取得了一定的进展。但是,三维编织计算机辅助设计中有关对图形进行光照处理的学术论文还未见发表,此方面的研究空白迄待填补。天津纺织工学院复合材料研究所一直致力于三维编织计算机辅助设计系统的探讨和研究,经过几年的发展,取得了一些经验和成果。1995—1996年,韩其睿教授使用TurboC语言开发了一套三维编织的CAD系统。此系统可以完成预制件的单元体结构显示、内部纤维走向显示、编织机的运动显示、规则截面的运动模拟显示、任意截面的设计等功能(韩其睿教授于1999年已将此系统在SUN工作站上实现)。该系统包括的内容较全面,基本能满足三维整体编织的要求。研究生吴辉辉、郑嵩在1996—1998年,在SUN工作站SolariS系统上完成了“基于EUCLID3软件的三维编织二次开发3DBSTC—CAD系统”。此系统主要是进行三维编织预制件工艺设计和编织过程模拟。用计算机生成三维形体的真实感图形,是计算机辅助设计的重要内容,在实践中具有巨大的实用价值。例如,在产品设计中,常需要制作实物模型来检查设计效果,根据模型反映的问题不断修改设计方案,以获得最佳造型效果。这往往需要反复制作模型,耗费大量的人力物力。而使用计算机生成产品的真实感图形,并对其外形直接进行交互式的修改,则可以大大缩短设计周期、提第5页
第一章缔论高产品质量。此外,真实感图形绘制技术在飞行训练、战斗模拟、医学、广告影视、计算机动画以及科学计算的可视化领域均有广泛应用。我们进行“三维编织预制件光照模型的研究”,可有效改善预制件在计算机中的立体显示效果,增强其空问真实感。对于提高工艺设计、优化工艺参数。从而达到最佳设计效果具有十分重要的作用,对整个三维编织复合材料计算机辅助设计的发展必将起到积极的推动作用。第6页
第二章课题工作环境介绍本课题使用了天津纺织工学院复合材料研究所的SUN工作站硬件环境为:SUNSPARCSTATION20图形工作站:内存为64M:硬盘为2G:图形卡为ZXl。软件环境为:操作系统为SolariS2.4;窗口系统为OpenWindows3.4;网络软件为NFS:图形软件系统为SUN工作站的XGL图形系统。由于图形处理的效果在很大程度上依赖于硬件的性能和图形软件的功能(例如对数据结构的定义和程序包提供的算法支持),本章将对SUN工作站和XGL图形系统做重点介绍。特别是XGL图形系统,目前国内使用较少,相关资料缺乏,有必要进行深入的研究和探讨。2.1SUN工作站SunSPARCWorkstation在CPU的系统结构上采用了RISC技术,在工作站的系统构成上使用了SBus总线。使SunSPARCWorkstation的性能比Sun一3有了飞跃性的提高。RISC技术RISC(ReducedInstructionSetComputer)技术与传统的CISC(ComplexInstructionSetComputer)技术相比,它更强调指令格式的简单性和指令类型的有效性。第7页
第二章课题工作环境介绍CISC机通常是由微程序(也称微码)驱动,微程序是机器内最底层的硬件指令,这些指令直接控制硬件信号。微程序是对机器语言到硬件执行信号间的转换或翻译,如图2—1。机器语言(程序的执行代码)l微程序硬件执行信号图2—1微程序的作用微程序解释处理器机器指令从存储器中读出,然后译码,产生一系列的微指令。微指令直接控制硬件以实现所要求的操作。机器指令的微程序设计是由专门的设计人员来完成,然后放在ROM中。当然,微程序也可以放在RAM中。CISC高级语言l编译+微程序I解释●机器语言硬件执行信号RISCl高级语言I编译tl机器语言硬件执行信号图2-2CISC与RISC对比第8页
第二章课题工作环境介绍70年代以米,随着集成电路的发展使得存储器容量更大,速度更快,价格也更便宜。使得RISC处理器可以使用更小的指令集完成与CISC处理器相同的功能。尽管对同一源代码RISC需要比CISC稍多的机器指令,但是RISC处理器取消了微程序这一层,因而每条RISC指令却比CISC更快,如图2—2所示。RISC具有以下特点:(1)指令尽量简单,除非特殊的需要,一般不增加新指令;(2)取消微程序这~层,机器指令直接控制硬件信号,这样减少了微程序控制这一层,指令执行加快了;(3)一致的指令大小和流水线执行方式。所有指令统一格式,这样便于硬联控制的解码和执行,而流水线执行方式,使得指令在执行时有并行的作用,执行的速度明显加快:(注:硬联控制是指机器指令直接控制硬件执行信号,完成所要求的操作。它减少了微程序控制这一层,加快了指令的执行。)(4)优化编译器,优化编译技术需要简化指令,而不是产生复杂的指令。SPARC(ScalableProcessorArchitecture)是一种由RISC家族中派生出的系统结构。SPARC除具有上述RISC的一般特性外,还具备一些独特的品质,例如:(I)寄存器窗口这些窗口不但可重叠而且允许编译器在寄存器内自动地保存值和传递参数,这对于像Lisp和Prolog这种解释型语言非常方便;(2)支持多处理机为多处理机建立了特殊指令:(3)系统可灵活伸缩Cache、MMU、FPU、多处理机、总线大小和寄存器窗口数量都可以灵活而方便地随需要集成,以适应不同系统的需要。SPARC处理器逻辑上由一个整数单元(IU)、一个浮点数单元(FPU)和一个可选的协处理器单元(CP)组成,如图2—3所示。第9页
筇二章课题工作环境介绍每个单面都拥有l自己的寄存器集。SPAR(c结构的这种I组成允许在IU、FPU和CP指令之间实现最大限度的并发执行。IU、FPU和CP中所有寄存器都是32位,指令在单个寄存器、寄存器对或者4个寄存器上操作。SBus总线图2-3SPARC芯片的组成结构SBus是一种高性能的I/O互连总线,SBus的性能一般是目前所使用的其他总线的2-5倍,峰值传送速度可达IOOMB/s。然而,它的体积却很小,特别适合于高度集成化的台式系统。在总线的信号组成上,除了像一般的总线那样,具有数据总线、物理地址总线、控制信号和中断信号以外,更增加了虚地址总线(与数据总线分时复用),以实现DVMA(DirectVirtualMemoryAccess)技术。SBus总线的主要特点有:1.32位或64位数据总线;2.32位虚地址总线(与数据总线分时复用,并有总线主设第10页
第二章课题工作环境介绍各驱动):3.28位物理地址总线(选通和读写总线从设备);4.16.67—25MHZ的时钟;5.除中断信号外,其余所有信号均为同步操作;6.最多可支持8个总线主设备;7,支持成组传送,一个总线传送周期最多可传送64B8.信号电平兼容的CMOS器件;9.7条中断信号线,支持异步操作。SUN工作站的编译原理C、FORTRAN一77和Pascal是Sun程序设计环境所提供的三种标准程序设计语言,其编译步骤如图2-4所示。图2—4SUN工作站提供的编程语言及编译步骤第1l页
第二章课题工作环境介绍为了提高目标代码的质量,由这三种程序设计语言编制的源程序均需先经编泽程序编译成公共的中问代码。经全局优化后,再由代码生成器将中问代码转换为目标码。为了便于使用公共的调试工具,三种语言所产生的目标码和符号表都相一致。2.2XGL图形系统XGL系统是运行于SUN工作站的基于UNIX标准的Solaris系统的图形图象处理系统。该系统包含一个二维和三维图形函数的软件库。此XGL库支持包含GKS和PHIGS在内的许多图形应用程序接口。XGL函数库大部分功能独立于底层的硬件,但在需要时可自动使用硬件图形加速。XGL系统需要一个窗口系统来管理输出到显示设备上的绘制操作,例如SUN的OpenWindows窗口环境。其C1ient/Server的设计思想使一个应用程序的计算工作和图形显示工作可在不同机器上运行,特有的DGA显示技术加速了XGL应用程序的运行速度。(DGA技术即直接图形访问技术。一个客户XGL应用程序运行在本地机上时,DGA技术允许XGL库向加速卡直接发出命令,而不用向服务器发送协议,由服务器向加速卡发出指令。)2.2.1XGL的功能:XGL系统提供给应用程序编程者广泛的图形功能:●立即绘制方式即不用放置数据在显示表中就可进行图元的立即绘制。XGL在程序中完成对图形几何体的相关数据的管理,而不是在显示表中限制几何体如何储存或指定特殊信息。●可载设备流水线图形设备只要支持可载设备口,则经xGL编译的程序不用重新编译即可在新设备上运行。●分离的二维和三维图形流水线第12页
第二章课题工作环境介绍一个应用程序可同时使用二维和三维流程,即可获得二二维流程的速度,又能得到三维流程的功能。●广泛的图元和坐标类型支持XGL图形库支持丰富的图元、视图和模型转换。标准功能包括二维和三维图元支持(如线和多边形);深度追踪、光照和阴影;非均匀有理B样条曲线和曲面:以及直接和问接的颜色模型支持。●多图元操作XGL允许将简单的图元集合成组,可方便地绘制同一类型的图元。●透明的加速即加速在需要时自动调用,而用户并不知道加速已存在。XGL提供了由图形函数到基本硬件的直接映射。●针对分布式网络的xlib和PEXlib协议设备支持XGL系统支持Xlib设备(X协议)和PEXlib设备(PEX协议),因此XGL程序可以通过网络在远程系统上运行。●独立的工具包XGL可与OpenWindws支持的工具包和管理器(包括x11服务器,OLIT和XView工具包,以及Xlib库)协同工作。图2-5XGLAPI和基本库第13页
第二章课题工作环境介绍另外,XGL库包含了许多GKS和PHIGS中没有的功能,既可单独作为应用程序与硬件的接口,也可作为基层库与其上的其他高级图形库共同作为硬件的应用程序接口来进行编程。2.2.2XGL对象介绍:XGL函数库采用C/C++编写,支持面向对象编程。根据图形处理的特点,定义了特有的数据类型和结构,使其提供的图形函数功能更强大,结构更清晰,也更易于编程者学习和掌握。整个XGLAPI是以类(Class)来划分层次的,其结构如图2—6所示。与其他C++语言不同的是,在XGL程序中只能定义类的事例(即XGL对象),而不能创建新类。图2-6XGL库的类层次一个XGL对象(Object)就是一个图形资源的抽象物。它包含此对象的属性(Attributes)和操作(Operators)。下面介绍几种重要的XGL对象:第14页
第二章课题工作环境介绍1.系统状态对象(SystemStateObject)一个应用程序必须以调用xgl—open()开始,它创建一个XGL系统状态对象。这个对象保存KG[。管理~个进程所需的关键信息,监视由程序或XGL本身创建的其他对象。一个XGL进程只支持一个XGL系统状态对象。程序的最后一个操作是xgl—close(),它使用由xgl—open()创建的系统状态对象句柄,销毁XGL系统状态对象和所联系的资源,并终止XGL进程的运行。XGL系统状态对象使用四个操作来控制它所创建的所有其他XGI,对象(不包括系统状态对象本身)。这些操作提供了一个与XGL对象进行工作的连续方法。xgl—object—create()用指定的类型创建并初始化对象:xgl—object—get()得到一个对象的属性值:xgl—object~set()则用于设置对象的属性值;xgl—object—destory()销毁指定的XGL对象,并释放所有相关资源。2.设备对象(DeviceObject)图2—7XGL中的设备对象第15页
第二章课题工作环境介绍它包含与绘制图形直接有关的信息,并以一种抽象的方式提供一个框架与硬件图形设备进行交互。如图2—7所示,由设备类继承出三个子类对象i窗口光栅对象负责在屏幕上进行绘制;内存光栅对象将脱屏的数据保存在系统内存或流对象中:流设备则提供一个独立于协议的流水线来产生一个格式化的输出,例如CGM(计算机图形原文件)输出。3.二维和三维上下文对象(ContextObjects)上下文对象是一个理想化的图形绘制者的抽象物。它控制与XGL设备直接相关的所有绘制动作。它提供对二维和三维图元的绘制操作以及设置图形属性。上下文对象也包括坐标系统中的图形和环境信息,如绘制流水线坐标空间中几何体数据的映射和剪切信息。几个上下文对象可以同时存在,也可以把其他XGL对象作为资源来共享。二维和三维上下文对象被设计成独立的对蒙以分别满足二维和三维应用程序的需要。4.颜色映射对象(ColorMapObject)颜色映射对象以一种与硬件设备独立的方式指定颜色,它允许编程者使用自己喜欢的颜色模型进行工作。当与设备对象相关联时,颜色映射对象保证程序使用的颜色模型与设备的颜色模型的最佳匹配。XGL函数库支持索引和ROB两种颜色模型。颜色映射对象定义颜色值从一种颜色模型向另一种颜色模型的转换。当硬件设备使用索引值,程序使用RGB颜色时,颜色映射对象使用一个颜色立方体进行RGB值到索引值的颜色转换;当硬件设备使用RGB颜色,而程序使用索引值时,颜色映射对象使用一个颜色表完成索引值到RGB值的颜色转换。5.光对象(LightObject)光对象允许一个三维的上下文对象在环境光(Ambient第16页
第二章课题工作环境介绍【。ight)、锥形点光源(SpotLight)、平行光(DirectionalLight)和点光源(PositionalLight)四种光源组成的光照条件F进行图形绘制。环境光点光源图2-8四种光源类型光对象可以在保持自己特有的独立性前提下,作为资源被其他上下文对象所共有。这使编程具有更大的灵活性,既允许个别上下文对象共享一些光的属性(如光的空间位置),也保留了光对象对光的特有控制(如光的类型)。2.2.3基本的XGL概念:OXGL和x窗El系统环境一个XGL应用程序就是一个运行在X窗口系统环境(如OpenWindows环境)中的客户程序。x窗口系统由几部分组成。核心部分是显示服务器,它负责管理来自客户程序的输第17页臼一来甸,.臼天,∥涌一治v
第二章谭堰工作环境介绍出请求,在显示器上绘吲,并分配输入事件给相应的客户程序。服务器和客户程序通过x协议和/或PEX协议来联系。一个工作进程中,客户程序产生协议查询,使用X1ib或PEXlib编程接口或x工具包进行请求,服务器则对这些请求进行处理。一个XGL应用程序使用X1ib或X工具包与服务器进行联接,在显示器上创建一个窗口,控制事件的交互。服务器管理屏幕上不同窗口之间的关系以及提供对程序的输入和事件;工具包则提供应用程序的用户界面。应用程序通过XGL图元向窗口提供几何体的数据。x¨b和x工具包以及XGL的调用可以同时存在于同一进程和共享屏幕上的绘画区域,如图29所示。应用程序图2-9XGL应用程序与窗口的联接●本地和远程绘制图形当一个客户应用程序运行在本地SUNOpenWindows服务器,且硬件支持DGA协议,则XGL可以使用DGA技术来绘制图形,而不用依赖X协议通过服务器来绘制,如图2—10所示。DGA技术包含一系列的机制,能使OpenWindows客户进程直第18页
第二章课题工作环境介绍接驱动OpenWindows服务器控制下的图形设备。尽管服务器管理着设备资源,但DGA技术使得XGL客户进程也可以直接向设备发送指令,因而减少了XGL基于服务器窗口系统的联系负荷,优化了性能。XGL程序和窗口服务器在同一台机器上图2一10使用DGA本地绘制图形象所有的X应用程序一样,一个XGL应用程序通过网络可远程运行并显示在使用者的工作站上。当XGL客户程序远程运行时,XGL使用xlib或PEXlib协议完成全部绘制。如果服务器包含PEX扩展,并且XGL可访问PEX可载库,XGL将用PEXlib协议来绘制。如果不能使用PEX,XGL将使用xlib协议来完成二维绘制。对于那些Xlib协议不支持的图元和绘画操作,XGL将进行扫描转换,通过xlib协议把点输送到设备。●一个XGL应用程序的运行一个XGL应用程序遵循XLib、PEXlib或X工具包编程格式,使用x应用程序的事件驱动模式进行交互操作。通过xlib调用、PEXlib调用或x工具包调用,应用程序首先创第19页
第二章课题工作环境介绍建所需的窗口系统对象(例如一个幽形显示窗口),然后打开XGL系统。XGL系统打开后,自动创建系统状态对象以及内部对象,这些内部对象负责处理XGL系统的设备无关部分与设备相关部分的交互。要建立绘制的框架,必须创建一个设备对象和一个上下文对象。设备对象是一个代表显示设备的抽象物,而上下文对象则控制一个设备上的所有绘制操作。这些对象由一个XGL对象生成函数产生,描述对象的属性用函数中的参数来设置。该函数创建一个对象事例,并返回一个对象旬柄。绘制几何体之前,应用程序必须将设备对象与上下文对象进行关联。这两个对象关联后,应用程序才能使用XGL图元绘制几何体,并通过XLib和x工具包传递程序的控制,发出事件。工作进程中,应用程序可通过改变上下文属性来改变几何体的显示特征。应用程序也可通过XGL的图元绘制几何体并创建需要的其他对象。例如,应用程序可创建几种字体对象以使用不同的字符集;也可创建一些线模型对象来满足编程者的不同需要。在绘制时可以根据需要,将多重设备对象,例如窗口光栅和内存光栅设备,与上下文对象进行关联或不关联。当应用程序退出XGL时,系统状态对象销毁创建的所有对象,释放资源,并销毁自己,关闭XGL。●XGL绘画图元XGL库提供了一系列的绘画图元,编程者可以使用它们来方便的绘制几何体。XGL图元包括基本的线、多边形和文本图元以及更复杂的曲线、曲面和四边形网格图元。在XGL系统中,几何体由上下文对象绘制。上下文对象也保存着绘制所需要的图形和环境状态信息。因为XGL是立即模式系统,所以它在绘制时需要访问目前的状态信息。又因为应用程序可创建不止一个的上下文对象,并可以使用不同的上下文对象绘制相同的几何体,所以绘画图元将上下文对象作为它的一个输入参数,以此决定它属于哪一个上下文对象。●处理二维和三维数据第20页
第二章课题工作环境介绍XGL依据上下文对象的维数、输入到图元的点数据的类型和对一个上下文对象的属性设置来处理程序中数据的维数。上下文对象可以是二维的,也可以是三维的。一个应用程序既要绘制二维图形,又要绘制三维图形时,可同时创建两个上下文对象,一个负责二维绘制,另一个负责三维绘制。上下文对象一旦创建,一条缺省的绘画流水线(包括转换和裁剪)也随之建立。二维上下文对象对应一条处理二维几何绘制的流水线,三维上下文对象对应一条更复杂的三维流水线,它能够进行光照、阴影以及纹理的处理。应用程序的数据必须使用一种与上下文对象相对应的点类型输入到绘画图元。例如,一个二维应用程序可以定义一个二维上下文对象,在XGL二维点结构(从整型到浮点型)建立程序数据。上下文对象的维数也能对与绘制有关的属性进行控制。例如,一个二维上下文对象包含控制如何对一个表面的可见面进行显示的一系列属性;而一个三维上下文对象除了包含对表面的可见面进行操作的属性外,还包含对表面的不可见面进行操作的属性。许多XGL绘画图元可以同时应用于二维和三维图元,但是有些图元只能应用于三维图形绘制。●XGL基于对象编程的探讨XGL使用抽象的数据结构——对象来代表图形信息。一个XGL对象代表一个图形资源,每一个对象描述图形绘制系统的一个有效组成,并且包含进行图形操作的必要信息。例如,一个窗口光栅设备对象,它是一个显示设备的抽象物,隐藏了对图形硬件设备的依赖性代码,使编程者以一种设备无关的方式与设备进行交互。从内部看,XGL对象是类的事例。一个类是一个抽象的数据结构,它将状态信息与作用在对象上的函数结合在一起。类的属性和函数定义了对象的特征。一个类只是一个数据类型定义,它不存在于内存。一个类在使用时必须被事例第21页
第二章课题工作环境介绍化,它可以被多次事例化以创建多个不同的对象,这些对象属于同一个类。对象存在于系统的内存并提供程序绘制图形所需的功能。对象包含操作和属性两部分。操作就是控制对象行为的函数。例如,转换体对象包含进行转换的操作,如矩阵变换。操作提供给编程者一种访问对象及对对象的数据结构进行处理的途径,因为对象的数据结构不能被直接访问。例如,程序需要改变一条线段的颜色,它必须使用操作xglobjectset()来改变线段的颜色属性值,因为它不能直接访问对象数据结构中的线条颜色的属性域。属性控制XGL的许多功能,例如绘制的几何体表面,进行剪切的方式和虚拟设备坐标系的取向。尽管有些属性是只读的,但是大部分属性值在程序中可随时改变。属性作为操作的参数项来输入,有些操作将一个属性值列表作为一个输入参数。列表中的每一对属性值由属性名以及随后的属性值组成。属性值列表可以包含零对属性值,也可以包含对象的所有属性。所有的属性设置操作均以字符“NULL”作为终止,“NULL”在stdio.h中有定义。有些对象可以把其他对象当作资源。一旦两个对象之间建立了关联,对象之间将传递信息,把使用过的对象中的数据结构中发生的变化告知正在使用的对象。对象之间的联系由程序建立,并由XGL对象管理功能进行内部管理。当一个程序创建一个新对象时,将通过使用xgl—object—set()操作、相关的属性和两个对象的旬柄来建立新对象与已存在对象之间的联系。第22页
第三章三维编织预制件光照模型的建立第三章三维编织预制件光照模型的建立建立一个物体的光照模型是在计算机屏幕上显示其真实感图形的关键步骤。光照模型就是根据光学物理的有关定律,计算物体表面各点投射到观察者跟中的光线的光亮度和色彩组成的数学公式。光照效果的模拟越接近实际物体的光照效果,光照模型就越复杂,计算量也就越大,生成的图形也就越逼真。光照模型一般分局部光照模型和整体光照模型。局部光照模型只需考虑环境光及特定光源照射在物体表面引起的漫反射和镜面反射;整体光照模型则还需考虑物体之间的相互影响、光在物体之间的多重吸收、反射和透射等影响。整体光照模型比局部光照模型复杂得多,能使物体的光照效果得到更好的表现,但它需要的计算量庞大,生成时间长,制造成本高。局部模型是一个经验模型,但能在较短时间内获得具有一定真实感的图形,能较好地模拟光照效果和镜面高光,且计算简单,所涉及的参数量易于获得,在实际中已得到了广泛的应用和推广,是目前三维图形真实感处理技术所采用的主要方法。本章利用SUN工作站XGL图形库强大的函数功能和运算功能,初步建立了三维编织预制件的局部光照模型,对其真实感图形进行了较好的显示。3.1真实感图形处理技术的基本原理图形真实感处理的基本困难是实现图形的复杂性。现实中的物体因其具有的许多的表面纹理、细微的色彩层次、阴影、反射以及一定的不规则性(如器具的磨损,织物的斑点等)而给我们视觉上造成“真实的”印象。用计算机模拟这些真实形象,如纹理、阴影等,耗费的时间代价将是很高的。3.1.1几何造型第23页
第三章i维犏织预制作光照模型的建奇几何造型是通过对点、线、面、体等几何元素的定义和运算来建立所要显示的对象(真实物体或抽象物体)的描述模型。该模型包含的信息应尽可能准确反映对象的空间位置和特征,并易于对对象进行进一步的操作和处理。形体在计算机中常使用线框、表面和实体三种表示模型。线框模型是用顶点和邻边来表示形体,主要用于表示多面体。对非平面体来说,线框模型存在明显的局限性。表面模型是用有向棱边围成的部分定义形体表面,由面的集合来定义形体,它在线框模型的基础上,增加了有关面边(环边)信息以及表面特征,棱边的连接方向等内容。但对于形体究竟存在于表面的哪一侧,表面模型没有给出明确的定义,在形体表示上仍然缺乏完整性。实体模型则在表面模型的基础上,明确定义了表面的哪一侧存在实体。三种表示模型的功能比较如表3-I所示,为了克服某种模型的局限性,实际的几何造型过程中常综合使用线框、表面和实体三种模型。表3一l三种表示模型的功能比较L模型表示应用范围局限性二维线框画二维线框图(工程图)l无观察参数的变化模型2不可能产生有实际意义的形体三维线框画二、三维线框图l不能表示实体模型2图形会有二义性表面模型1艺术酗形2数控加工不能表示实体3形体表面的显示实体模型l物性计算2有限元分析1只能产生正则形体3用集合运算构造形体2抽象形体的层次较低3.1.2消隐在计算机中显示一个物体的图形时,必须把图形的三维信息经过某种投影变换,在二维的显示表面上绘制出来。为了消除投影图形的二义性,必须在绘制时消除实际不可见的线和面,该过第24页
第三章三维编织预制件光照模型的建立程称为消隐。消隐即在一个三维的观察空间中,相对观察者位置,决定目标中的哪些线段、棱边、表面是可见的,哪些是不可见的。目前针对消隐问题产生了许多算法,著名的有Z缓冲器算法,画家算法,扫描线算法,区域采样算法等。但是,由于空间物体的复杂性和多样性,到目前为止,还没有一种通用的适合于任何形体的消隐算法产生。具体问题还需具体解决,算法设计时,需要在计算速度与显示效果之间进行权衡,也可综合采用几种消隐算法。3.1.3建立光照模型确定了物体的可见面后,要建立物体的光照模型,计算物体表面的颜色和亮度。当光照射到物体表面时,会出现三种情况。首先,光可以通过物体表面向空间反射,产生反射光:其次,对于透明体,光可以穿透该物体并从另一端射出,产生透射光:最后,部分光被物体表面吸收而转换为热。这其中,只有透射光和反射光能够进入人眼产生视觉。反射光和透射光的强弱决定了物体表面的亮度,而这些光中所含不同波长光的比例决定了物体表面的颜色。例如,当一束白色光照射到物体表面上时,若所有波长的光均等量吸收,则物体呈白色、灰色或黑色(灰色即不同亮度的白色);若物体吸收了白光中出红光波长之外的所有光线,则物体表面呈红色。物体表面的光的亮度取决于物体的表面特性、光源的性质以及表面相对于光源和观察者的方向。物体的表面特性包括表面的光学性质、材料性质、表面的相对位置等,光源的性质包括光源的种类、位置、颜色和强度。因此,光照模型的建立需考虑这多方面因素。以这些因素为参数,使用一定的光学等式模拟光线照射到物体可见面时产生的吸收、反射和透射等光学现象,力求较为准确地获得物体表面的每一点的光照强度。当物体表面受到多个光源的照射时,其光照强度为这多个光源的光照效果的线形叠加。第25页
第三章三维编织预制件光照模型的建立3.1.4选择明暗处理方法光照模型建立后,还需选择适当的明暗处理算法对可见面进行光的浓淡处理。对于由曲面构成的表面,直接计算每一点的光强是不可能的。一般是将曲面划分为一系列的多边形网格(多为四边形和三边形),用~·组平面多边形来逼近曲而。这时,选择不同的明暗处理方法将会产生不同的图形效果。目前比较成熟的方法有平面明暗处理方法,Gourand明暗处理方法和Phong明暗处理方法。平面明暗方法主要用于平面体的真实感图形处理,对平面上的点使用同一个亮度值表示。当处理曲面时,对多边形网格中的每个多边形的明暗度也只算出一个单独的亮度值。其算法简单,计算量相对比较少,但当相邻多边形法向量相差比较大或网格多边形划分得比较稀时,会产生明显的Mach带效应(由于相邻多边形亮度的明显差异而使图形显得不真实和粗糙)。Gourand方法先求得多边形网格各顶点的亮度值,然后用顶点的亮度的线形插值得出多边形内的每个点的亮度值。Gourand方法克服了平面明暗方法中物体表面亮度的不连续性,应用于简单的漫反射光照模型,效果良好。但它不能真实地反映由镜面反射所形成的高光形状。Phong明暗处理方法最复杂,显示效果也最佳,可明显抑制Mach带效应的产生。它先求得多边形各顶点的法向量值,然后用顶点的法向量的线形插值得出多边形内的每个点的法向量值,最后求得每个点的亮度值。Phong方法能在局部范围内真实地反映表面的弯曲性,特别是对镜面反射产生的高光的处理使得图形更加逼真。另外,光线跟踪算法也是一种著名的明暗处理方法。它从观察点的位置开始向光源反向跟踪光线,单一光线投向物体表面再反射到视点,通过计算得到表面每一点的亮度值,最终产生高度真实的三维图形。但由于计算量相当大,处理速度缓慢,实际应用较少。第26页
第三章三维编织预制件光照模型的建靠明暗处理的最后阶段根据需要有时还应包括表面的透明、纹理效果的处理,这对于具有透明性或粗糙的表面是相当重要的。3.1.5颜色模型的建立图形的真实化过程中的一个重要内容是颜色模型的建立。所谓颜色模型是指某个三维颜色空间中的一个可见光子集,包含了某个颜色域的所有颜色。通过颜色模型,可以在某个颜色域内方便地指定所需的各种颜色。RGB颜色模型是目前计算机图形学应用最为广泛的颜色模型。RGB颜色模型采用笛卡儿坐标系,由红、绿、蓝三种原色(一般取值在O到1之间)的不同比例的叠加产生各种不同颜色。其他常用的颜色模型还有CgY、HSV和HLV颜色模型等。3.2三维编织预制件表面结构分析3.2.1总体结构图3-1预制件表面垂直投影图第27页嗲伊
第三章三维编织预制件光照模型的建立图31是编织工艺为四步法的三维编织预制件(矩形)表面在法向量方向的二维投影图。它是由相互交织的四组纤维束经表面的挤压和内部的拉伸所形成,基本由两种单元体A和B有规律地排列而成,其左右边界可看作由这两种单元体的一部分组成(实际的预制件上下边界不做处理,可看作是无限延伸的)。左边界单元有①②两种情况,右边界单元有③④两种情况。3.2.2单元体结构分析预制件表面的单元体在空间为四周低,中间高的曲面,是由截面为圆形的纤维束经拉伸,挤压所形成,如图3—2所示。单元体表面用多边形网格来近似处理时,关键是确定网格点的空faj坐标。实际编程中,采用了双抛物线拟合方法对网格线进行拟合,分两次得到各个网格点的空间坐标,然后取其平均值作为网格点的空间坐标,对单元体表面的近似处理得到了较好的效果。●确定网格点的空间坐标B图3-2表面单元体的空问结构第28页yC
第三章三维编织预制件光照模型的建立以图3—2为例,可先确定单元体的A、B、C、D四个边界点坐标(四点的Z坐标均为0),然后用网格线有规律地将曲面划分成多个多边形网格。这里,网格线在XOY面的投影将单元体在纵向和横向四等分。由实际预制件取点,得到单元体顶点P的高度,即z值(其x,Y值由四个边界点坐标易得)。由AB、CD边界线上的网格点m、n(其z坐标均为0)与P点三点进行抛物线拟合,得到横向的网格线mn的抛物线方程,求得mn上的网格点坐标。由这些新得到的网格点与边界线AD、BC上的网格点再经抛物线拟合得到纵向的各网格线方程,第一次求得所有网格点的空间坐标。第二次抛物线拟合先由AD、Bc边界线上的网格点U、v(其z坐标均为0)与p点三点进行抛物线拟合,得到纵向的网格线UV的抛物线方程,求得uv上的网格点坐标。由这些新得到的网格点与边界线AB、CD上的网格点再经抛物线拟合得到横向的各网格线方程,第二次求得所有网格点的空间坐标。将两次求得的网格点坐标值相加取平均值,即为网格点的空间坐标。下面以网格线mn为例,先对其进行抛物线拟合,进而求得mn上各网格点的坐标。因为m、n、P点的空间坐标已知,1、2点的x、Y坐标由已知条件也容易求得,因此只要求出1、2两点的z坐标值即可得到网格线mn上所有的网格点坐标。为简化求解过程,经过坐标转换,使得网格线mn的空间位置如图3-3所示。图3-3网格线的抛物线拟合第29页
第三章三维编织预制件光照模型的建立其中,假设已知条件为:m。20,m,=0:rl。=||mD忆n:=0:P。=(i/2){(n。),p:=zo:设抛物线方程为:z(x)=k2十(X2)+kI}x+ko代入已知条件得:k22一(4$zo)/((nx)$(FI;)):kl=(4}zo)/n,:ko=0:在抛物线方程中分别代入x=(1/4)}n。和x=(3/4)}n。得到l、2两点的z坐标z1=z2=(3/4)十n。yO●确定边界点的空间坐标D图3-4单元体的二维投影结构图3-5表面的边界单元体结构图3—4为单元体在XOY面上的投影,其中中为表面编织角,a为纤维束宽度,则单元体宽度b:a/sin(2由),长度为1.5*b。设单元体I上l点坐标为(x,y),则四个边界点坐标为1点(x.Y)第30页
第三章三维编织预制件光照模型的建直2点(xb*sin出,y-b,cos由)3点(x+O.5*b*sin巾,y-2.5*b,cos由)4点ix+1.5*b*sin巾,y-1.5*b"cos由)同理,可得单元体II的四个边界点坐标(以A点为参考)A点(X,Y)B点(x+b*sin中,Yb,cos由)C点(x+2.5*b*sin巾,y+O.5*b,cos出)D点(x+1.5*b*sirl中,y+1.5*b"cos出)实际编程中,多边形网格被划分的越多越小,最后产生的曲面拟合效果就越好,但同时程序花费的时间也响应延长。3.2.3边界单元体的处理编程中把边界单元体作为内部单元体的一部分来处理。设预制件表面结构如图3—5所示,其表面的左右边界分别为x=xl和x=x2两个平面,表面单元体的边界点z值均为0(单元体内部点Z值均大于0)。对于①单元体,先按照内部单元体计算四个顶点坐标,进而求得其多边形网格的各个网格点坐标,对于xx2的网格点,令其x=x2,z=O,Y不变。3.2.4表面其他参数的确定以图3—5表面结构为例(其他边界情况同理可析)。预制件的面宽与单元体列数:m=(n-1)}1.5*b*sin由+0.5*b,sin由m为面宽,n为列数,图4中n=5。相邻的同种单元体之间距离:设a点坐标为(x,Y),可得b点坐标为(x+3*b*sin由,y),第3l页
第三章三维编织预制件光照模型的建立c点坐标为(X,y-2*b,sin中),即行方向向右平移3*b,sin由,列方向向下平移2*b*sin中。3.3预制件光照模型的建立3.3.1消隐的实现XGL系统中可使用四种坐标系:模型坐标系(Mc),世界坐标系(WC),虚拟设备坐标系(VDC)和设备坐标系(DC)。XGL提供函数可实现视图在四种坐标系中的任意转换,下面的代码实现了从wC到VDC的视图转换:/十定义XGL对象和数据类型}/Xgl—objectctx:Xgl—objectXgl—ptXgl—Pt—f3dtranS:vdcwindowpt:pt—f3d:/*ctx为上下文对象,负责屏幕的所有绘制过程十/A定义一个转换体对象}/序定义vdc窗口对象}//{创建一个3D转换体{/trans=xgl—object—create(sys—st,XGLTRANS,NULL,NULL)/十转换VDC的坐标原点到WC的(60,80,7.5)}/pt.pt—type=XGL—PT—F3D:pt.pt.f3d=&pt—f3d:ptf3d.x=一6.0:pt—f3dY=一80:ptf3d.x=一7.5:xgl—transform—translate(trans,&pt,XGLTRANS—REPLACE)/}实现从WC到VDC的视图转换十/xgl—transform_rotate(trans,一PI/2,XGL_AXIS—X,XGLTRANSPOSTCONCAT):第32页
第三章三维编织预制件光照模型的建立xgltransform—rotate(trans,atan(pt—f3d.x/pt—f3d.Y)+PIXGI。AXISY,XGLTRANSPOSTCONCAT)xgl—transform—rotate(trans,alan(一pt—f3d.z/sqrt(pt—f3d.x*pt—f3dx+pt—f3d.y*pt—f3d.Y))XGLAXISX,XGLTRANSPOSTCONCAT):xgl—objectget(Ctx,XGL—C7FX—VIEw_TRANS,&view_trans):xgl—transform—copy(view—trans,trans):进行视图变换后,XGL对wC中建立数据结构的多边形网格进行绘制时,自动实现在VDC中的消隐。●建立多边形网格的数据结构一个三维立体造型系统的功能如何,关键在于数据结构的设计。系统对物体的各种分析、运算和操作依赖于一定数据结构的支持。良好的数据结构使各种算法更有效率,系统对物体的查询和操作更为方便。XGL系统使用自己特有的数据结构对图形中的体、面、环、边、点等信息重新进行定义,使其结构更加清晰,使用更加方便,也相应地增强了函数的功能。下面举例说明XGL中对多边形网格的数据结构定义。图3-6单元体的近似多边形网格第33页2324
第三章三维编织预制件光照模型的建立图3—6中,单元体表面被近似为16个小网格,共有25个网格点。每个小网格由4个网格点确定,如第一个网格由0、l、6、5点(从网格法向量方向看,四点排列顺序应为逆时针方向)确定,第二个网格由1、2、7、6点确定.......。下面的程序假设网格点的空间坐标为己知,建立此单元体的多边形劂格的数据结构。#defineNUM_VERTICES25/丰网格点的数目}/#defineNUNFACETS16/*N格数目十/gdefineNUM_V—PER—F4/}每个网格中的网格点数目}//%定义相关的数据结构}/)(El—pt—f3dvertex[NUMVERTICES]:Xgl—usgn32facet[NUM~FACETS][NUM—VPER_F]Xgl—pt一1istpl[NUM_FACETS]:Xgl—pt—f3dpts[NUR_VPER—F}N【J^I—FACETS]:inti,j,m:/{使用一个二维数组建立每个网格与其包含的对应网格点的关系}/m=4:for(i=0:iyO的网格点进行以下处理(以5点为例):设5点原来的坐标为:(X,Y,Z):近似处理后,5点近似为5’点,其坐标为:(x,yO,0):从图4-2中可以看出,y>yO的网格点的近似点均落在虚线m兀上(即y=yO平面在xoy面上的投影),其Y值均为yO,z值均为0。图中,3,5点的近似点分别为3’,5’。图4-2边界单元体的空间结构为了更好地显示立体预制件中的边界单元.我们对实际预制件再次进行了仔细的观察、分析。通过观察,我们发现,实际预第46页
第四章预制件立体显示系统的完善制件的边界单元与边界y=yO的交线(图中为弧mn)在z轴方向应有一定的高度,也就是说,对边界单元进行多边形网格的划分时,在边界y=yO上的某些网格点其z坐标应大于0(m,rl点z=0)。而第三章中的近似处理中,将其边界上的网格点的Z坐标全部近似为0,使得在边界处的多边形网格中相邻多边形法向量相差较大,造成了黑斑的出现。4.2对边界单元的近似处理的改进首先想到的方法是将单元体中在边界外的网格点近似为离边界最近的网格点。如图4-2中所示,将1、2、3点近似为a点,4、5、6点近似为b点,则y)yO的网格点全部近似为a、b、c、d、e五点。采用以上处理方法,表面1的边界单元将得到光滑的曲面,建立的多边形网格的数据结构也较为简单。但是,这将增加表面2上与之相邻的边界单元的处理难度。绘制表面2时,为了保持相邻的边界单元在空间上的连续性,需将a、b、c、d、e五点作为它的左边界单元上的网格点。但在建立表面2中单元体的多边形网格时,需要以y=yO为基面(表面1是以z=O为基面),而a、b、c、d、e五点并不能保证全在y=yO平面上,这将使表面2的边界单元体的处理错综复杂。经过综合考虑,在既要满足使相邻的边界单元过渡平滑光顺,又要使编程尽量简便的前提下,反复实验了多种近似方法后,形成了最终方案,完成了对边界单元体近似处理方法的改进。改进的处理方法大体可以分为两步:首先确定相邻边界单元的公共边界(本文以边界上的网格点坐标来表示),然后以此边界分别作为两个边界单元的左、右边界,重新建立两个边界单元的多边形网格数据结构。4.2.1确定相邻边界单元的公共边界如图4—3所示,首先将y)yO的网格点对应近似为a、b、c、第47页
第四章预制件立体显示系统的完善d、e五点,再由这五点分别确定在y=yO面上的对应点a’、b’、c’、d’、e’作为相邻的边界单元公共的边界。下面以由b确定b为例说明图4-S边界单元体近似处理的改进图4—4单元体在xoy面的投影图第48页
第四章预制件立体显示系统的完善图中虚线m13为b点所在的网格线mn在xoy面上的投影,过b点作mn的平行线,与平面y=yO相交于点b’,b’即为所求点。设b点空间坐标为(xl,Y1,z1),b’点的空间坐标为(x2,y2,z2),易得y22yO:Z2=Z1:由图4—4所示,b’点的坐标x2=Xl一(yO—Y1){ctgo:其中巾为预制件的编织角。4。2.2建立两个边界单元的多边形网格数据结构在确定了公共边界上的a’、b’、C’、d’、e’的空间坐标之后,为了在绘制两个相邻的边界单元时,在相接处尽量拟台,需以五点在空间的连线作为各自边界单元的左、右边界重新建立各自表面的近似多边形网格的数据结构。图4—5表面1的右边界单元在xoy面上的投影图第49页图4-6表面2的左边界单元在y=yO面上的投影图
第四章预制件立体显示系统的完善图4—5为表面l的右边界单元重新建立的多边形网格在xoy面上的投影,以a’、b’、c’、d’、e’作为其右边界的四等分点,与其他三个边界上的四等分点连接成纵横交错的网格线,然后由P点相对于基面的高度,使用抛物线拟合方法依次得到各网格点的空间坐标(详看第三章)。图4—6为表面2的左边界单元在y=yO平面的投影图。由于近似方法的改进,其左边界上的网格点z值不再全为0(图中b’、c’、d’的z值均大于0),这样得到的投影图就与前面设想的有所区别。但在建立多边形网格的数据结构时,其方法与图4—5中对右边界单元一样,先由边界上的等分点形成多边形网格线,再结合P点的相对基面的高度求出网格点的空间坐标。图4—5中,单元体的基面为z=O平面;图4—6中,单元体的基面为y=yO平面。4.2.3相邻边界的组合情况在同时显示预制件相互垂直的两个表面时,还要考虑相邻边界的两种组合情况以及它们与顶面的连接。图4—7相邻边界单元的两种组合如图4—7所示,相邻的边界单元有两种组合情况:在表面l的左边界单元形状固定的情况下,当表面1的列数为偶数时,其右边界单元为①,与之相对应的表面2的左边界为②;当表面1第50页
第四章预制件立体显示系统的完善的列数为奇数时,其右边界单元为③,与之相对应的表面2的左边界为④。实际应用中,预制件编织完成后,其两端经切割再做下一步的处理。所以显示预制件时,将其顶面用表面颜色为黑色的矩形平面来表示,预制件的其他两个表面与它的连接也采用第三章所采用的近似方法处理。4.3立体显示预制件的完成在预制件的光照参数设置与第三章相同的情况下,最后生成的光照条件下预制件的真实感图形如图4-8所示。图4-8经过改进的预制件立体图形可以看出,经过改进后,显示的预制件图形在相互垂直的两个表面的共有棱边处过渡比较平滑、光顺,整个图形的立体感也随之有较大的提高。图4-9和图4-10分别为改进前后的图形在棱边处的放大效果。第51页
第四章预制件立体显示系统的完善图4-9改进前的棱边放大图图4.10改进后的棱边放大图立体显示预制件的程序流程图如下所示第52页
第四章预制件立体显示系统的完善第53页
第五章系统的使用与说明预制件立体显示系统运行于SUN工作站Solaris操作系统,编程语言是C/C++,使用了XGL函数库,窗口环境为OpenWindows。5.1XGL库的安装及相关事项说明5.1.1XGL的目录结构XGL的动态库、字体文件和错误信息文件包含在SolariS产品(Product)中,XGL的包含(ID.Clude)文件和文裆安装在SolariS软件开发包(SDK)中。SolariS产品中的软件包包括:名称内容SUNWxglrt动态库和RomanM字体SUNWxglerSUNWxglrt的本地化错误信息文件SUNWxgldg一般驱动程序的可载流库SUNWxglftXGL字体SDK提供的XGL软件包:名称内容SUNWxglhXGL动态库的补充(包括头文件、事例程序和人工页)SUNWAxgXGL文裆的帮助文件5.1.2XGL的安装事项●设置XGL的环境变量设置环境变量XGLHOME到包含XGL库的路径host%setenvXGLHOME/opt/SUNWits/Graphics—sw/xgl设置LD—LIBRARY—PATH包含$XGLHOME/1ibhost%setenvLDLIBRARYPATH第54页
第五章系统的使用与说明$XGLHOME/1ib:$LD—LIBRARY—PATH●验证XGL的安装使用以下命令:host%cd/opt/SUNWits/GraphiCS—sw/xgl一3.0host%cddemohost%it"lStall—check如果出现一个窗口显示文字表明XGL正运行在系统~h则XGI.已经被正确安装;否则,需要重新安装XGL。5.1.3使用XGL的其他相关事项●XGL程序的编写和编译编写一个XGL应用程序,程序的原文件必须使用语句#include(xgl/x91.h>来包含XGL外部c头文件(用来定义XGL数据类型和结构)并链接XGL库。如果使用工具包,还必须与相应的工具包进行链接。如果应用程序要运行在SUN工作站的硬件上,它还必须与OPENLOOK进行链接。大部分应用程序使用make命令进行编译,它需要事先为要编译的应用程序创建一个Makefile文件。创建Makefile文件时有以下注意事项:1.如果XGL文件不在缺省位置/opt/SUNWits/Graphics—sw/xgl,必须设置环境变量$XGLHOME指向XGL文件。Makefile文件将使用此环境变量,它将指定XGL包含文件(对CC使用一I选项)和XGL库(对CC或ld使用一L选项)的位置。2.由于应用程序将运行在OpenWindows环境,所以Makefile文件中使用环境变量$OPENWINHOME指向/usr/openwin中的OpenWindows文件。3.应用程序使用XView工具包时,需要使用一lxview与XvJew库相链接,使用一lolgx与OPENLOOK图形库相链接;使用Xlib时,需要使用一1Xll与X库相链接:使用OLIT工具包第55页
第五章系统的使用与说明时,需要使用一1xol与OLIT库相链接,使用一ixt与xToolkit库相链接。●XGL程序的运行程序运行时,需要知道XGL动态库lIbx91.SO.3的位置。有两种途径可以使程序获得动态库的位置:一是在链接时使用一R选项;二是将环境变量LD—LIBRARY—PATH设置成包含XGL库文件的路径。XGL运行系统在$xGLHoME/lib/locale/en/I。C—MESSAGES处放置其错误信息文件,在SXGLHOME/1ib/xg]fonts/stroke处放置其字体文件。XGL使用可载流水线绘制图形。可载流水线是包含与设备有关的函数的共享对象库模块,它放置在SXGI.HOME/1ih/pipelines.如果$XGLHOME没有被设置,则可载流水线位于缺省位置/opt/SUNWits/GraphiCS—sw/xgi/1ib/pipelines。●使用make建立XGL事例程序SolariSSDKCD~ROM中包含可XGI。的事例程序,它使用了XGL库对基本的XGL概念进行了讲解。事例程序被安装在$xGLHOME/demo/examples文件夹中,此目录也包含对程序进行编译的Makefile文件。下面例子说明了如何创建并运行XGL事例程序helloworld:example%cd$XGLHOME/demo/examDlesexample%makehello_worldexample%hello—world要编译所有的事例程序,使用makeall命令。●使用SOLARISXGL帮助使用命令%/usr/。penwin/bin/answerbook5.2预制件显示系统的生成第56页
第五章系统的使用与说明系统的牛成大致可以分为以下四个步骤:1.启动SUN工作站,输入用户名和密码,进入OpenWindows环境:Sun20console109in:1ipPassword’丰水木术半木木2.在屏幕上点击鼠标右键,依次点击Programs和CommendTool菜单项,进入行命令窗口,使用命令行进入文件所在目录:1ip%cd/homel/1ip/1ight3.使用make命令对原文件进行编译:1iD%makelight4.输入应用程序名,运行程序:1iD%light在屏幕的空白区域点击鼠标右键,依次选择Programs和FileManager菜单项,启动文件管理器。打开文件夹/homel/1ip/1ight,可以看到整个系统的所有文件。其中,所有的.O和.h文件是系统的原文件和头文件,Makefile文件是编译所需的编译文件,三个“.0”文件是编译后生成的输出文件,light是编译而成的最终的执行文件。要运行程序,也可双击light文件。5.3预制件显示系统的使用说明图5-1预制件显示系统的参数输入窗口第57页
第五章系统的使用Jj说明运行应用程序light进入预制件显示系统,屏幕上生成两个窗口。一个是主窗口,显示光照环境下的预制件真实感图形;另一个是参数输入窗口,是由程序调用XView工具包生成的。如图j一1所示。下面分别对系统中各项参数的使用进行说明:hl(<50):整个预制件包含的单元体行数;N1(<50):显示的预制件其中一个表面包含的单元体列数;N2(<50):显示的预制件另一个表面包含的单元体列数;witem:预制件所用纤维束直径:alfa(20一50):预制件的编织角,实际的预制件编织角角度在20到50度之间;enlarge:目前显示的预制件图形大小与初始图形大小相比的放大倍数。当此参数项的数值小于1.0时,为缩小倍数。其数值应大于0:EyepositionX(>=1):世界坐标系中观察者所处位置的x坐标:EyepositionY(>=1):世界坐标系中观察者所处位置的Y坐标;EyepositionZ(>=1):世界坐标系中观察者所处位置的z坐标;因为世界坐标系以预制件最后端的顶点为其坐标原点,以整个预制件的对角线长度为其单位长度,因此视点的空间坐标X、Y、Z值均大于1.0,可保证整个预制件图形得到显示;Ambient_light(O-1):预制件所处光照条件下环境光亮度;directional-1ight(0一1):预制件所处光照条件下平行光亮度;positional一1ight(O-1):预制件所处光照条件下点光源亮度;三种光源的颜色均设定为白色,其亮度取值为从0到1的浮点值,数值越大,光源越亮。参数设定后,点击按钮SetView,主窗口会生成以目前参数值条件下的新的预制件真实感图形。另外,主窗口包含~个下拉菜单,其中有Close、Fullsize、Resize、Back、Quit等选项,可对主窗口进行通常的关闭、放大、恢复以及退出等操作,这里不再详细介绍。第58页
结柬语结束语建立物体的光照模型是在计算机中对物体进行真实感显示的关键步骤,也是计算机辅助设计中的重要内容。本课题在SUN工作站上利用XGL函数库初步建立了三维编织预制件的光照模型,对其真实感图形进行了较好的显示。预制件立体显示系统的完成有效改善了预制件在计算机中的立体显示效果,提高了预制件的设计精度,对整个三维编织复合材料计算机辅助设计的发展必将起到积极的推动作用。总结整个课题的进展过程,课题的主要工作集中于以下几个方面1.对XGL函数库的熟悉和运用。XGL函数库是SunSPARCWorkstation上SolariS系统的底层函数库。目前,国内关于XGL库的相关资料非常少。在课题中,主要参考其英文随机手册(