CN1116009A - 面向目标的再现系统 - Google Patents

面向目标的再现系统 Download PDF

Info

Publication number
CN1116009A
CN1116009A CN94190814.3A CN94190814A CN1116009A CN 1116009 A CN1116009 A CN 1116009A CN 94190814 A CN94190814 A CN 94190814A CN 1116009 A CN1116009 A CN 1116009A
Authority
CN
China
Prior art keywords
summit
described method
target
data
storer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN94190814.3A
Other languages
English (en)
Inventor
约翰·彼特逊
拉杰夫·杰恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Taligent Inc
Original Assignee
Taligent Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Taligent Inc filed Critical Taligent Inc
Publication of CN1116009A publication Critical patent/CN1116009A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Abstract

本发明涉及以灵活方式在具有存储器并与显示器相连的计算机上处理图形目标的方法和系统。通过把图形目标装入存储器并根据与边缘和三角数据(碎片)分离的模型方式对顶点数据进行的处理以提高再现处理效率的方式来再现图形目标以实现本发明的目的。该方法和系统包括在具有存储器和相连的显示器的计算机上处理图形目标的能力。处理始于接收和存储多个顶点,然后根据这些顶点生成一个表面的三角形。最后用三角形再现表面以便在显示器上形成该表面。

Description

面向目标的再现系统
本发明涉及计算机系统改进,尤其涉及在一个图形显示上再现表面的系统和方法。
本申请的部分内容受版权保护,版权持有者允许用在专利商标局的专利文档或记录中出现的专利文件或专利公开说明书来复制和传真,但要保留所有版权权利。
表面(surface,是指在三维图形中构成一个三维目标最外层边界的层)的图形处理是以美学和人机工程方式表达信息的重要问题。因此,为了以人机工程方式进行信息处理,采用设计来处理不同信息(包括文本和图形信息)的信息处理系统的现代图形系统变得越来越复杂。
先有技术的软件操作系统结构受到其表面再现(render-ing,是指在三维图形中把一个模型从一给定摄象位置转换成基于屏幕的视图的处理)能力的限制。这种限制是指该操作系统结构不能给定外设,如果结构未被设计或不能被修改以支持该外设的话。进而,先有技术结构只能以单一的预定方式处理表面再现信息。
因此,本发明的一个主要目的是在具有存储器以及显示器的计算机中以灵活方式对图形目标进行处理。通过把图形目标装入存储器,并根据顶点数据以模块方式(与边缘和三角数据(碎片)相分离)再现图形目标以提高再现处理的效率的方法以实现本发明的目的。
本发明的方法和系统包括在具有存储器和显示器的计算机上处理图形目标的能力。该处理始于接收多个顶点并将其存储起来。然后,根据这些顶点生成多个用于表面的三角形。最后,用三角形再现表面以便在显示器上形成表面。
图1是根据本发明最佳实施例的个人计算机系统的框图;
图2展示了根据本发明最佳实施例的碎片;
图3示出了根据本发明最佳实施例的各种表面再现;
图4是根据本发明最佳实施例的详细逻辑流程图;
图5是根据本发明最佳实施例的表面再现系列。
图6是根据本发明最佳实施例从一个三维数字化仪获取数据的系统;
图7示出了根据本发明最佳实施例测定的Z坐标以及蕴含的X和Y坐标;
图8示出了根据本发明最佳实施例从一个有规律的间隔格栅得到的碎片的布局;
图9示出了根据本发明最佳实施例的支持物,它作为一有限元素模型而被分析。
图10示出了根据本发明最佳实施例的一个网状模型;以及
图11示出了根据本发明最佳实施例利用应变能的彩色显示得到的表面再现。
本发明最好由个人计算机操作系统的上下文实现。这类计算机包括IBM PS/2或Apple Macintosh计算机。示意性的硬件环境如图1所示,它示出了一个根据发明主题的典型硬件的计算机结构。该计算机包括一个具有一个内部非易失性存储器11的中央处理器10(例如常规的微处理器)以及多个与系统总线12相连的其他部件。图1所示的计算机工作站包括RAM14,ROM16,用于连接外围设备(例如磁盘20和软盘21)到总线的I/O适配器18,用于连接键盘24,鼠标器26,扬声器28,麦克风32和/或其他用户接口设备(例如触摸屏幕图中没显示)到总线的用户接口适配器22,用于把计算机连接到数据处理网络23的通讯适配器34,以及把总线连到显示设备38的显示适配器36。该计算机装有象Ap-ple System/7之类的操作系统。
在一个最佳实施例中,本发明由面向目标的编程技术以C++语言实现。正如本领域的技术人员所知,面向目标的编程(OOP)的目标包括数据结构和在数据上的操作的软件实体。这些元素一起使目标分别成型为任意实际的现实实体。该现实实体是根据由数据元素表示的特性以及由其数据操纵功能表示的行为所成型的。以这种方式,目标可成型为具体事物,例如人和计算机;它们也可以成型为数字或几何概念之类的抽象概念。目标技术受益于三个基本原理:封装(en-capsulation),多形性(polymorphism)以及继承(inheritance)。
目标隐藏,或封装,它们的数据的内部结构以及使其功能工作的算法,代之于展现这些实施细节,目标表达表示其抽象而无其他信息的界面。多形性较之封装又进了一步,该概念是许多形状而一个界面。一个软件部件可以生成另一个部件的请求而无需准确知道那个部件是什么。接收该请求的部件对其进行翻译并根据其变量和数据判定如何执行该请求。第三个原理是继承性,它使开发者可以再次使用以前所有的设计和编码。该特性使开发者不必由擦除来生成软件。反之,通过继承,开发者得到具有继承行为的子分类,然后由开发者定制以满足其特定需求。
先有技术的途径是将目标和分类库在一个过程环境中分层。在市场上的许多应用程序结构采用这种设计方式。在这种设计中,在一个单一操作系统的顶部有一个或多个目标层。虽然该方式利用目标分层中的所有封装,多形和继承原理,且实际上是对过程编程技术的实质改进,但其仍具有局限。这些困难来自于用户易于再使用其自己的目标,而难于使用来自于其他系统的目标,而且开发者仍然需要由过程操作系统调用进入较低的非目标层。
面向目标编程的另一方面是应用程序开发的结构(framework)。对结构最合理的定义之一是由易里露易斯大学(University of Illinois)的强森(Ralph E.Johnson)和普渡大学的卢梭(Vincent F.Russo)作出的。在题为“重新使用面向目标的设计(Reusing Object—Oriented Design)”一文中,(该文章发表于1991年的University of Illinois tech report(UIUCD-CS91—1696),它们提出以下定义:“一个抽象分类是设计一组目标,这些目标共同执行一组任务。因此,一个结构是一组共同执行定义的计算任务组的目标分类”。从编程观点出发,结构实际上是多组内连的目标分类,这些目标分类提供了工作应用程序的预先制作结构。例如,一个用户界面结构可以提供图形视窗,卷动条,项目表等支持和“系统预置”行为。由于结构基于目标技术,该行为可被继承和置换以使开发者扩展该结构在特定的知识领域生成定制的方案。由于程序员不改变原始码而即可扩展该软件,这便成为一个超越传统编程的主要优点。此外,开发者不会盲目地通过编码层次工作,因为该结构提供了体系结构指导和模型,但同时又将它们与提供与问题范畴相关的特定行为分离开来。
从商业角度来看,结构可视为封装或实施一个特定的知识领域中专门知识的方式。企业开发机构,独立的软件销售商以及系统集成商已经获取了特定领域的专门知识,例如前述例子中的制造、财会或现金交易。这一专门知识实现于其编码之中。结构使企业机构捕获和组装该专门知识的共同特性,其作法是将专门知识实现在机构的编码中。首先,这使得开发者得以生成或扩展一个利用该专门知识的应用程序,因而问题一旦被解决,商业定律和设计就可以一直地实施和使用。另外,结构和在结构后面实现的知识对已经获取了统管和销售全过程的市场的知识(例如制造、财会)的那些组织有策略的有益含义,或为了包装,再销售,以及推广应用其知识,并进而进行技术开发及普及,生物技术需要有一个分配机制。
历史上,结构只是在最近才成为个人计算机的主导概念。这一进展得利于面向目标语言的出现,例如C++传统上,C++是最近通常在UNIX系统上以及研究人员的工作站上发现的,而不是在商业个人计算机上。正是象C++及其他面向目标的语言(例如Smalltalk和其他)使得许多大学和研究项目能产生今天商用结构和类别库的先驱。其中的例子包括斯坦福大学(Stanford University)的InterViews,卡内基—麦伦大学(Carnegie—Mellon University)的Andrew toolkit以及苏黎世大学(University of Zurich)的ET++结构。
有许多结构,其取决于所关心的系统级以及问题的性质。结构的类型范围包括从辅助开发用户界面的应用程序结构到提供通讯、打印,文档系统支持,以及图形之类的基本系统软件服务的低级结构。应用程序结构的商用例子是MacApp(Apple),Bedrock(Symantec),OWL(Borland),NeXTStep App Kit(NeXT)以及Smalltalk—80MVC(ParcPlace)等等。
具有结构的编码需要惯于其他系统的开发者有新的思维方式。事实上,它与常规的“编程”不同。在以前的操作系统(例如DOS或UNIX)中,开发者自己的程序提供了所有构造。操作系统通过系统调用提供服务—开发者的程序在需要服务时进行调用并在服务提供后控制返回。程序构造基于控制流程,它以开发者编写的码所实现。
而当采用结构时,该过程成为逆向,开发者不再负责流程控制。开发者必须提前根据执行的流程来理解编程任务。反之,必须根据目标的响应进行思考。这必须根据结构来决定何时执行任务。开发者编写的例行程序由不是开发者写的编码所驱动,而且开发者甚至从未见过这些编码。控制流程的转换对只是在过程编程有经验的开发者而言可能是较大的精神障碍。然而,一旦这一技术被理解,结构编程较之其他编程所需的工作将大为减少。
应用结构为开发者以同样方式提供预定功能性,系统结构(例如包括在最佳实施例中的那些)相应地有同样概念,通过提供系统级服务,储如系统程序这一类的开发者用子类别置换以生成定制的方案。例如,考虑一个可以提供基础以支持新的及多用途的设备(例如声频、视频、MIDI、动画电等等)的多媒体结构,需要支持新型设备的开发者必须写一个设备驱动程序,采用结构来完成此任务的话,开发者只需提供该新设备的具体特征以及行为标准。
在这种情况下,开发者将为多媒体结构调用的特定成员功能提供实施,开发者所获得的直接好处是用于每类设备的通用码已由多媒体结构提供了。这意味着开发者所要编定、测试及调试的设备驱动程序码要少许多,使用系统结构的另一例子是对小计算机系统接口(SCSI)设备,NuBus卡以及图形设备有不同的I/O结构。由于具有继承的功能性,每个结构为设备类别中发现的通用功能性提供支持。其他开发者则可以依据这些对所有设备保持一致的界面。
一个最佳实施例采用了结构的概念并将其用于整个系统之中。对商用或公司开发者,系统集成商,或OEM而言,这意味着诸如MacApp之类的结构所展示的优点不仅可影响文本和用户界面一类的应用层级,亦可影响例如图形,多媒体,文档系统,I/O,测试等服务的系统级。
在最佳实施例的结构中生成应用程序的过程很类似于依附于结构协议的特定谜块编写。这种方式中,编程的整个概念改变了,取代调用多个API层级的逐行编写,通过从环境中的预先存在的结构中衍生类别并加入新行为和/或置换继承的行为的方式而进行软件开发。
如此,开发者的应用程序成为由所有其他结构应用程序编写和共用的代码集。这是一个非常强有力的概念,因为开发者将能够根据相互的工作进行工作。这还为开发者提供了按照需要进行客户定制的灵活性。一些结构将按原样使用。在某些情况下,客户化的量将是最小,所以开发者插入的谜块最小。而在另些情况下,开发者可进行很大改动并生成全新的东西。在图1所示的最佳实施例中,位于RAM14中并由CPU10控制的程序负责管理利用面向目标的图形结构多种任务。
一个最佳实施例采用新体系结构来存储三维数据(这种三维数据用于定义例如部分表面图形目标),由现实源扫描或数字化的数据,例如主体CAT扫描之类的图象再现,以及从其他计算(即液流量)近似而来的形状。在最佳实施例中,这些数据库类型称为:离散化数据”,因为要再现的形状是由离散点而非连续函数所确定的(注意,数据可根据某些连续操作进行初始定义。但是,应用程序用离散点,即液流量,参数表面,或内含表面,来指定要再现的表面)。
TSampledSunface3D目标通过提供允许客户管理数据的结构而提供给客户。该目标是一个C++目标,正如上述说明书引言中所述。为了再现客户数据的图象,所需要的是客户生成碎片(shard是指在三维图形中一个曲成三维表面的小三角形部分。在再现处理过程中,三维曲线表面被分为许多小的线性片它们被称为碎片,因为它们是由一些其他几何形定义的片组成的。碎片称为具有任选浓淡信息的三维三角形。“碎片”一词用于代之三角形一词,是为了叙述再现基单元,因为一个碎片的顶点包括除几何信息之外的其他信息(色彩,构造映射坐标,法线等)。采用与三角形相连的顶点作为确定要再现的形状的基本媒介为离散点定义的三维表面数据提供了一个简单的公分图。
由客户生成的离散数据不仅限于几何信息,还有法线,色彩,以及结构映射标志,可在一个碎片的每个顶点处提供。这使得应用程序对数据的外观具有详尽的控制,并将除目标的基本几何信息之外的其他变量结合到合成的再现图象中。用于在顶点处提供色彩信息的两个已知应用程序包括采用色彩显示应变能的有限元件模型以及记录目标的色彩及其形状的三维扫描仪。
为提高效率,碎片的拓扑结构与其顶点分离。当再现离散数据时,将每个顶点信息与碎片分开处理。这是由于几个碎片通常共用一个顶点。例如在图2中,在点5处的取样栅格由六个碎片共用。把碎片与顶点分开处理可使再现设备对每个顶点只进行一次操作,例如把点转换成屏幕空间。
为了实施TSampled Surface3D子类别,客户必须提供一个迭代程序以便成批返回顶点。每个顶点在空间中定义一个三维点,但也可以包括其他信息,例如色彩,结构映射坐标等。子类别必须提供的下一例行程序生成迭代程序,它产生三个进入碎片的顶点的顶点陈列中心的参数。所以,就图2所示网格而言,第一个调用返回一个有16个顶点的陈列。迭代程序目标依次必须提供另一迭代程序,它生成若干组三参数,例如(0,5,1),(0,4,5),(1,6,2),(1,5,6)等等,用于上述图中的18个碎片。注意顺序很重要,当在模型空间中从表面的外部看时,顶点应该是顺时钟方向的。
与该组参数一起,一组标帜被返回,它们指示碎片的边缘是否可见。这些标帜在碎片构成时被检查。例如在图3中,在300处的再现使所有碎片边缘成形。在310处的再现中,已经没有了对角边,而在320处,则只绘制了数据边缘。这些标帜也管理目标以避免重复构成同样的边。该子类别无需一次便生成所有顶点。这使得目标在再现处理过程中在生成顶点和碎片之间交替变化。这对在浮区生成点而且不想一次便存储整个目标的顶点的数据组是有用的。该再现程序一直请求成批顶点和碎片迭代程序,直到不再可用之时(即,Copy-VertexInfo方法返回FALSE,以指示不再有碎片可用)。
                  类别结构
以C++实现的TSampledSurface3D目标看起来如下:
ciass TSampledSuriace3D{
   virtual TShardChunkIterator*CreateShardChunkIterator()=0;   //See section below on streaming   virtual StreamOutAsShards(TStream&towhere)const;
 }
 class TShardChunkIterator {
  //TShadingInfo has point,normal,color,texture coords,etc
  //Returns TRUE if there is nore data to fetch;copies data into the data parameter
   virtual Boolean CopyVertexInfo(TShadingInfoArray&data)=0;
   virtual TShardIterator*GetShardIterator()const=0;
  //Used for optimization,see below
   virtual SetCamera(const TCamera&cam,Boolean cullBackFaces)=0;}
图4是根据本发明的最佳实施例再现一个SampledSun-face 3D目标的详细逻辑流程图。处理始于功能框400,它提出了再现操作的革新。然后,为了再现一个离散表面,再现程序在功能框402中生成一个TShardChunkIterator。在框404中提出一任选步骤,以确定从一个摄象目标定义的角度来看,目标的哪一部分是可见的。然后它调用迭代程序的Copy-VertexInfo(),如功能框406所示,以获取该表面的每个顶点信息的复制。在功能框410处进行测试以确定是否剩下任何顶点。若否,则处理完成于412所示。若还有顶点要处理,则在功能框414处由再现程序将特定三维景象的数据初始化(即将点转换成屏幕空间),然后在实际绘制目标时调用TShardIterator。该处理以“块”的形式继续,如功能框420所示,每一块始于调用CopyVertexInfo,并结束于CopyVertexIn-fo返回FALSE,其指示所有数据已从目标中检出,如判别框430所检测的。不必让再现程序共用每块之间的顶点,因为在两个块之间衔接处的顶点数量相对于每块中的顶点数(0
Figure A9419081400161
而言很小。再现处理的细节在图5的实例中进行叙还。
图5示出了被分成四块的表面500。TShardChunkIterator用于再现表面510,而TShardIterator再现表面520。TShadingInfoArray是一个目标阵列,它包括在TShadingInfo中的信息(点,法线,色彩,结构坐标,切线等)。TShardIterator与再现程序所用的TSampledSurface3D。(如图4中的功能框414所述)有关。TShardIterator的类别结构如下所示:
class TShardIterator{
  pubüc:

       enurn{ kFrontFace,kBackFace,kUnknown}EFrontFaceFlag;

       enurn{ kClipped,kUnclipped,kUnknown}EClipFlag;

       virtual Boolean GetNextShard(long&i0,long&i1,long&i2,

                                Boolean&edge01vis,

                                Boolean&edge12vis,

                                Boolean&edge20vis);
//Second version with optional flags for render optimization,see below
     virtual Boolean GetNextShard(long&i0,long&i1,long&i2,

                                Boolean& edge01vis,

                                Boolean& edge12vis,
                                Boolean& edge20vis,

                                EFrontFaceFlag frontFlag,

                                EClipFlag clipFlag);
};
TSampledSurface目标再现码如下所示:
  TGrafDevice∷RenderSampledSurface3D(TSampledSurface3D& dd3d)
{ 
  TShadingInfoArray vertices;
  TShardChunkIterator*dd3Diter=dd3d.CreateShardChunkIterator();
 //The outer loop processes″chunks″of data from the SS3D
  while (dd3Diter->CopyVertexInfo(vertices))
 {

    //Take the generic TShadingInfo data,and add device level information

    TDeviceVertices devVerts=PrepareData(vertices);

    TShardIterator*shardIter=dd3Diter->GetShardIterator();

    while(shardIter->GetNextShard(i0,i1,i2,f0,f1,f2))

   {

       RenderShard(devVerts[i0],devVerts[i1],devVerts[i2]);

    }

    delete shardIter;
  }
  delete dd3Diter;
}
值i0,i1和i2是整数,它们被编入由CopyVertexInfo()返回的阵列中。注意TSampledSurface3D目标是可成流的(streamable)。可成流涉及采用使目标在以后以可被重新构成的方式把目标的内容编写成数据流或文档。若该目标在同样机器中正在成流,则可采用基本子类别,因为抽取再现数据的库代码是可用的。若一个SampledSurface3D目标要假脱机或通过一个网络流向一个没有定义该子类别的库的其他机器,则可采用TSampledSurface3D的StreamOutAsShards方法。实施这一过程的例子示于下面:
TSampledSurface3D∷StreamOutAsShards(TStream&towhere)
{

    TShadingInfoArray vertices;

    TShardChunkIterator*ss3Diter=CreateShardChunkIterator();

    while(ss3Diter.CopyVertexInfo(vertices))
   {
				
				<dp n="d15"/>
      TRUE>>=towhere;
 //Flag indicating more data available

      vertices>>=towhere;
 //Stream out the vertices
 TShardIterator*shardIter=ss3Diter.GetShardIterator();

       while(sbardIter->GetNextShard(i0,i1,i2,f0,f1,f2))

      {

           i0>>=towhere;
           i1>>=towhere;
 //Stream out indices into the block of vertices

           i2>>=towhere;

           f0>>=towhere;

           f1>>=towhere;

           f2>>=towhere;

       }

       -1L>>=towhere;
 //Sentinel indicating no more shards.

      delete shardIter;
   }

    FALSE>>=towhere;
 //Flag no more data available.
   delete ss3Diter;
}
一个最佳实施例任选两个最佳方案来大力改善性能,如图4中的功能框440和450所示。第一个方案是忽略表面的后面部分(若后面是处于打开状态的话),如功能框440所示;第二个方案则是忽略超出荧光屏幕的表面部分,如功能框450所示。TSampledSurface3D通过为再现程序提供其他两个方法来利用这些优化方案。这两个方法是SetCamera和返回限制标帜的TShardIterator的版本。SetCamera采用了一个参数,它指向指定要显示目标的三维视图的摄象目标。再现程序在启动CopyVertexInfo之前调用SetCamera。当再现碎片时(如功能框460所示),再现程序检查每个碎片的返回限制标帜以确定是否有必要进行限制或后面挑选测试。对每个碎片,有两个限制标帜值返回。这些标帜指示:
·该碎片已知不被限制(再现程序可以越过限制测试)
·该碎片可以或不可以被限制(再现程序必须测试它)
·该碎片是后面(若后面挑选操作被切断)
·该碎片是前面
·该碎片的取向不知且必须被测试
为说明这些情况,考虑实现一个三维高度场的子类别。THeightField3D该高度场实际上是一个平面矩形,其在每个格栅点处从表示高度的平面的Z方向的扰动很小。在Set-Camera调用中THeightField3D目标首先检查高度场的基平面。若该平面是后面(由Camera的IsBackfacing调用确定),且该后面(backface)是挑选的,则目标知道无需关心生成任何数据(即CopyVertexInfo立即返回FALSE)。类似地,THeightField3D可调用在高度场平面四个角上的摄象机的GetClipCode方法。若该返回的限制码指示总高度场超出屏幕,则可跳过再现。类似地,若限制和后面测试指示整个目标是前面且/或无限制的,则再现程序可以跳过对单独碎片的这些测试。
这些优化亦可在再现的离散数据组上完成。例如,THeightField3D可在九个块中再现数据(即在返回FALSE前有九个对CopyVertexInfo的调用)。这些块中的每一个可以进行后面和限制测试。因此,若一个角要被完全限制,只要跳过它即可。
来自三维数字化仪的示例数据。
假设来自一个三维测距仪型的数字化仪的数据作为一个1000×1000高度值存储起来。这些数据点将被用作再现表面的Z坐标。图6示出了一个测距仪系统的示例图。测距仪600的测距范围是已知的,其被分为1000×1000的相等间隔。610处示出了被扫描的目标,测距仪摄像机示于620处,而存储再现数据的计算机示于630。计算机630对应于图1的计算机。图7示出了从摄像机接收的测距仪数据。从测距仪而来的数据只有Z坐标720,X坐标700和Y坐标710作为系统蕴含于1000×1000的数据点陈列。
由于1,000,000是很大的数据点量,所以放在10个较小单元(称为块)中实现这些数据。使用上述展示为最佳实施例的再现系统来再现这一表面要求实施下述例行程序。第一个便是TShardChunkIterator∷CopyVertexInfo()。这一程序
将从扫描仪获取头10,000个数据,并提供X和Y坐标。用
于处理由摄象机接收的数据的代码展示如下:
Boolean
TShardChunkIterator∷CopyVertexInfo(TShadingInfoArray&amp;data)
{

    //fRawData is a 1,000,000element array with the 1K×1K

    //collection of data from the scanner.fChunkCount keeps track of

    //how many times CopyVertexInfo has been called.

    if(fChunkCount==10)

          return FALSE;       //All data has been copied out

    for(i=0;i<100;i++)    //100 rows in this chunk

       for(j=0;j<1000;j++)//1000 items per row

      {

           data(i*1000+j]=kDefault;    //Set default color,etc.

           TGPoint3D*p=&amp;data[i*1000+j].fPoint;

           p->fX=j;         //Generate implied X and Y

    P->fY=fChunkCount*1000+i

           p->fZ=fRawData[(fChunkCount*1000+i)*1000+j];

     }
   fChunkCount++;
   return TRUE;
}
注意根据顶点的原始数据,再现系统将为每个顶点计算一次法线和浓淡值(从而免除了为每个再现的三角形进行冗余计算的负担)。图8示出了根据本发明一个最佳实施例来自定距格栅的碎片的布局。在800处,T=三角形数,在810处,R=每一行取样的数目。
下一步是生成一个碎片迭代程序,以生成用于从扫描数据再现表面的三角形,如图4的功能框414所示。这一处理生成编入到产生CopyVertexInfo的顶点信息中的参数;即只有如何把三角形挂钩的拓扑是需要的。这是通过图8的800和810所示的标号方案实现的。实施GetNextShard的方法如下:
TShardIterator∷GetNextShard(long&amp;i0,long&amp;il,long&amp;i2.

                               Boolean&amp;edge0lvis,

                               Boole3n&amp;edge12vis,

                               Boolean&amp;edge20vis)
{
     //fShardNumber is the number of the shard we ve generated.

     if(fShardNumber==1000*100)

           return FALSE;        //All shard for this chunk generated

     if(even(fShardNumber))

     {

           i0=fShardNumber/2;

           i1=fShardNumber/2+1000;

           i2=fShardNumber/2+1;

           //Show edge visibility,diagonal edges are not visible.

            edge01vis=TRUE;edge12vis=FALSE;edge20vis=TRUE;
     }

    else//odd#shard

    {

          i0=fShardNumber/2+1;
          i1=fShardNumber/2+1000;
          i2=fShardNumber/2+1000+1;

         //Show edge visibility,diagonal edges are not visible.

         edge01vis=FALSE;edge12vis=TRUE;edge20vis=TRUE;

    }

    fShardNumber++;

    return TRUE;
 }
来自有限之网格再现的示例数据
三维模型软件生成一个有限之模型(FEM)。通常是设计一个部分来满足特定的形状要求,然后再进行“衔接(mesh)”,或者由FEM软件将其分成碎片。在碎片的顶点处,FEM软件计算顶点的应变能值。应变能估算通常被转换成色彩梯度以便给出该部分张力的图形显示。图9示出了由FEM方法分析的支撑物。图10示出了由FEM软件生成的网格模型。除了X’Y’Z几何位置信息之外,每个编号的顶点都有一个代表该点应变能的值。由FEM软件生成的模型可作为顶点表存起来,亦可作为由顶点即(0,5,10)(1,5,6)(5,10,11),(1,6,2)等形成的三角形碎片表存起来,其中,括号里的数涉及顶点的参数。
为了用上述的SampledSurface3D结构再现这一模型,将CopyVertexInfo例行程序定义如下(假设FEM数据已装在其他地方):
Boolean
TShardChunkIterator∷CopyVertexInfo(TShadingInfoArray&amp;data)
{

     for(i=0;i<NumberFEMVertices;i++)

    {

           data[i].fPoint.fX=FEMdataXCoordinate[i];

           data[i].fPoint.fY=FEMdataYCoordinate[i];

           data[i].fPoint.fZ=FEMdataZCoordinate[i];

           //Set the color according to the strain energy at the

           //vertex.Energy to Color performs some user-defined

           //mapping,perhaps via a lookup table.

           data.fBaseColor[i]=EnergyToColor(FEMdataStrain[i]);

      }

     //This assumes all data is processed in one step.For large data sets,

     //this can be broken into multiple calls,like example#1.

    return FALSE;
 }
ShardIterator也很简单,因为它只返回由FEM程序生成的数据。
TShardIterator∷GetNextShard(long&amp;i0,long&amp;i1,long&amp;i2,

                                   Boolean&amp;edge01vis,

                                   Boolean&amp;edge12vis,

                                   Boolean&amp;edge20vis)
{

    if(fNumberOfShards>FEMdataNumberOfShards)

          return FALSE;   //All shards rendered

    i0=FEMdataV0index[fNumberOfShards];

    i1=FEMdataV1index[fNumberOfShards];

    i2=FEMdataV2index[fNumberOfShards];

    //Edge visibility may or may not be useful

    edge01vis=FALSE;edge12vis=FALSE;edge20vis=FALSE;

    fNumberOfShards++;

    return TRUE;
}
随着碎片再现,再现程序用应变能生成的色彩来产生该部分张力分布的平滑浓淡(shade是指在三维图形中改变通过目标的色彩和亮度以模拟其真实形状)图,如图11所示。应变能不是可以该方式显示的唯一变量,象温度分布等亦可以类似方式显示。该技术通常用于“科学显象”应用所生成的数据库。
再现系统的类似应用亦包括部分表面生成,蕴含表面取样,以及参数表面再现。

Claims (22)

1.在具有存储器和显示器的计算机上进行图形目标处理的方法,其特征在于包括以下步骤:
(a)接收多个顶点并将其存入存储器以使每个顶点的Z值具有蕴含的X值和Y值;
(b)从多个顶点中生成一个表面的三角形;以及
(c)用三角形再现表面以便在显示器上形成该表面。
2.权利要求1所述方法,还包括为每个顶点计算法线和浓淡值并用法线和浓淡值改进表面再现的步骤。
3.权利要求2所述方法,还包括为每个顶点生成一个标帜以控制由于限制而导致的可见性的步骤。
4.权利要求2所述方法,还包括为每个顶点生成一个标帜以控制由于后面导致的可见性的步骤。
5.权利要求2所述方法,还包括为每个顶点生成一个标帜以控制一个特定三角形边的可见性的步骤。
6.权利要求1所述方法,还包括存储每个顶点的色彩信息的步骤。
7.权利要求1所述方法,还包括存储每个顶点的结构信息的步骤。
8.权利要求1所述方法,还包括存储每个顶点的浓淡信息的步骤。
9.一种处理图形目标的装置,其特征在于包括:
(a)一个计算机;
(b)一个位于计算机中的存储器;
(c)一个与计算机相连的显示器;
(d)一个结构装置,用于生成一个图形目标并将图形信息存在存储器中;
(e)该结构装置包括从图形信息中生成一个表面的三角形的装置;以及
(f)该结构装置包括用三角形再现图形目标的表面从而在显示器上形成该表面的装置。
10.权利要求9所述装置,还包括接收多个顶点并将其存入存储器以便每个顶点的Z值具有蕴含的X值和Y值的装置。
11.权利要求10所述装置,还包括计算每个顶点的法线和浓淡值并据其改进表面再现的装置。
12.权利要求11所述装置,还包括为每个顶点生成一个标帜以控制由于限制导致的可见性的装置。
13.权利要求11所述装置,还包括为每个顶点生成一个标帜以控制由于后面导致的可见性的装置。
14.权利要求11所述装置,还包括为每个顶点生成一个标帜以控制一个特定三角形的边的可见性的装置。
15.权利要求9所述装置,还包括存储每个顶点的色彩信息的装置。
16.权利要求9所述装置,还包括存储每个顶点的结构信息的装置。
17.权利要求9所述装置,还包括存储每个顶点的浓淡信息的装置。
18.一种在具有存储器并与显示器相连的计算机上处理图形目标的方法,其特征在于包括以下步骤:
(a)生成一个图形目标并将与该目标相关的图形信息存在存储器中;
(b)从图形信息中生成一个表面的三角形,以及
(c)用三角形再现图形目标的表面以便在显示器上形成该表面。
19.权利要求8所述方法,还包括把多个顶点接收到存储器中的步骤。
20.权利要求19所述方法,还包括存储每个顶点的系数的步骤。
21.权利要求20所述方法,还包括根据每个顶点的系数把色彩分配给再现的表面的步骤。
22.权利要求21所述方法,还包括根据每个顶点的系数把浓淡分配给再现的表面的步骤。
CN94190814.3A 1993-07-27 1994-01-03 面向目标的再现系统 Pending CN1116009A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US9760293A 1993-07-27 1993-07-27
US08/097,602 1993-07-27

Publications (1)

Publication Number Publication Date
CN1116009A true CN1116009A (zh) 1996-01-31

Family

ID=22264241

Family Applications (1)

Application Number Title Priority Date Filing Date
CN94190814.3A Pending CN1116009A (zh) 1993-07-27 1994-01-03 面向目标的再现系统

Country Status (8)

Country Link
US (1) US5729671A (zh)
EP (1) EP0713594B1 (zh)
JP (1) JPH09500994A (zh)
CN (1) CN1116009A (zh)
AU (1) AU6081494A (zh)
CA (1) CA2147847C (zh)
DE (1) DE69406296T2 (zh)
WO (1) WO1995004330A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100339869C (zh) * 2002-12-20 2007-09-26 Lm爱立信电话有限公司 使用最小深度遮挡剔除和z字形遍历的图形处理设备及方法

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682468A (en) 1995-01-23 1997-10-28 Intergraph Corporation OLE for design and modeling
US6192419B1 (en) 1997-06-18 2001-02-20 International Business Machines Corporation Collaborative framework for disparate application programs
US5941945A (en) * 1997-06-18 1999-08-24 International Business Machines Corporation Interest-based collaborative framework
US6378001B1 (en) 1997-06-18 2002-04-23 International Business Machines Corp. Collaborative framework with shared objects
GB2351217B (en) * 1997-11-07 2001-06-13 Sega Enterprises Kk Image processing apparatus and method
US6320580B1 (en) * 1997-11-07 2001-11-20 Sega Enterprises, Ltd. Image processing apparatus
US6606095B1 (en) * 1998-06-08 2003-08-12 Microsoft Corporation Compression of animated geometry using basis decomposition
US6259461B1 (en) * 1998-10-14 2001-07-10 Hewlett Packard Company System and method for accelerating the rendering of graphics in a multi-pass rendering environment
DE10000790C2 (de) * 2000-01-11 2003-11-13 Map Medizin Technologie Gmbh Atemmasekenanordnung und Verfahren zur Bereitstellung derselben
US6657617B2 (en) 2001-06-25 2003-12-02 International Business Machines Corporation Method, apparatus and computer program product for three dimensional text creation
FR2827057B1 (fr) * 2001-07-03 2003-11-28 Plastic Omnium Cie Procede de simulation d'aspect d'un assemblage de pieces
KR100914120B1 (ko) * 2002-04-15 2009-08-27 마이크로소프트 코포레이션 비디오 렌더러와 그래픽 디바이스 드라이버, 및 이들간의 상호 작용을 용이하게 하기 위한 장치, 시스템, 방법 및 전자적으로 액세스 가능한 매체
US7048962B2 (en) * 2002-05-02 2006-05-23 Labcoat, Ltd. Stent coating device
US7709048B2 (en) * 2002-05-02 2010-05-04 Labcoat, Ltd. Method and apparatus for coating a medical device
US6645547B1 (en) * 2002-05-02 2003-11-11 Labcoat Ltd. Stent coating device
US7043621B2 (en) * 2003-05-16 2006-05-09 Hewlett-Packard Development Company, L.P. Sharding method and apparatus using directed graphs
US8269777B2 (en) * 2003-12-12 2012-09-18 Presisio Labs, Inc. Method and system for system visualization
WO2009110725A2 (ko) * 2008-03-04 2009-09-11 주식회사 코드에스이 3차원 응용프로그램 프레임워크 구조 및 이를 기반으로 하는 응용프로그램 구현 방법과, 3차원 응용소프트웨어 프레임워크 기반의 자동 테스트 시스템 및 그 방법
EP2701090A1 (en) * 2012-08-22 2014-02-26 Aahlstö OÜ Method and system for enforcing 3D restricted rights in a rapid manufacturing and prototyping environment
CN104200520B (zh) * 2014-08-29 2017-05-10 杭州易上弘网络技术有限公司 一种基于部件模型组合的三维云渲染方法及三维云渲染系统
US10977128B1 (en) 2015-06-16 2021-04-13 Amazon Technologies, Inc. Adaptive data loss mitigation for redundancy coding systems
US9998150B1 (en) 2015-06-16 2018-06-12 Amazon Technologies, Inc. Layered data redundancy coding techniques for layer-local data recovery
US10298259B1 (en) 2015-06-16 2019-05-21 Amazon Technologies, Inc. Multi-layered data redundancy coding techniques
US10270476B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Failure mode-sensitive layered redundancy coding techniques
US10270475B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Layered redundancy coding for encoded parity data
US10394762B1 (en) 2015-07-01 2019-08-27 Amazon Technologies, Inc. Determining data redundancy in grid encoded data storage systems
US10162704B1 (en) 2015-07-01 2018-12-25 Amazon Technologies, Inc. Grid encoded data storage systems for efficient data repair
US10089176B1 (en) 2015-07-01 2018-10-02 Amazon Technologies, Inc. Incremental updates of grid encoded data storage systems
US9904589B1 (en) 2015-07-01 2018-02-27 Amazon Technologies, Inc. Incremental media size extension for grid encoded data storage systems
US10198311B1 (en) 2015-07-01 2019-02-05 Amazon Technologies, Inc. Cross-datacenter validation of grid encoded data storage systems
US10108819B1 (en) 2015-07-01 2018-10-23 Amazon Technologies, Inc. Cross-datacenter extension of grid encoded data storage systems
US9998539B1 (en) * 2015-07-01 2018-06-12 Amazon Technologies, Inc. Non-parity in grid encoded data storage systems
US9959167B1 (en) 2015-07-01 2018-05-01 Amazon Technologies, Inc. Rebundling grid encoded data storage systems
US9928141B1 (en) 2015-09-21 2018-03-27 Amazon Technologies, Inc. Exploiting variable media size in grid encoded data storage systems
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
US9940474B1 (en) 2015-09-29 2018-04-10 Amazon Technologies, Inc. Techniques and systems for data segregation in data storage systems
US10394789B1 (en) 2015-12-07 2019-08-27 Amazon Technologies, Inc. Techniques and systems for scalable request handling in data processing systems
US9785495B1 (en) 2015-12-14 2017-10-10 Amazon Technologies, Inc. Techniques and systems for detecting anomalous operational data
US10642813B1 (en) 2015-12-14 2020-05-05 Amazon Technologies, Inc. Techniques and systems for storage and processing of operational data
US10248793B1 (en) 2015-12-16 2019-04-02 Amazon Technologies, Inc. Techniques and systems for durable encryption and deletion in data storage systems
US10102065B1 (en) 2015-12-17 2018-10-16 Amazon Technologies, Inc. Localized failure mode decorrelation in redundancy encoded data storage systems
US10324790B1 (en) 2015-12-17 2019-06-18 Amazon Technologies, Inc. Flexible data storage device mapping for data storage systems
US10127105B1 (en) 2015-12-17 2018-11-13 Amazon Technologies, Inc. Techniques for extending grids in data storage systems
US10180912B1 (en) 2015-12-17 2019-01-15 Amazon Technologies, Inc. Techniques and systems for data segregation in redundancy coded data storage systems
US10235402B1 (en) 2015-12-17 2019-03-19 Amazon Technologies, Inc. Techniques for combining grid-encoded data storage systems
US10592336B1 (en) 2016-03-24 2020-03-17 Amazon Technologies, Inc. Layered indexing for asynchronous retrieval of redundancy coded data
US10061668B1 (en) 2016-03-28 2018-08-28 Amazon Technologies, Inc. Local storage clustering for redundancy coded data storage system
US10366062B1 (en) 2016-03-28 2019-07-30 Amazon Technologies, Inc. Cycled clustering for redundancy coded data storage systems
US10678664B1 (en) 2016-03-28 2020-06-09 Amazon Technologies, Inc. Hybridized storage operation for redundancy coded data storage systems
US11137980B1 (en) 2016-09-27 2021-10-05 Amazon Technologies, Inc. Monotonic time-based data storage
US11281624B1 (en) 2016-09-28 2022-03-22 Amazon Technologies, Inc. Client-based batching of data payload
US10496327B1 (en) 2016-09-28 2019-12-03 Amazon Technologies, Inc. Command parallelization for data storage systems
US10657097B1 (en) 2016-09-28 2020-05-19 Amazon Technologies, Inc. Data payload aggregation for data storage systems
US10810157B1 (en) 2016-09-28 2020-10-20 Amazon Technologies, Inc. Command aggregation for data storage operations
US11204895B1 (en) 2016-09-28 2021-12-21 Amazon Technologies, Inc. Data payload clustering for data storage systems
US10437790B1 (en) 2016-09-28 2019-10-08 Amazon Technologies, Inc. Contextual optimization for data storage systems
US10614239B2 (en) 2016-09-30 2020-04-07 Amazon Technologies, Inc. Immutable cryptographically secured ledger-backed databases
US10296764B1 (en) 2016-11-18 2019-05-21 Amazon Technologies, Inc. Verifiable cryptographically secured ledgers for human resource systems
US11269888B1 (en) 2016-11-28 2022-03-08 Amazon Technologies, Inc. Archival data storage for structured data
MX2020007891A (es) 2018-01-25 2020-10-16 Vertex Software Llc Métodos y aparatos para facilitar la visualización y manipulación de objetos 3d a través de múltiples dispositivos.
CN109712225B (zh) * 2018-12-29 2023-07-07 北京超图软件股份有限公司 一种面对象的渲染方法、装置、设备及存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821220A (en) * 1986-07-25 1989-04-11 Tektronix, Inc. System for animating program operation and displaying time-based relationships
US4885717A (en) * 1986-09-25 1989-12-05 Tektronix, Inc. System for graphically representing operation of object-oriented programs
US4930092A (en) * 1987-01-20 1990-05-29 Auto-Trol Technology Corporation Polygon display apparatus and method
US4912659A (en) * 1987-10-30 1990-03-27 International Business Machines Corporation Parallel surface processing system for graphics display
US4891630A (en) * 1988-04-22 1990-01-02 Friedman Mark B Computer vision system with improved object orientation technique
US4953080A (en) * 1988-04-25 1990-08-28 Hewlett-Packard Company Object management facility for maintaining data in a computer system
EP0347162A3 (en) * 1988-06-14 1990-09-12 Tektronix, Inc. Apparatus and methods for controlling data flow processes by generated instruction sequences
US5041992A (en) * 1988-10-24 1991-08-20 University Of Pittsburgh Interactive method of developing software interfaces
US5133075A (en) * 1988-12-19 1992-07-21 Hewlett-Packard Company Method of monitoring changes in attribute values of object in an object-oriented database
US5050090A (en) * 1989-03-30 1991-09-17 R. J. Reynolds Tobacco Company Object placement method and apparatus
US5060276A (en) * 1989-05-31 1991-10-22 At&T Bell Laboratories Technique for object orientation detection using a feed-forward neural network
US5125091A (en) * 1989-06-08 1992-06-23 Hazox Corporation Object oriented control of real-time processing
JPH0792840B2 (ja) * 1989-10-13 1995-10-09 インターナショナル・ビジネス・マシーンズ・コーポレーシヨン 画像生成方法及び装置
JPH0776991B2 (ja) * 1989-10-24 1995-08-16 インターナショナル・ビジネス・マシーンズ・コーポレーション Nurbsデータ変換方法及び装置
US5181162A (en) * 1989-12-06 1993-01-19 Eastman Kodak Company Document management and production system
US5093914A (en) * 1989-12-15 1992-03-03 At&T Bell Laboratories Method of controlling the execution of object-oriented programs
US5075848A (en) * 1989-12-22 1991-12-24 Intel Corporation Object lifetime control in an object-oriented memory protection mechanism
US5151987A (en) * 1990-10-23 1992-09-29 International Business Machines Corporation Recovery objects in an object oriented computing environment
US5119475A (en) * 1991-03-13 1992-06-02 Schlumberger Technology Corporation Object-oriented framework for menu definition
US5394523A (en) * 1993-01-22 1995-02-28 Taligent, Inc. Polymorphic graphic device
US5471568A (en) * 1993-06-30 1995-11-28 Taligent, Inc. Object-oriented apparatus and method for scan line conversion of graphic edges

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100339869C (zh) * 2002-12-20 2007-09-26 Lm爱立信电话有限公司 使用最小深度遮挡剔除和z字形遍历的图形处理设备及方法

Also Published As

Publication number Publication date
DE69406296D1 (de) 1997-11-20
EP0713594A1 (en) 1996-05-29
WO1995004330A1 (en) 1995-02-09
CA2147847C (en) 2002-06-11
US5729671A (en) 1998-03-17
EP0713594B1 (en) 1997-10-15
AU6081494A (en) 1995-02-28
JPH09500994A (ja) 1997-01-28
DE69406296T2 (de) 1998-05-14
CA2147847A1 (en) 1995-02-09

Similar Documents

Publication Publication Date Title
CN1116009A (zh) 面向目标的再现系统
Bancilhon et al. The design and implementation of O 2, an object-oriented database system
US7659894B2 (en) Terminating spatial partition hierarchies by a priori bounding memory
RU2360275C2 (ru) Уровень интеграции сред
EP1412923B1 (en) Construction and maintenance of scenegraphs for interactive feature-based geoscience graphical modeling
Beynon et al. Processing large-scale multi-dimensional data in parallel and distributed environments
US20180322608A1 (en) Distributed and parallelized visualization framework
JPH09506191A (ja) グラフィック・エディタ・フレームワーク・システム
CN104885123A (zh) 按需的几何图形和加速结构形成
CN1926558A (zh) 对任意成三角形的表面应用精确三维体纹理的系统和方法
CN1110064A (zh) 动态连接系统
US8462146B1 (en) Parallel processing of object subtrees for multiprocessor systems
US8952961B2 (en) Systems and methods for photon map querying
US5479589A (en) Object-oriented system for selecting a graphic image on a display
CN1108591C (zh) 利用用户定义的场所和窗口进行有效再现
Beermann et al. Scalable, Robust Visualization of Very Large Trees.
Leach A GPU-Based level of detail system for the real-time simulation and rendering of large-scale granular terrain
Ligocki Implementing a visualization tool for adaptive mesh refinement data using VTK
Pan et al. A new BSP tree framework incorporating dynamic lod models
Krisher et al. JVIEW Visualization for Next Generation Air Transportation System
Walkden Graphics and Fast Algorithms for Particle Physics Detector Simulations
Persson Large planetary data visualization using ROAM 2.0
Abdallah The Design and Implementation of a Prototype Geographic Information System Using a Novel Architecture Based on PS-algol
Yang et al. Improve Software System Visualization using Genetic Algorithm
Kiefer et al. Architecture and computing philosophy of the QUICKSILVER, 3D, electromagnetic, particle-in-cell code

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C01 Deemed withdrawal of patent application (patent law 1993)
WD01 Invention patent application deemed withdrawn after publication