CN100385466C - 立体形状显示方法及立体形状显示装置 - Google Patents

立体形状显示方法及立体形状显示装置 Download PDF

Info

Publication number
CN100385466C
CN100385466C CNB028279212A CN02827921A CN100385466C CN 100385466 C CN100385466 C CN 100385466C CN B028279212 A CNB028279212 A CN B028279212A CN 02827921 A CN02827921 A CN 02827921A CN 100385466 C CN100385466 C CN 100385466C
Authority
CN
China
Prior art keywords
segmentation
cut
dimensional shape
limit
data
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.)
Expired - Lifetime
Application number
CNB028279212A
Other languages
English (en)
Other versions
CN1618087A (zh
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.)
DIPRO Co Ltd
Original Assignee
DIPRO Co Ltd
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 DIPRO Co Ltd filed Critical DIPRO Co Ltd
Publication of CN1618087A publication Critical patent/CN1618087A/zh
Application granted granted Critical
Publication of CN100385466C publication Critical patent/CN100385466C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Remote Sensing (AREA)
  • Processing Or Creating Images (AREA)

Abstract

一种立体形状显示方法及立体形状显示装置。可基于被压缩的数据高速地显示立体形状。根据至少在一个面上定义了立体形状的立体形状数据(2),决定构成立体形状的面的分割模型(步骤S2)。同时,根据立体形状数据(2)预先所定义的面的顶点的位置和该顶点的法线方向,决定面的曲面形状(步骤S3)。然后,根据所决定的分割模型来分割被决定的曲面形状,生成沿曲面形状的多个面(步骤S4)。然后将由所生成的多个面构成的立体形状进行显示(步骤S5)。其中,在决定所述曲面形状时,根据对所述面的顶点预先设定的切线矢量来决定构成所述面的边的曲线。

Description

立体形状显示方法及立体形状显示装置
技术领域
本发明涉及将物体的形状进行立体显示的立体形状显示程序、立体形状显示方法及立体形状显示装置,特别是涉及根据被压缩的数据、再现原来的形状的立体形状显示程序、立体形状显示方法及立体形状显示装置。
背景技术
近年来,将各种部件用三维CAD(Computer-Aided Design)进行立体表现的情况已很普遍。例如,用三维CAD数据来表现构成复杂结构的装置的各部件。这样,可以在计算机上很容易地进行各个部件的CAD数据(实体模型)的集结,安装设计、布局设计、干扰设计等的工作。这样的工作被称为数字仿真,被普遍使用在以汽车及飞机产业为中心的领域中。
一般来讲,在实体CAD数据中采用以高精度的几何和相位所表示的精确的表现(Precise Representation)。实体CAD数据以精确的表现为基准,具有参数变形用的约束条件及形状生成履历。并且,实体CAD数据也具有进行快速显示用的显示数据。因而,实体CAD处理的信息量很多,在将部件进行集结、制造数字仿真模型时,数据量变得非常庞大。当实体CAD的数据量庞大时,即使在不进行数据编辑、而只显示立体形状的情况下,也要进行庞大量的数据的处理。
作为其解决策略,在汽车及飞机产业中,将CAD数据转换为显示用多边形数据(例如,VRML(虚拟仿真模型语言:Virtual Reality ModelingLanguage)的数据),采用数字仿真模型专用的浏览器(Viewer)来显示该显示用多边形数据。通过采用显示用多边形数据来显示画面,形状的确认工作变得容易。
但是,最近的CAD数据的具体化(因更细致的定义而使数据量增加)超过了硬件及软件的进化,即使用专用的浏览器来处理整个产品也变为很困难。例如,在以0.1mm的误差将表示汽车的发动机的结构的CAD数据转换为显示用多边形数据的情况下,数据量将达到0.5~1Gbyte。由于只表示发动机就用了0.5~1Gbyte,所以由此可推断,表示1台汽车的合计数据量将达到10Gbyte以上。因此,在使用浏览器的计算机中,有必要配置储存显示用多边形数据的大容量的存储器及硬盘装置。
因此,需要考虑将显示用的立体形状的数据进行压缩的技术。作为立体形状的压缩表现,有采用B’ezier的三角修补及Gregory修补(Lattice=XVL)等的方法,可以减少硬盘装置所储存的数据容量,但在存储器读取数据时,为了展开为多边形而不能削减存储器容量。另一方面,在将被压缩的立体形状按原样保存在存储器中并根据显示倍率将多边形细分割的方法中,有Subdivision法。Subdivision法适用的理由是因为:在画面放大时,很多部件在视野(画面)外的概率很高,采用View FrustumCulling(省略视野外的物体的方法),可以将所省略的CPU(CentralProcessing Unit)资源分配给多边形的细分割计算。
作为Subdivision法的一例,有在美国专利6,222,553号公报上所记载的发明。在该发明中,是采用NURBS(Non-Uniform RationalB-Splines)曲线等的控制点来表现的。并且,通过从一个形状的中间点向其形状的各边所引的线来将原来的形状进行分割。
但是,以往的Subdivision法不能减少存储器及文件容量,多边形的细分割计算的计算机的处理负荷会大幅度地增加。而且,以往的Subdivision法的数据压缩效果,在采用Web等在远距离之间进行大规模数据合作方面还不理想。
例如,在美国专利6,222,553号公报上所记载的发明中,为了用从某个中间点向各边的引线来分割该形状,即使包含没有必要进行分割的边(例如直线的边),也会将所有的边进行分割。这样,会产生不必要的分割的情况,导致处理负荷的增大。而且,NURBS曲线等的控制点必须对每个边个别地进行设定,这成为数据量增大的原因。
发明内容
本发明是鉴于这一情况而作成的,其目的在于提供一种可以根据被压缩的数据高速地显示立体形状的立体形状显示程序、立体形状显示方法及立体形状显示装置。
本发明的第1方式提供一种立体形状显示方法,用于对物体的形状进行立体显示,其特征在于,使计算机执行如下的处理,即:根据在至少一个面上定义了立体形状的立体形状数据,决定构成所述立体形状的所述面的各边的细分割数;根据在所述立体形状数据中被预先定义的所述面的顶点的位置和该顶点的法线方向,决定所述面的曲面形状;根据所述各边的细分割数来细分割被决定的所述曲面形状,从而生成沿所述曲面形状的多个细分割面;以及显示由生成的所述多个细分割面构成的立体形状,其中,所述决定细分割数的步骤将所述各边的细分割数定为2的幂;所述细分割的步骤重复对细分割模型进行选择和应用的过程,直至达到所决定的各边的细分割数;以及所述重复过程如下将三角形细分割为多个小三角形:将所述三角形的三个边的细分割数进行排序,由此获得按升序排列的细分割数i,j和k,其中i,j和k为2的幂,如果i>1,选择(i,i,i)作为细分割模型,以同样的细分割数i对所述三角形的三个边进行细分割,如果i=1并且j>1,选择(1,j,j)作为细分割模型,以同样的细分割数j对所述三角形的二个边进行细分割,如果i=1,j=1并且k>1,选择(1,1,k)作为细分割模型,以细分割数k仅对所述三角形的一个边进行细分割。
根据这样的立体形状显示方法,能够决定适合构成立体形状数据的面所定义的法线方向等的曲面形状,并将该曲面形状分割为多个面。并且,能够将由被分割的面所构成的立体形状进行显示。
本发明的第2方式提供一种立体形状显示装置,用于将物体的形状进行立体显示,其特征在于,具有:根据在至少一个面上定义了立体形状的立体形状数据,决定构成所述立体形状的所述面的各边的细分割数的细分割数决定单元;根据在所述立体形状数据中被预先定义的所述面的顶点的位置和该顶点的法线方向,决定所述面的曲面形状的曲面形状决定单元;根据所述各边的细分割数来细分割由所述曲面形状决定单元所决定的所述曲面形状,从而生成沿所述曲面形状的多个细分割面的面生成单元;和显示由利用所述面生成单元生成的所述多个细分割面构成的立体形状的显示单元,其中,所述细分割数决定单元将所述各边的细分割数定为2的幂;所述面生成单元重复对细分割模型进行选择和应用的过程,直至达到所决定的各边的细分割数;以及所述重复过程如下将三角形细分割为多个小三角形:将所述三角形的三个边的细分割数进行排序,由此获得按升序排列的细分割数i,j和k,其中i,j和k为2的幂,如果i>1,选择(i,i,i)作为细分割模型,以同样的细分割数i对所述三角形的三个边进行细分割,如果i=1并且j>1,选择(1,j,j)作为细分割模型,以同样的细分割数j对所述三角形的二个边进行细分割,如果i=1,j=1并且k>1,选择(1,1,k)作为细分割模型,以细分割数k仅对所述三角形的一个边进行细分割。
关于上述的本发明以及本发明的其他的目的、特征及优点,通过对作为本发明实施例的理想的实施方式结合附图进行以下的说明,可以进一步加深理解。
附图说明
图1为应用于本实施方式的发明的概念图。
图2为本发明的实施方式的系统结构图。
图3为表示本发明的实施方式所采用的计算机的硬件结构例的图。
图4为表示本发明的实施方式的功能的功能方框图。
图5为表示立体结构数据存储部的内部结构的图。
图6为表示物体信息的数据结构的一例的图。
图7为表示立体形状的一例的图。图7(A)和图7(B)为立体形状的立体图。
图8为表示物体信息的具体例的图。
图9为表示立体形状显示顺序的第1流程图。
图10为表示立体形状显示顺序的第2流程图。
图11为表示立体形状显示顺序的第3流程图。
图12为表示空间曲线的折线近似例的图。
图13为表示图形的分割例的图。
图14为表示3边形的分割模型的种类的图。
图15为表示3边形分割模型决定处理的顺序的流程图。
图16为表示4边形的分割模型的种类的图。
图17为表示4边形分割模型决定处理的顺序的流程图。
图18为表示邻接的面彼此之间平滑连接的立体形状的一例的图。
图19为表示采用了2次微分矢量所决定的参数3次式的一例的图。
图20为表示邻接的面彼此之间共有的边为曲折的立体形状的一例的图。
图21为表示强制地指示边的形状的立体形状的一例的图。
图22为表示分割对象的面的一例的图。
图23为表示包含被分割的3边形的立体形状的一例的图。
图24为表示被分割的3边形的一例的图。
图25为表示被分割的4边形的一例的图。
图26为表示显示了由混合网格数据所定义的立体形状的边的画面的一例的图。
图27为表示显示了由混合网格数据所定义的立体形状的画面的一例的图。
图28为表示显示了细分割混合网格数据时的立体形状的边的画面的一例的图。
图29为表示显示了细分割混合网格数据时的立体形状的画面的一例的图。
图30为表示汽车的立体形状的显示画面的一例的图。
具体实施方式
下面,参照附图对本发明的实施方式进行说明。
首先,对应用于本发明的实施方式的发明的概要进行说明,然后,对本发明的实施方式的具体的内容进行说明。
图1为应用于本实施方式的发明的概念图。本发明为使计算机执行将物体的形状进行立体显示的处理的立体形状显示程序。根据该立体形状显示程序,计算机执行图1所示的处理。
计算机进行CAD数据1的数据压缩,生成被压缩的立体形状数据2。立体形状数据2为将定义CAD数据1的形状的数据进行了压缩的数据。通过数据压缩,如复杂的曲面形状可以置换为简单形状的多个面。
然后,计算机根据立体形状数据2,决定构成立体形状的面的分割模型(步骤S2)。例如,决定构成面的边的分割数,决定适合各边的分割数的面的分割模型。
另外,计算机根据在立体形状数据2中预先定义的面的顶点的位置和该顶点的法线方向,来决定面的曲面形状(步骤S3)。例如,使与法线方向垂直的方向成为曲面形状的切线来决定曲面形状。另外,法线方向一般是利用法线矢量(单位矢量)来定义。
接下来,计算机根据所决定的分割模型将被决定的曲面形状进行分割,生成沿着曲面形状的多个面(步骤S4)。并且,计算机将由所生成的多个面所构成的立体形状进行显示(步骤S5)。
通过任意的计算机来执行这样的立体形状显示程序,来决定适合由构成立体形状数据2的面所定义的法线方向等的曲面形状,并将该曲面形状分割为多个面。然后,显示由所分割的面构成的立体形状。
这样,可以用较少的数据量的立体形状数据2来存储由原来的CAD数据1所定义的立体形状。并且,根据立体形状数据2,能够以很少的误差再现CAD数据1所定义的形状。
而且,在立体形状数据2中,设定有构成立体形状的面的顶点坐标和法线方向。法线方向例如利用法线矢量来定义。该法线矢量为在对用于进行实际的画面显示的阴影及光的反射等的计算中所必要的信息。在本发明中,由于根据立体形状数据2的状态来定义法线方向,因而可以将立体形状数据2自身看成为一个多边形模型,按原样实际(例如采用阴影显示)进行画面显示。这样,根据状况,计算机可以判断是否进行面的分割,适宜地切换不进行面的分割的高速显示和进行面分割的高精度的显示。
另外,如前面所述的美国专利6,222,553号公报所记载的发明所代表的那样,以往的根据Subdivision法所压缩的很多的数据,在面的分割中不利用法线方向的信息(法线矢量)。因此,如果在被压缩的数据内包含有法线矢量,则在面的分割时会有多余的不必要的数据,导致数据容量的增加。
另外,通过根据法线方向来决定曲面状况,可减少为了再现原来的立体形状的必要的数据量。即、在平滑连接的两个面中,在几乎所有的情况下,在该边界的边的端点中可以共享法线方向的定义信息(法线矢量)。因此,可以削减作为立体形状数据2整体的数据量。
还有,在本发明中,由于也可以对立体形状数据2所定义的每个面进行分割,所以通过将所分割的面的多边形依次发送到三维显示电路,可以显示面分割后的高精度的立体形状。这样,在计算机的主存储器上可以不需要保存定义了面分割后的立体形状的所有的数据,可以减少所需的存储容量。
还有,在决定分割模型时,通过先决定边的分割数,并根据该边的分割数来进行面的分割,可以避免浪费地进行面的分割。例如,可通过不进行直线的边的分割而将由曲线所定义的边分为多个,进行面的分割。其结果,可以降低处理负荷,实现显示处理的高速化。
下面,对本发明的实施方式进行具体的说明。另外,在以下的实施方式中,在被压缩的立体形状数据中,可以将由3个边所构成的面(FACE)和由4个边所构成的面混合在一起。因此,以下将由在本发明中所定义的形式的结构所压缩的数据称为混合网格数据(混合的网格)。
另外,构成立体形状的面的顶点的位置,也可以为构成各面的边的端点。因此,在以下的实施方式中,将面的顶点的位置称为端点。
图2为本发明的实施方式的系统结构图。如图2所示,多个计算机100、100a、100b通过网络10相连接。网络10例如为公司内的LAN(局域网:Local Area Network)及互联网。
在各计算机100、100a、100b上安装有三维CAD程序,利用计算机100、100a、100b可以生成各种部件等的CAD数据(实体模型)。另外,在各计算机100、100a、100b上安装有本发明的三维CAD数据的浏览器。通过在计算机100、100a、100b上使用浏览器,可以进行基于CAD数据的高压缩率的压缩保存及被压缩的数据的三维模型的画面显示。另外,通过将被压缩的数据通过网络10在各计算机100、100a、100b之间进行发送和接收,可以进行使用CAD的合作设计(合作)。
下面,对由计算机100实施本发明的实施方式进行详细说明。
图3为表示本发明的实施方式所采用的计算机的硬件的结构的一例的图。计算机100通过CPU101来控制整体装置。通过总线107,使RAM(Random Access Memory)102、硬盘驱动器(HDD:Hard Disk Drive)103、显示处理装置104、输入接口105及通信接口106与CPU101相连接。
在RAM102内至少暂时储存有使CPU101执行的OS(操作系统:Operating System)的程序及应用程序中的一部分。另外,在RAM102中储存有在CPU101的处理时所必需的各种数据。在HDD103中储存有OS及应用程序。
在显示处理装置104中内置有三维显示电路,与监视器1相连接。显示处理装置104根据来自CPU101的指令,生成基于三维的坐标数据(多边形数据等)的图像,并将该图像显示到监视器11的画面上。键盘12和鼠标13与输入接口105相连接。输入接口105通过总线107,将由键盘12和鼠标13发送来的信号传送给CPU101。
通信接口106与网络10相连接。通信接口106通过网络10在和其他的计算机之间进行数据收发。
根据以上的硬件结构,可以实现本实施方式的处理功能。
图4为表示本发明的实施方式的功能的功能方框图。计算机100具有浏览器110、浏览器应用部130、三维显示用API(应用程序接口:Application Program Interface)140、OSAPI150。
浏览器110用于转换表示立体形状的数据的数据形式,压缩数据容量。例如,将VRML数据31及CAD数据32转换为混合网格数据。另外,浏览器110根据混合网格数据、以规定的误差再现立体形状。被再现的立体形状为由多个多边形构成的多边形模型。关于浏览器110内的结构的详细情况,在后面进行叙述。
浏览器应用部130具有配合浏览器110来支持使用CAD的设计操作的附加功能。在图4的例中,浏览器应用部130作为附加功能,具有干扰检查部131、计测部132、分解图生成部133、插图生成部134等。干扰检查部131根据由浏览器110所提供的立体形状数据,检查在部件之间有无干扰。计测部132根据由浏览器110所提供的立体形状数据,计算任意的两个点之间的距离。分解图生成部133根据由浏览器110所提供的立体形状数据,生成立体形状的分解图。插图生成部134根据由浏览器110所提供的立体形状数据,生成立体形状的插图图像。
三维显示用API140为浏览器110等的各种处理功能和进行三维显示的显示处理装置104之间的接口。具体来讲,三维显示用API140根据由浏览器110所提供的多边形等的信息,生成计算机100的三维显示处理要求,使计算机100执行该三维显示处理要求。例如,三维显示用API140将由浏览器110所提供的多边形的端点坐标及颜色等的信息和显示指令一起提交给图3所示的显示处理装置104。于是,显示处理装置104进行各多边形的透视投影等,生成表示由多个多边形所构成的立体形状的图像(画面图像)。然后,在规定周期内将在显示处理装置104中生成的图像的数据发送给监视器11,并将表示立体形状的图像显示到监视器11的画面上。作为三维显示用API140,例如可以采用OpenGL(商标)。
OSAPI150为在OS和其他的处理功能单元之间的接口。具体来讲,OSAPI150启动与由浏览器110等所输出的处理要求相对应的OS的处理功能,使计算机100执行处理。
下面,对浏览器110的内部结构进行说明。
浏览器110具有应用接口111、混合网格API112、VRML数据转换部113、CAD数据转换部114、用户接口115、细分割部116、显示数据输出部117及立体结构数据存储部120。
应用接口111为和浏览器应用部130之间的接口。具体来讲,应用接口111将通过混合网格API112所接收的立体结构数据(模型数据)提交给浏览器应用部130内的干扰检查部131等。另外,应用接口111将从浏览器应用部130内的干扰检查部131等所接收的立体结构数据提交给混合网格API112。
混合网格API112为对应用接口111提供对立体结构数据存储部120的访问环境的接口。具体来讲,混合网格API112根据通过了应用接口111的要求,将立体结构数据存储部120内的混合网格数据的一部分(或全部)的数据提交给应用接口111。另外,混合网格API112将通过应用接口111所接收的数据作为混合网格数据的一部分(或全部),储存到立体结构数据存储部120内。
VRML数据转换部113将VRML数据31转换为混合网格数据。通过该转换,表示立体形状的数据的数据容量变小。然后,VRML数据转换部113将转换后的混合网格数据储存到立体结构数据存储部120内。
CAD数据转换部114将CAD数据32转换为混合网格数据。通过该转换,表示立体形状的数据的数据容量变小。然后,CAD数据转换部114将转换后的混合网格数据储存到立体结构数据存储部120内。
用户接口115配合OSAPL150,取得使用键盘12及鼠标13输入的信息。然后,用户接口115响应操作输入,对浏览器110内的各构成要素发出处理要求或提交数据。例如,用户接口115将由操作输入所指定的显示倍率116a及容许误差116b提交给细分割部116。另外,用户接口115在投影显示对象的物体的视点和立体形状的相对位置的移动指示被输入的情况(在显示画面内立体形状移动的情况)下,将正在移动的情况通知细分割部116。
细分割部116将混合网格数据进行细分割。即、细分割部116将构成由比CAD数据32粗糙的结构所表现的混合网格数据的面(FACE)进行分割,接近原来的CAD数据32的形状。并且,细分割部116在每次进行面的分割时,将分割后的面的信息提交给显示数据输出部117。
另外,细分割部116作为决定混合网格数据的面的分割数的参数,具有显示倍率116a及容许误差116b。显示倍率116a为由混合网格数据所定义的立体形状的画面显示上的显示倍率。容许误差116b为在将根据混合网格数据所定义的立体形状(由曲面所构成的形状)用平面的多边形来表示的情况下所发生的形状误差的最大值。细分割部116的显示倍率116a越大,则多边形的分割数越多,显示倍率116a越小,则多边形的分割数越少。另外,细分割部116的容许误差116b越大,则多边形的分割数越少,容许误差116b越小,则多边形的分割数越多。
显示数据输出部117将细分割部116所分割后的多边形的信息输出给三维显示用API140。
立体结构数据存储部120为存储显示对象的模型(例如汽车)的立体结构(部件的立体形状的组合)的数据的RAM102内的存储区域。立体结构的数据主要是由表示每个显示对象模型的构成要素(例如汽车的部件)的立体形状的混合网格数据形成。该混合网格数据是由VRML数据转换部113及CAD数据转换部114所生成。另外,混合网格数据也有从HDD103内的混合网格文件33中读取的情况。
在混合网格数据中可以将每个构成立体形状的面的形状信息进行定义,将面单位的信息看作为多边形,按原样提交给三维显示用API140来进行画面显示。另外,在混合网格数据中包含有分割各面所必需的信息(基底分割数等)。
下面,对立体结构数据存储部120的数据结构的详细情况进行说明。
图5为表示立体结构数据存储部的内部结构的图。立体结构数据存储部120具有多个混合网格数据200、200a、200b...和物体配置信息300。混合网格数据200、200a、200b...为定义了每个构成显示对象物的部件(物体)的形状的数据。混合网格数据200、200a、200b...也有按照每个构成显示对象物的单元被分组的情况。在这里,所谓单元,是指由一个以上的部件所构成的物品。如果将显示对象物作为组件(组合部件),则单元为子组件。例如,如果显示对象物为汽车,则发动机及悬挂体等相当于单元。另外,一个单元也有由多个单元(各单元具有1个以上的部件)所构成的情况。
在混合网格数据200中包含有物体信息210、点坐标数据群220及矢量数据群230。物体信息210为表示各部件的立体形状等的数据(也包括部件的颜色的信息)。物体信息210的详细情况在后面进行叙述。
点坐标数据群220为构成立体形状的面的各端点的端点坐标数据221、222、...、22i、...、22m、22n的集合。在端点坐标数据221、222、...、22i、...、22m、22n内设定有由x轴-y轴-z轴所表示的三维空间(局部坐标系)内的各轴方向的坐标值。
矢量数据群230为表示在构成立体形状的面的各端点所定义的法线矢量或切线矢量的矢量数据231、232、...、23i、...、23m、23n的集合。矢量数据231、232、...、23i、...、23m、23n根据x轴、y轴、z轴方向的矢量成分来表示在三维空间(局部坐标系)内的方向和大小。
另外,在本实施方式中,作为法线矢量所指定的矢量,其所有的长度为一个单位矢量。作为切线矢量所指定的矢量,并不限于单位矢量。
物体配置信息300为定义了将立体形状配置到公共坐标系(通用坐标系)的情况下的配置位置及方向的信息。通过将与各立体形状有关的配置信息进行定义,可以将构成显示对象物的各部件配置到公共坐标系内,生成由多个立体形状的组合所形成的显示对象物的形状。
下面,对物体信息的内容进行详细的说明。
图6为表示物体信息的数据结构的一例的图。另外,在图6中的数据名的前面所表示的箭形符号(↑),为表示该数据指示其他的数据的储存位置的指针。
物体信息210具有物体识别信息(objiectID)211、最大基底分割数(MaxDivide)212及多个面信息(Face l,...,Face i,...,Face n-1,Face n)410、420、430、440。物体识别信息211为专门识别对每个构成显示对象物的部件所作成的物体信息210的识别信息。最大基底分割数212为对构成物体信息210的面的各边所设定的基底分割数中的最大值。面信息410、420、430、440为构成部件的面的信息。
面信息420具有面识别信息(Face ID)421、面边数(nP)422、面属性(Attr)423、多个端点信息(Vertex 1,Vertex 2,Vertex i,...,VertexnP-1,Vertex nP)424、425、426、427、428、及循环指针(↑EOF)429。面识别信息421为在物体信息210内专门识别面信息的识别信息。面边数422为构成面的边(直线或曲线)的数。面属性423为面的颜色等的属性信息。
端点信息424、425、426、427、428为与面的端点有关的信息。循环指针429为指示最前面的端点信息424的位置的指针。通过由循环指针429指示最前面的端点信息424,使端点信息424、425、426、427、428构成端点的排队循环。根据连续的两个端点信息来定义构成面的边。另外,将最后面的端点信息428作为和最前面的端点信息424相连续的端点信息来处理。
端点信息426具有点坐标指针(↑Point)426a、法线矢量指针(↑Normal)426b、切线定义信息(Ratio or Tangent)426c、基底分割数(nDevide)426d、及邻接边指针(↑Mate Edge)426e。
点坐标指针426a在点坐标数据群220内的点坐标数据221、222、...、22i、...、22m、22n当中,为指示表示在端点的三维空间(局部坐标系)内的位置的坐标数据的指针。法线矢量指针426b在矢量数据群230内的矢量数据231、232、...、23i、...、23m、23n当中,为指示表示端点的法线矢量的值的矢量数据的指针。
切线定义信息426c为定义端点的切线矢量的信息。在切线定义信息426c内设定有端点的切线的长度(Ratio)或指示切线矢量的指针(Tangent)中的任何一方。在根据法线矢量和边的两端的端点的位置可以决定切线矢量的方向的情况(边向表示法线矢量的方向弯曲的情况)下,作为切线定义信息426c可以设定切线的长度。在根据法线矢量和边的两端的端点的位置不可以决定切线矢量的方向的情况(边向和表示法线矢量的方向不同的方向弯曲的情况)下,作为切线定义信息426c可以设定对切线矢量的指针。
基底分割数426d为预先设定的边的分割数。基底分割数426d在显示倍率为1(即不进行放大也不进行缩小)时,将分割后的误差设定为预先决定的误差以内的值。
邻接边指针426e为在共有邻接的面和边的情况下,指示邻接的面所共有的边的信息(表示边的两端的两个端点信息的最前面的位置)的指针。根据邻接边指针426e,来定义在将邻接的面结合起来的循环之间的面彼此之间的边的供给关系。
此外,在多个边的端点信息426中,在点坐标指针426a指向相同地址(点坐标数据的位置)的情况下,表示各边的端点为共有。
另外,在共有多个边的端点时,与各个边的端点相对应的端点信息426的法线矢量指针426如果指向相同的地址(法线矢量数据的位置),则共有各边的法线矢量。
这样,在本实施方式的混合网格数据200、200a、200b中,在定义端点的循环和面的循环的同时,定义边的端点的共有关系、法线矢量的共有关系、边的共有关系。这样,可以定义立体形状的相位(topology)和几何(geometry)的信息。在这里,所谓相位,为表示面、棱线、端点(顶点)等立体的边界面的联系情况的要素,所谓几何,为表示曲面、曲线、点等立体的实际形状的要素。
下面,结合附图7、附图8对适合立体形状的物体信息210的具体的例子进行说明。
图7为表示立体形状的一例的图。图7(A)和图7(B)为立体形状的立体图。图7(A)和图7(B)所看的方向为相反的。
立体形状500由6个面511~516构成,具有12个边521~532、8个端点541~548。各面511~516的面识别信息(faceID)为F1~F6。面511为曲面,其他的面512~516为平面。
在这里,将对表示各端点541~548的位置的点坐标数据的指针(点坐标指针)定为P1~P8,将对表示各端点541~548的法线矢量的矢量数据的指针(法线矢量指针)定为N1~N8。另外,在图7所示的端点541内,存在有两个法线矢量551、552。这时,在表示法线矢量数据的记号后,用括弧来表示具有法线矢量551、552的面的面识别信息。即、面516所具有的法线矢量551的法线矢量指针为N1(F6),面511和面513所共有的法线矢量552的法线矢量指针为N1(F1、F3)。
下面将这样的立体形状500的物体信息的例子进行表示。
图8为表示物体信息的具体的一例的图。在物体信息210a中,包含有物体识别信息211a、最大基底分割数212a、及多个面信息410a、420a、430a、440a、450a、460a。面信息410a为与面识别信息「F1」的面511有关的信息。面信息420a为与面识别信息「F2」的面512有关的信息。面信息430a为与面识别信息「F3」的面513有关的信息。面信息440a为与面识别信息「F4」的面514有关的信息。面信息450a为与面识别信息「F5」的面515有关的信息。面信息460a为与面识别信息「F6」的面516有关的信息。
在这里,参照面信息410a,对数据的例子进行详细地说明。面信息410a的面识别信息(faceID)为「F1」。这样,可以知道这是与图7所示的面511有关的信息。另外,面边数(nP)为4。这样,可以知道这是由4个边所形成的面。在面信息(Attr)内设定有颜色信息等。
在面信息410a内,设定有与4个端点541~544相对应的端点信息。在图8的例子中,在端点541的端点信息内,设定有点坐标指针P1、法线矢量指针N1(F1、F3)、切线的长度(Ratio)、基底分割数「0」、及指示面513(面识别信息F3)的最前面的端点信息(F3-1)的邻接边指针。在端点542的端点信息内,设定有点坐标指针P2、法线矢量指针N2(F1、F3)、切线的长度(Ratio)、基底分割数「n0-1」、及指示面514(面识别信息F4)的第4端点信息(F4-4)的邻接边指针。在端点543的端点信息内,设定有点坐标指针P3、法线矢量指针N3(F1)、切线的长度(Ratio)、基底分割数「0」、及指示面515(面识别信息F5)的第4端点信息(F5-4)的邻接边指针。在端点544的端点信息内,设定有点坐标指针P4、法线矢量指针N4(F1)、切线的长度(Ratio)、基底分割数「n0-1」、及指示面516(面识别信息F6)的最前面的端点信息(F6-1)的邻接边指针。循环指针指示最前面的端点信息。
通过具有以上的功能结构及数据结构的计算机来进行立体形状的显示。下面,对立体形状的显示方法进行详细的说明。
图9为表示立体形状显示顺序的第1流程图。下面,根据步骤编号来对图9所示的处理进行说明。
「步骤S11」计算机100根据来自用户的操作输入等的指示,生成由混合网格数据所构成的立体形状数据。例如,VRML数据转换部113解析由VRML数据31所定义的部件的立体形状,并将每个部件的立体形状数据转换为混合网格数据。另外,CAD数据转换部114解析由CAD数据32所定义的部件的立体形状,并将每个部件的立体形状数据转换为混合网格数据。
所生成的混合网格数据对减少了由原来的VRML数据31所定义的立体形状面的数量的立体形状进行定义。这样,通过该处理,数据容量被压缩(数据容量减少)。
「步骤S12」VRML数据转换部113或CAD数据转换部114将通过数据转换所生成的混合网格数据储存到内部的RAM102内的立体结构数据存储部120内。另外,RAM120所储存的混合网格数据,可以写入混合网格文件33内。另外,也可以从混合网格文件33中取出混合网格数据,储存到RAM102内的立体结构数据存储部120内。
「步骤S13」用户接口115根据来自用户的、对键盘12等的操作输入,取得画面的显示倍率和容许误差。然后,用户接口115将显示倍率和容许误差提交给细分割部116。
「步骤S14」细分割部116选择一个立体结构数据存储部120内的物体。以下,对所选择的物体,进行步骤S15~步骤S37的处理。
「步骤S15」细分割部116从立体结构数据存储部120中取出在步骤S14所选择的物体的混合网格数据,取得最大基底分割数。
「步骤S16」细分割部116根据画面的显示倍率、容许误差及最大基底分割数,计算出实际分割数。关于实际分割数的计算方法,在后面进行详细叙述。
「步骤S17」细分割部116判断有无分割处理的必要。具体来讲,判断在步骤S16中所算出的实际分割数是否为小于等于1。在实际分割数为小于等于1的情况下,判断为没有必要进行分割处理。另一方面,在实际分割数超过了1的情况下,判断为有必要进行分割处理。
即、最大基底分割数为单位倍率时的单位误差的分割数最大的边的基底分割数。这样,如果不需要进行该边的分割,则也不需要对其他边进行分割。
在没有必要进行分割处理的情况下,进入到步骤S18的处理。在有必要进行分割处理的情况下,进入到图10的步骤S21的处理。
「步骤S18」细分割部116将立体结构数据存储部120所存储的混合网格数据及物体配置信息按原样发送到显示数据输出部117。显示数据输出部117将混合网格数据输出到三维显示用API140。即、由于混合网格数据可以按原样作为多边形的数据来解释,因而以原来的数据形式输出到三维显示用API140,则由少数的面(由混合网格数据所定义的面的数量)所构成的立体形状41被显示在监视器11的画面上。然后,进入到步骤S38的处理。
这样,在显示倍率小的情况下(在画面中显示为很小的情况)下,可以显示简单结构的立体形状,进行高速的画面显示。另外,即使在容许误差较大的情况下,也可以显示简单结构的立体形状,进行高速的画面显示。
图10为表示立体形状显示顺序的第2流程图。下面,根据步骤编号对图10所示的处理进行说明。
「步骤S21」细分割部116进行立体形状的分割处理所必需的参数等的初始化处理。
「步骤S22」细分割部116从被存储在立体结构数据存储部120中的混合网格数据中选择出一个面信息。
「步骤S23」细分割部116判断视点(假设摄像机)和立体形状(在步骤S22中所选择的面)的相对位置是否在变化。即、判断在所显示的画面内立体形状是否在移动。在相对位置发生变化的情况下,进入到步骤S29的处理。在相对位置没有发生变化的情况下,进入到步骤S24的处理。另外,在本实施方式中,视点和立体形状的相对位置根据来自用户的操作输入(视点的移动指示及视点的方向(视轴)的变更指示等)而进行变化。
「步骤S24」细分割部116选择一个由所选择的面信息所定义的边(端点信息的列)。
「步骤S25」细分割部116计算出所选择的边的实际分割数。这是将所选择的边的基底分割数n0对一个画面内所显示的所有的立体形状乘以共同的值
Figure C0282792100221
(Scale/Tol)而得到的数值。
「步骤S26」细分割部116将在步骤S25中所计算出的实际分割数提升为2的幂。通过将边的分割数定为2的幂,可以用简单的分割模型来进行以后的3角形多边形的分割。
「步骤S27」细分割部116判断是否决定了在步骤S22中所选择的面信息的所有的边的分割数。在所有的边的分割数决定了的情况下,进入到步骤S28的处理。如果有未处理的边,则进入到步骤S24的处理。
「步骤S28」细分割部116判断是否有必要在所有的边进行分割(分割数是否为小于等于1)。如果没有必要在所有的边进行分割,则进入到步骤S29的处理。如果有必要进行分割的边即使为一个,则也要进入到图11的步骤S31的处理。
「步骤S29」细分割部116将与在立体结构数据存储部120所存储的混合网格数据的步骤S22中所选择的面有关的信息按原样发送到显示数据输出部117。显示数据输出部117将混合网格数据输出到三维显示用API140。于是,在步骤S22中所选择的面40不进行细分割被显示到监视器11中。然后,进入到图11的步骤S37的处理。
这样,在画面中立体形状移动的情况下,将各面不进行分割进行画面显示。其结果,有少数的面(由混合网格数据所定义的面的数量)所构成的立体形状被显示到监视器11的画面中。即,可以用较少的处理高速地进行立体形状的画面显示。
图11为表示立体形状显示顺序的第3流程图。下面,根据步骤编号对图11所示的处理进行说明。
「步骤S31」细分割部116判断在图10的步骤S22中所选择的面信息为3边形还是4边形。在3边形的情况下,进入到步骤S32的处理。在4边形的情况下,进入到步骤S33的处理
「步骤S32」细分割部116进行3边形分割模型决定处理。该处理为根据各边的实际分割数将3边形决定为只是一个阶段的分割模型的处理。即、3边形的分割处理被分为多阶段来进行。在步骤S32中,进行该1个阶段的分割模型的决定。另外,3边形分割处理的详细情况,在后面进行叙述。然后,进入到步骤S34的处理。
「步骤S33」细分割部116进行4边形分割模型决定处理。该处理为根据各边的实际分割数、将4边形决定为只是一个阶段的分割模型的尬理。即、4边形的分割处理被分为多阶段来进行。在步骤S33中,进行该1个阶段的分割模型的决定。该处理的详细情况,在后面进行叙述。
「步骤S34」细分割部116决定各边的参数3次式。
「步骤S35」细分割部116根据在步骤S32、S33所决定的分割模型和在步骤S34所决定的参数3次式,将构成立体形状的各面进行细分割。被细分割的结果,在不能进行更进一步的细分割的情况下,进入步骤S36。
在可以进行细分割的情况下,细分割部116循环调出步骤S31~S36的处理。在被循环调出时的步骤S32、S33中,进行被分为多阶段所进行的细分割处理的下一个的1个阶段的分割模型决定处理。这样,通过循环调出步骤S31~S36的处理,在步骤S22所选择的面被阶段地详细划分。
「步骤S36」细分割部116将细分割后的立体形状数据发送到显示数据输出部117。显示数据输出部117将立体形状数据发送到三维显示用API140。这样,适合细分割的分割数的精确度的立体形状42~44被显示到监视器11的画面上。
另外,在被选择的面被分割为不能进一步被分割的状态时,实施步骤S36的处理。并且,在每次生成最小单位的3边形时,将该3边形的显示用的多边形数据发送到显示数据输出部117。为此,细分割部116没有必要保存立体形状全体的多边形数据。
「步骤S37」细分割部116判断是否分割了所有的面(FACE)。在分割了所有的面的情况下,进入到步骤S38的处理。在有未分割的面的情况下,进入到步骤S22的处理。
「步骤S38」细分割部116判断是否结束了所有物体的画面显示。另外,在通过用户的操作输入指示了浏览器110结束的情况下,也可以判断画面显示结束。在画面显示结束的情况下,结束处理,在继续进行其他的物体的混合网格数据的画面显示的情况下,进入到图9的步骤S14的处理。
如上所述,将放大倍率、容许误差及与视点的相对位置适合的精确的立体形状显示到画面上。并且,根据定义了较粗糙的形状的面的混合网格数据,可以显示精确度很高(误差很少)的立体形状。因此,可以减少存储立体形状数据的存储区域。
下面,对在图9~图11中所说明的每个步骤的处理的详细的内容进行说明。
[实际分割数的计算]
对图9的步骤S16和图10的步骤S25所示的实际分割数的计算处理的详细情况进行说明。
在本实施方式中,根据参数3次式F(t)(0≤t≤1)来定义表示构成立体形状的面的形状的边。如果采用参数3次式,则很容易算出边的中间点。即、通过将t=1/2代入参数3次式,可以很容易地求出中间点的坐标(不给予CPU负荷)。
在这里,如果通过参数3次式所得出的边为曲线,则在表示立体形状时将该边分割为多个线段(近似折线(折线))。这时,边的分割数越多,则被分割的线段的形状越接近原来的曲线(误差变小)。但是,当分割数多时,显示多边形数增大,处理负荷变大。因此,有必要考虑被再现的立体形状的精确度和处理负荷的平衡,对计算机100设定可容许的误差(容许误差(Tol)),决定适合该容许误差的恰当的分割数(在不超过误差的范围内的最小的分割数)。
一般来讲,要计算出在被设定的容许误差内最小的分割数,需要进行负荷很大的计算。例如,半径R的圆的分割数n可以根据
n=π/cos-1(1-Tol/R)...(1)
来求得。为了方便,将该公式(1)称为原公式。在这里,π为圆周率。在原公式(1)中所采用的反余弦(cos-1),为CPU负荷大的函数。因此,在本实施方式中,采用了高速进行分割数的计算的近似公式。该近似公式如下所示:
Figure C0282792100251
在这里,在公式(2)内作为变量包含有半径R。边的形状并不限于单纯的圆弧,也有自由曲线的情况。因此,当按照原样采用公式(2),则在决定实际分割数之前,有必要计算出定义边的曲线的曲率(半径R)。因此,在本实施方式中,不采用半径R、而采用预先所计算的单位倍率和单位误差的基底分割数(实数)来计算分割数n。
图12为表示空间曲线的折线近似的一例的图。在图12中,将空间曲线51分割为4个线段52~55。将此时的误差定为tol0。
这样,在折线(弯曲线)近似的情况下的分割数n(折线的Vector根数),根据误差tol0来判断任意的空间曲线51(在图12的例子中,分割数n=4)。将该已知的分割数n定为基底分割数n0。并且,将此时的空间曲线51的尺寸定为基准尺寸。另外,将计算出基底分割数n0时的误差定为基准误差tol0。
用户作为显示倍率指定用基准尺寸的几倍的大小来显示空间曲线51。将由用户任意所指定的显示倍率定为Scale时,将空间曲线51进行了Scale倍的曲线的分割数N1用
Figure C0282792100261
来表示。
另外,用户可以根据误差来指定将空间曲线51显示到画面时的精确度。将基准误差tol0变更为误差tol1时的分割数N2用
Figure C0282792100262
来表示。
这样,在根据基准尺寸(Scale=1)将误差定为基准误差(tol0)内的基底分割数n0在已知该空间曲线51的情况下,在Scale倍该空间曲线51,容许误差为Tol(=tol1/tol0)进行折线近似的情况下的曲线的实际的分割数(实际分割数)N用
Figure C0282792100263
来表示。容许误差Tol用与基准误差tol0的比来表示误差的大小。
在这里,n0为不依赖于显示倍率及容许误差的曲线固有的特性值。因此,将n0称为基底分割数,可以通过预先计算来高速地进行显示倍率及容许误差被变更的情况下的分割数计算。
另外,由于(Scale/Tol)的值对三维空间内的所有的显示对象为1个值,因而没有必要计算每个构成显示对象物(例如汽车)的立体形状(例如部件)的边(空间曲线)。即、根据一次乘法可以求得适合对一个边的显示倍率和容许误差的实际分割数N。在这里,基底分割数n0为正的实数,实际分割数N为将小数点以下的数提升为1的自然数。
还有,在本实施方式中,为了简化分割模型处理,实际分割数定为2的幂。如果将实际分割数定为2的幂,则通过反复边的两个分割,可以进行适合实际分割数的边的等分。
另外,将直线定为基底分割数n0=0。这样,既不会对显示倍率(Scale)产生影响,也不会对容许误差(tol)产生影响,实际分割数N经常为0。这意味着不进行分割。
下面,对图形的分割例进行说明。
图13为表示图形的分割的一例的图。在图13中,作为简单的图形的例子,表示了圆60。在这里,一边改变圆60的半径R,一边采用原公式(1)来求得分割数n。将所求得的分割数作为适合圆60的半径R的基底分割数n0。这时,将基准误差tol0定为1mm。在该情况下,半径R的变化和基底分割数n0的关系成为以下的表所示的那样。
  半径R   1000   100   10   5   2   1   0.5   0.1
  误差tol   1   1   1   1   1   1   1   1
  基底分割数n0   72.24   2.20   6.97   4.88   3.00   2.00   1.00   -
如该表所示,半径R越大,则基底分割数n0也越大。另外,由于不能计算半径R在不足0.5mm情况下的反余弦,因而不能进行计算。
根据这样所得到基底分割数n0来计算适合显示倍率和容许误差的实际分割数N。
例如,在将半径10mm的圆放大100倍(Scale=100)、以容许误差1mm(Tol=1)来近似的情况下,采用基底分割数n0=6.97来计算实际分割数。将各数值设定为公式(5)的变量,要解近似值,则为
Figure C0282792100271
将实际分割数N的小数点以下的数作为1加上,则为70。在这里,将显示倍率放大了100倍时的分割数,半径应和100倍的圆的分割数相同。在该例中,在根据原公式(1)求得了具有半径10mm的100倍的半径1000mm的圆的分割数的情况下,为70.24。将该值的小数点以下的数提升为1,则为71。因此,可以十分精确地进行近似。
下面,以1mm的误差来分割原公式(1)不能计算的半径0.1mm的圆的情况下的分割数,由于也应可以将半径10mm的圆作为1/100倍来显示,因而可以求得
[分割模型决定处理]
下面,对图11的步骤S32、S33所示的分割模型的决定处理进行详细的说明。
[3边形分割模型决定处理]
首先,对3边形分割模型决定处理进行详细的说明。在本实施方式中,由于所有的边的分割数为2的幂,因而所有的3边形可以通过4个种类的分割模型的组合来进行分割。
图14为表示3边形的分割模型的种类的图。在图14中,通过分割图表示了适合3边的分割数N的相互关系的分割模型。
第1个3边形分割模型为3边的分割数处于N、N×a1、N×a2(N为大于1的2的幂)的关系的情况。在这里,a1、a2为2的幂。即、为用同样的分割数N可以分割3边的情况。在该情况下,如分割图所示,根据分割数N来求得用参数3次式所表现的各边的分割点的坐标和分割点的法线矢量,并求得3边形的中间分割线。并且,根据中间分割线将原来的3边形分割为多个3边形。
第2个3边形分割模型为3边的分割数处于1、N、N×a3(N为大于1的2的幂)的关系的情况。在这里,a3为2的幂。即、为用同样的分割数N可以分割分割数大于1的两边的情况。在该情况下,如分割图所示,根据分割数N、对用参数3次式所表现的应分割的两边,求得分割点的坐标和分割点的法线矢量,并求得3边形的中间分割线。并且,根据中间分割线将原来的3边形分割为多个3边形。
第3个3边形分割模型为3边的分割数处于1、1、N(N为大于1的2的幂)的关系的情况。即、只分割1边的情况。在该情况下,如分割图所示,根据分割数N、对用参数3次数所表现的应分割的1边,求得分割点的坐标和分割点的法线矢量,并求得3边形的中间分割线。并且,根据中间分割线将原来的3边形分割为多个3边形。
第4个3边形分割模型为3边的分割数全是1的情况。在该情况下,不分割原来的3边形。
通过阶段地反复以上的4个模式(由于在第4个3边形分割模型中不进行分割,因而实际上为3个模式)的分割,根据各边的实际分割数来分割3边形。另外,在分割3边形时所采用的优先顺序为第1分割模型、第2分割模型、第3分割模型的顺序。
图15为表示3边形分割模型决定处理的顺序的流程图。该处理为图11的步骤S32的处理。另外,在图11中,在步骤S35中,通过循环地实施细分割处理来进行多阶段的分割(在第1阶段中进行一个分割模型的分割),但在图15中,为了容易清楚地说明分割方法,用一系列的流程图来表示多阶段的分割处理。下面,根据步骤编号来对图15所示的处理进行说明。
[步骤S51]细分割部116按照实际分割数从小到大的顺序,对边进行排序(排序)。在这里,按照实际分割数小的顺序,将各边的分割数定为i、j、k(i≤j≤k)。
[步骤S52]细分割部116判断i是否大于1。在i大于1的情况下,进入到步骤S53的处理。在i小于等于1的情况下,进入到步骤S55的处理。
[步骤S53]细分割部116根据3边形的第1分割模型、以(i、i、i)来分割各边。
[步骤S54]细分割部116更新i、j、k的值。具体来讲,将j/i的值重新设定为j。将k/i的值重新设定为k。将1设定为i。
[步骤S55]细分割部116判断j是否大于1。在j大于1的情况下,进入到步骤S56的处理。在j小于等于1的情况下,进入到步骤S58的处理。
[步骤S56]细分割部116根据3边形的第2分割模型、以(1、j、i)来分割各边。
[步骤S57]细分割部116更新j、k的值。具体来讲,将k/j的值重新设定为k。将1设定为j。
[步骤S58]细分割部116判断k是否大于1。在k大于1的情况下,进入到步骤S59的处理。在k小于等于1的情况下,进入到图11的步骤S34的处理。
[步骤S59]细分割部116根据3边形的第3分割模型、以(1、1、k)来分割各边。然后,进入到图11的步骤S34的处理。
如上所述,3边形的面的分割模型可以根据各边的实际分割数来决定。在决定了分割模型后,通过图11的步骤S34、S35将3边形细分割。
例如,考虑在对3边形的各边计算了公式(5)的实际分割数时、分别得到了(5、21、12)的结果的情况。这些值为被提升到2的幂(8、32、16)。并且,当按照值的从小到大的顺序将各边的分割数进行分类时,成为i=8、j=16、k=32(8、16、32)。
首先,由于i大于1,因而根据第1分割模型来分割。于是,各边被分割为8份。这样,i、j、k的值被更新,成为(1、2、4)。
接下来,由于j大于1,因而根据第2分割模型来分割。于是,与j和k相对应的边被分割为2份。这样,将各3边形进一步分割为多个3边形。并将j、k的值更新,成为(1、1、2)。
最后,由于k大于1,因而根据第3分割模型来分割。于是,与k相对应的边被分割为2份。这样,将各3边形分割为多个3边形。
通过这样,可以将3边形进行分割。
[4边形分割模型决定处理]
下面,对4边形的分割模型决定处理进行详细地说明。在本实施方式中,由于所有的边的分割数为2的幂,因而可以根据4个种类的分割模型的组合来分割所有的4边形。
图16为表示4边形的分割模型的种类的图。在图16中,根据分割图表示了适合4边的分割数N的相互关系的分割模型。
第1分割模型在将相对的边分为一组时,是4边的分割数处于(M、M×b1)、(N、N×b2)(M、N为大于1的2的幂)的关系的情况(括弧内的两个值为相互为组的两个边的分割数)。在这里,b1、b2为2的幂。即、为可以用同样的分割数对相对的边进行分割的情况。在该情况下,如分割图所示,用M将相对的边的一方的组进行分割,用N将其他的组进行分割。其结果,将原来的4边形分割为多个4边形。
第2分割模型在将相对的边分为一组时,是4边的分割数处于(1、M)、(1、N)(M、N为大于1的2的幂)的关系的情况。在这里,设定为具有M≤N的关系。即,是将相对的边的一方的边进行分割的情况。在该情况下,如分割图所示,4边当中的相邻的两边为分割对象。在这里,将对角线从分割对象的两个边所共有的端点引到与该端点相对的端点。通过对角线将4边形分割为两个3边形。通过将对角线的分割数定为N,可以根据3边形的分割模型将所生成的3个3边形进行分割。具体来讲,将所生成的3边形分为第3模型和第4模型。
第3分割模型为将3边形的两个边分别分割为N、M的情况。通过3边形的第2分割模型和第3分割模型的组合可以将该3边形进行分割。
第4分割模型为将3边形的两个边分别分割为N、N的情况。通过3边形的第2分割模型可以将该3边形进行分割。
根据以上的分割模型,可以将4边形进行分割。
图17为表示4边形分割模型决定处理的顺序的流程图。该处理为图11的步骤S33的处理。另外,在图11中,在步骤S35中,通过循环地实施细分割处理来进行多阶段的分割(在第1阶段中进行一个分割模型的分割),但在图17中,为了容易明白地说明分割方法,用一系列的流程图来表示多阶段的分割处理。下面,根据步骤编号来对图17所示的处理进行说明。
[步骤S61]细分割部116将对边作为组。并且,在组之间将成为相同的组的两个边的分割数的比(大的一方的分割数/小的一方的分割数)进行比较。然后,按照从分割数的比为小的一方的顺序,将各组的边进行排列。在相同组中的彼此的边中,按照分割数从小到大的顺序进行排列。这时,在配置顺序上,将所排列的各边的分割数定为i、j、k、l。分割数i的边和j的边构成一组,分割数k的边和l的边构成一组。这时,为i≤j、k≤l、j/i≤l/k的关系。
[步骤S62]细分割部116判断i和k的至少一方是否大于1。如果有任何一方大于1,则进入到步骤S63的处理。在两方都小于等于1的情况下,进入到步骤S65的处理。
[步骤S63]细分割部116根据第1个4边形分割模型来分割4边形。即、以i来分割分割数i、j的边。以k来分割分割数k、l的边。
[步骤S64]细分割部116更新i、j、k、l的值。具体来讲,将j/i的值重新设定为j。将l/k的值重新设定为l。将l设定为k。
[步骤S65]细分割部116根据第2个4边形分割模型,将由步骤S63的分割所生成的4边形分割为两份。这样,由各4边形生成两个3边形。
[步骤S66]细分割部116选择一个在步骤S65中所生成的3边形。
[步骤S67]细分割部116对在步骤S66中所选择的3边形进行3边形分割模型决定处理。例如,所选择的3边形如果是依据与4边形有关的第3分割模型,则该3边形根据3边形的第2分割模型和第3分割模型来决定分割模型。另外,所选择的3边形如果是依据与4边形有关的第4分割模型,则该3边形根据3边形的第2分割模型来决定分割模型。
[步骤S68]细分割部116判断是否分割了在步骤S65中所生成的所有的3边形。在结束了所有的3边形的分割模型决定处理的情况下,进入到图11的步骤S34的处理。如果有未处理的3边形,则进入到步骤S66的处理。
如以上那样,根据各边的实际分割数,可以决定4边形的面的分割模型。在分割模型被决定后,根据图11的步骤S34、S35,将4边形细分割。
例如,考虑在对3边形的各边计算出了公式(5)的实际分割数时,分别得到了(6、2、12、7)的结果的情况。在这里,分割数6的边和分割数2的边为相对的边,分割数12的边和分割数7的边为相对的边。这些值被提升为2的幂,成为(8、2、16、8)。并且,当以分割数的比为小的一方的组为先、按分割数从小到大的顺序将各组内的各边进行分类时,成为i=8、j=16、k=2、l=8(8、16、2、8)。
首先,由于i和k大于1,因而根据4边形的第1分割模型来进行分割。于是,分割数i的边和j的边被分割为8份。同样,分割数k的边和j的边被分割为两份。这样,i、j、k、l的值被更新,成为(1、2、1、4)。
接下来,根据第2分割模型,用对角线将由第1分割模型的分割所生成的4边形分割为两份。对对角线设定和1的值相同的分割数。这样,被分割为(1、j、1)的分割模型的3边形和(1、1、1)的分割模型的3边形。即、生成(1、2、4)的分割模型的3边形和(1、4、4)的分割模型的3边形。
关于分割数(1、2、4)的3边形,由于j(=2)大于1,因而用3边形的第2分割模型来进行分割。于是,和j、l相对应的边被分割为两份。这样,将3边形进一步分割为多个3边形。并且,j、l的值被更新,成为(1、1、2)。并且,由于l大于1,因而用3边形的第3分割模型来进行分割。于是,和1相对应的边被分割为两份。
关于分割数(1、4、4)的3边形,由于l(=4)大于1,因而用3边形的第2分割模型来进行分割。于是,和l相对应的边被分割为4份。这样,将3边形进一步分割为多个3边形。
如上述那样,将4边形分割为多个3边形。
[参数3次式决定法]
在分割边的情况下,根据对该边的端点所设定的法线矢量来决定参数3次式。并且,通过对定义了边的曲线的参数3次式的参数t(0≤t≤1)设定0.5,来求得该边的中心点。另外,参数3次式的决定法,因立体形状的面彼此之间的邻接关系而不同。
·第1邻接关系为邻接的面彼此之间平滑连接的情况。在该情况下,有从法线矢量经过切线矢量来求得的方法和从法线矢量假定两次微分矢量来求得的方法。
·第2邻接关系为在邻接的面彼此之间所共有的边曲折的情况。
·第3邻接关系为有必要强制性地指示边的形状的情况。
下面,对适合面彼此之间的邻接关系的参数3次式的决定方法进行说明。
[邻接的面彼此之间为平滑连接的情况]
图18为表示邻接的面彼此之间平滑连接的立体形状的一例的图。如图所示,立体形状71具有相互邻接的面F1a、F1b。邻接的面F1a、F1b共有边S1(t),并且边S1(t)的两端点的法线矢量N10、N11也共有邻接的面F1a、F1b。在该情况下,判断该两个邻接的面F1a、F1b在边S1(t)中为平滑连接。
在这样的情况下,可以用以下的两个方法中的任何一种方法来决定的参数3次式。
首先,对从法线矢量经过切线矢量来求得参数3次式的方法进行说明。
在该方法中,设定两端点的坐标P10、P11、两端点的法线矢量N10、N11、及切线的长度r10、r11,来决定切线矢量T10、T11。另外,在立体结构数据存储部120内的端点信息中定义端点坐标、法线矢量及切线的长度。
在该情况下,切线矢量T10与法线矢量N10相垂直,为从坐标P10面向最接近坐标P11的方向的长度r10的矢量。
用公式来表示,则如下所示。
T10=r10·N10×(P11-P10)×N10/|N10×(P11-P10)×N10|
                                             ...(8)
T11=r11·N11×(P11-P10)×N11/|N11×(P11-P10)×N11|
                                             ...(9)
在公式(8)、公式(9)中,“×”表示矢量的矢积,“·”表示标量(r0及r1)的乘法运算。
接下来,采用两端点的坐标(P10、P11)及两端点的切线矢量(T10、T11),决定满足以下4个矢量公式的参数3次式S1(t)。
S1(t=0)=P10
S1(t=1)=P11
dS1/dt(t=0)=T10
dS1/dt(t=1)=T11            ...(10)
这样,通过决定在端点的条件,可以决定三维区间内的曲线。例如,可以计算出佛格森(Ferguson)曲线。
接下来,对从法线矢量假定2次微分矢量来求得参数3次式的方法进行说明。
图19为表示采用2次微分矢量所决定的参数3次式的一例的图。如图19所示,可以进行假定(由于不是弧长中间变量的2次微分,因而不一致)两端点的2次微分矢量W20、W21和两端点的法线矢量N20、N21方向近似(也包括正负相反的情况)。这时,将法线矢量N20、N21乘以了矢量的大小r20、r21的矢量作为2次微分矢量W20、W21。
另外,由于法线矢量N20、N21总是面向面的表面,因而在给予矢量的大小r20、r21时,根据需要,通过定为负值使其与2次微分方向相吻合。例如,如果曲线在立体形状的表面方向为凸状,则将矢量的大小r20、r21定为负值。相反,如果曲线在立体形状的表面方向为凹状,则将矢量的大小r20、r21定为正值。另外,在图6所示的端点信息426的切线定义信息426c内预先设定矢量的大小r20、r21。
2次微分矢量W20、W21分别和法线矢量N20、N21相平行,长度和面向与r20、r21所示的矢量近似。将其用公式表示,则如下所示。
W20=r20·N20...(11)
W21=r21·N21...(12)
采用两端点的坐标P10、P11及两端点的2次微分矢量W20、W21,根据以下的4个矢量公式来决定参数3次式S2(t)。
S2(t=0)=P20
S2(t=1)=P21
d2S2/dt2(t=0)=W20
d2S2/dt2(t=1)=W21...(13)
由此来决定满足了这样的条件的参数3次式S2(t)。
[在邻接的面彼此之间所共有的边为曲折的情况]
下面,对在邻接的面彼此之间所共有的边为曲折的情况的参数3次式的决定方法进行说明。
图20为表示在邻接的面彼此之间所共有的边为曲折的立体形状的一例的图。图20所示的立体形状72的面F3a和面F3b通过边S3(t)相邻接。在面F3a的法线矢量N30a、N31a内,不具有使边S3(t)弯曲的成分。另一方面,处于邻接关系的面F3b的法线矢量N30b、N31b具有使边S3(t)弯曲的成分。
在象这样由邻接的面F3a和面F3b所共有的边S3(t)的两端的法线矢量不被两个面F3a和面F3b所共有的情况下,判断为该邻接的面F3a和面F3b所共有的边S3(t)为弯曲的。在该情况下,采用4根法线矢量来决定切线矢量的方向。
切线矢量T30为法线矢量N30a、N30b的矢积的方向,长度为r30的矢量。同样,切线矢量T31为法线矢量N31a、N31b的矢积的方向,长度为r31的矢量。另外,长度r30为端点30所定义的切线的长度,长度r31为端点31所定义的切线的长度。将其用公式表示,则如下所示。
T30=r30·N30a×N30b/|N30a×N30b|...(14)
T31=r31·N31a×N31b/|N31a×N31b|...(15)
下面,采用两端点的坐标(P30、P31)及两端点的切线矢量(T30、T31),来决定满足了以下4个矢量的参数3次式S3(t)。
S3(t=0)=P30
S3(t=1)=P31
dS3/dt(t=0)=T30
dS3/dt(t=1)=T31...(16)
[有必要强制性地指示边的形状的情况]
下面,对有必要强制性地指示边的形状的情况进行说明。
图21为表示强制性地指示边的形状的立体形状的一例的图。图21所示的立体形状73的面F4a和面F4b相邻接。邻接的面F4a、F4b共有边S4(t),并且,边S4(t)的两端点的法线矢量N40、N41也被邻接的面F4a和面F4b所共有。在该情况下,判断这两个邻接的面F4a、面F4b在边S4(t)中为平滑连接,在法线矢量N40、N41中不具有使边S4(t)弯曲的成分。
即使在这样的情况下,如果有必要强制地使边S4(t)弯曲,则直接设定切线矢量T40、T41。
采用两端点的坐标P40、P41及两端点的切线矢量T40、T41,来决定满足了以下的公式的参数3次式S4(t)。
S4(t=0)=P40
S4(t=1)=P41
dS4/dt(t=0)=T40
dS4/dt(t=1)=T41...(17)
如以上所述,可以决定构成立体形状的边的参数3次式。
[求得边上的任意的中间坐标和法线矢量的方法]
当决定了定义了边的曲线的参数3次式时,首先根据所决定的分割模型将边进行分割。在被分割的边的端点,有必要重新定义端点的位置和法线矢量。下面,对中间点的坐标(中间坐标)和法线矢量的计算方法进行说明。
[求得中间坐标的方法]
参照附图22对求得中间坐标的方法进行说明。
图22为表示分割对象的面的一例的图。在图22的例中,被分割的面81为3边形。面81是由具有端点P50、P51的边81a、具有端点P51、P52的边81b、具有端点P52、P50的边81c构成。在端点P50的法线矢量为V50、切线矢量为N50。在端点P51的法线矢量为V51、切线矢量为N51。
在根据参数3次式的决定法来决定从端点P50与端点P51相接的边81a的参数3次式S5(t)的情况下,通过决定参数3次式S5(t)的t值(如果为中点,则t=0.5)来决定为边81a上的任意的点Pc。
下面,参照附图22对求得中间点的法线矢量的方法进行说明。
作为任意的中间点的法线矢量的求得方法,可以考虑以下的4种决定方法。
第1种方法为假设中间点的法线矢量Nc从N50线性变化为N51的方法。该计算方式如下所示。
Nc=(1-t)N50+(t)N51...(18)
第2种方法为假设中间点的法线矢量Nc从N50线性变化为N51、与中间点的法线矢量Vc正交的方法。该计算方式如下所示。
Nc=Vc×(N50+N51)×Vc    ...(19)
第3种方法为假设中间点的法线矢量Nc从N50方向旋转到N51方向的方法。该计算方式如下所示。
Nc=Vc×N50×N51   ...(20)
但N50×N51=0的情况下的计算公式如下所示。
Nc=Vc×N50×Vc    ...(21)
第4种方法为假设中间点的法线矢量Nc从N0方向向N1方向3次变化的方法。该计算方式如下所示。
Nc=-2(N51-N50)t3+3(N51-N50)t2+N50 ...(22)
将在公式(18)~(22)所得到的矢量Nc在单位矢量内进行归一化的矢量,成为中间点的法线矢量。
[3边形的任意中间曲线的计算方法]
在将3边形进行分割时,在原来的3边形内生成新的边。这时,有必要计算所生成的边的曲线式。
图23为表示包含被分割的3边形的立体形状的一例的图。在图23中,表示有圆柱的立体形状82。立体形状82的侧面由多个3边形构成。侧面所包含的一个3边形82a,具有端点P60、P61、P62。在混合网格数据中被定义的3边形82a,例如在图像显示时被分割为多个3边形。
在这里,采用边82ba上的中间点的坐标P70和法线矢量N70、及边82bb上的中间点的坐标P71和法线矢量N71,可以求得连接两个边82ba、82bb的中间点的82ca的参数3次式。在这时,作为参数3次式的决定方法,例如根据邻接的面彼此之间为平滑连接的情况下的决定法来求得。
坐标P 70的切线的长度r70和坐标P 71的切线的长度r71,可根据以下的公式来求出。
r70=r60×|P71-P70|/|P61-P60|...(23)
r71=r61×|P71-P70|/|P61-P60|...(24)
另外,r60为在端点P60的切线的长度,r61为在端点P61的切线的长度。
[3边形的任意中间曲线的计算方法(其他方案)]
也有其他的3边形的任意中间曲线的计算方法。
图24为表示被分割的3边形的一例的图。关于图24的3边形83,P80、P81、P82表示3边形的顶点(构成3边形的边的端点)。N80、N81、N82表示P80、P81、P82的法线矢量。T81、T82表示将P81和P82作为端点的边的各端点的切线矢量。U81、U80表示将P81和P80作为端点的边的各端点的切线矢量。V82、V80表示将P82和P80作为端点的边的各端点的切线矢量。
在这里,作为在内部所生成的信息,有e80、e81、e82。e80、e81、e82表示形成三角形的边,由参数3次式所表示。
在这里,根据以下的方法求得内部中间曲线e83。
[ST1]使e82由P80面向P81、求得只进了u(0<u<l)的点P83。
[ST2]求得P83的e82的切线矢量U83。
[ST3]求得P83的法线矢量N83。
[ST4]求得在P83中U83、N83的方向关系和P81的U81、N81、T81的关系相同的切线矢量T83。
[ST5]和求得切线矢量T83的方法同样、求得和P82的V82、N82、T82的关系相同的切线矢量T84。
[ST6]根据切线矢量T83、T84、求得e83的参数3次式。
这样,可以求得为分割3边形的边界的边的参数3次式。
[4边形的内部中间坐标和法线矢量的求出方法]
下面,对4边形的内部中间坐标和法线矢量的求出方法进行说明。
首先,参照附图25对4边形的任意中间坐标的求出方法进行说明。图25为表示被分割的4边形的一例的图。在这里,将表示4边形84的公式定为S9(u、v)。当定为Coon’s曲面时,如图25所示,采用各端点的坐标P90~P93和u方向矢量U90~U93、v方向矢量V90~V93,用以下的矢量公式可以表示4边形84。
S9(u=0、v=0)=P90
S 9 ( u = 0 , v = 0 ) = P 91
S 9 ( u = 1 , v = 0 ) = P 92
S 9 ( u = 1 , v = 1 ) = P 93 · · · ( 25 )
∂ S 9 / ∂ u ( u = 0 , v = 0 ) = U 90
∂ S 9 / ∂ u ( u = 0 , v = 1 ) = U 91
∂ S 9 / ∂ u ( u = 1 , v = 0 ) = U 92
∂ S 9 / ∂ u ( u = 1 , v = 1 ) = U 93 . . . ( 26 )
∂ S 9 / ∂ v ( u = 0 , v = 0 ) = V 90
∂ S 9 / ∂ v ( u = 0 , v = 1 ) = V 91
∂ S 9 / ∂ v ( u = 1 , v = 0 ) = V 92
∂ S 9 / ∂ v ( u = 1 , v = 1 ) = V 93 . . . ( 27 )
通过将这些公式联立并解开,来求得S9(u、v),根据P=S9(u=u0、v=v0),给予(u=u0、v=v0)所表示的任意点P的坐标P。
下面,对4边形的任意中间点的法线矢量的决定方法进行说明。
根据u方向切线矢量 ∂ S 9 / ∂ u ( u = u 0 , v = v 0 ) 和v方向切线矢量 ∂ S 9 / ∂ v ( u = u 0 , v = v 0 ) 的矢积,给予(u=u0、v=V0)所表示的任意点P的法线矢量。
通过进行以上的处理,可以进行基于混合网格数据的立体形状的画面显示。
[画面显示例]
下面,参照附图26~30对立体形状的画面显示例进行说明。在本实施方式中,也可以只显示构成立体形状的边的画面。通过只显示边的画面,从视觉上来讲可以容易地在画面上认识立体形状的结构。
作为例子,对用三维CAD作成球体的立体形状的情况进行说明。表示球体的CAD数据,通过CAD数据转换部114被转换为混合网格数据。当将球体转换为混合网格数据时,例如用由8个3边形所构成的8面体来表现。
图26为表示显示了由混合网格数据所定义的立体形状的边的画面的一例的图。在图26的画面内,显示了由混合网格数据将8面体的立体形状定义时的立体形状的边(只显示线状画面)。根据任意的精度将定义了这样的结构的混合网格数据进行细分割,可以将立体形状显示到画面上。
例如,在将立体形状在画面内进行旋转的情况下、及显示倍率在显示很小的情况下,不进行混合网格数据的细分割将立体形状进行显示。
图27为表示将混合网格数据所定义的立体形状进行显示的画面的一例的图。在该画面中,将图26所示的结构的混合网格数据按原样(不进行细分割)显示时的立体形状进行显示。在图27的例子中,由于不进行细分割,因而以8个面来显示立体形状。这样,可以高速地将立体形状进行画面显示。
另一方面,在提高显示倍率、将静止的立体形状进行画面显示的情况下,进行混合网格数据的细分割。通过细分割,以大量的面再现表示球体的立体形状。
图28为表示将混合网格数据进行细分割时的立体形状的边进行显示的画面的一例的图。在图28所示的画面中,通过进行混合网格数据的细分割,将由多个面所构成的球体进行显示(只显示线状画面)。
如果也根据图28所示的结构所分割的数据进行立体形状的显示,则可以将和由三维CAD所作成时的球体同样美观的立体形状进行显示。
图29为表示将混合网格数据进行细分割时的立体形状进行显示的画面的一例的图。如图29所示,在画面中,通过进行细分割,可以将看起来几乎是球体的立体形状进行显示。
混合网格数据和原来CAD数据相比,由于数据容量很少,因而即使在将原来的立体形状详细地再现的情况下,即使HDD103等的存储容量小,也没有问题。另外,由于通过细分割每生成多边形数据时,提交给三维显示用API140,因而没有必要将细分割后的多边形数据储存到RAM102内,可以降低RAM102的使用量。即,即使是存储容量很小的RAM102,也可以显示CAD所作成的立体形状。
另外,在将立体形状进行画面显示时,采用各面的端点所定义的法线矢量,可以进行阴影显示。通过进行阴影显示,构成立体形状的1个面即使用平面多边形来显示,也可以平滑地表现各面的边界。另外,在本实施方式中,由于作为法线矢量采用了单位矢量,因而对一般的阴影显示可以直接使用。
另外,由于显示立体形状所必需的资源及处理负荷很少也不影响显示,因而即使为非常复杂的立体形状,也可以容易地进行画面显示。例如,在通过网络的合作系统上进行采用了CAD的汽车的设计,各共同操作者也可以通过网络参照表示汽车的结构的立体形状。
图30为表示汽车的立体形状的显示画面的一例的图。在图30所示的画面中,显示了汽车的发动机室的结构。即使象这样复杂结构的立体形状,在各计算机上也可以很容易地进行显示。
这样,可以以较少的处理负荷将复杂的立体形状进行画面显示。
另外,如图10所示,在本实施方式中,是判断在每个面有无视点和立体形状的相对位置的变化,但也可以判断每个立体形状(物体)有无相对位置的变化。在该情况下,例如可以取代步骤S23的处理而进行判断在步骤S14和S15之间有无视点和立体形状的基准位置的相对位置的变化的处理。如果相对位置发生变化,则进入到步骤S18的处理,如果相对位置没有变化,则进入到步骤S15的处理。
另外,在假设在三维空间内只有视点可能移动的情况等下,也可以取代判断有无视点和立体形状的基准位置的相对位置的变化而判断有无视点的移动。在该情况下,例如可取代步骤S23的处理而进行判断在步骤S13和S14之间有无视点的移动的处理。如果视点移动,则对所有的物体进行原数据显示处理(步骤S18),结束处理。如果视点没有移动,则进入到步骤S14的处理。
这样,通过在显示画面中将判断物体是否移动的处理简单化,可以达到处理的高速化。
另外,上述的处理功能可以通过计算机来实现。在该情况下,提供记述了计算机应有的功能的处理内容的程序。通过在计算机上执行该程序,可以在计算机上实现上述处理功能。记述了处理内容的程序可以存储到计算机可读取的存储介质内。作为计算机可读取的存储介质有:磁存储装置、光盘、光磁存储介质、半导体存储器等。在磁存储装置中,有硬盘装置(HDD)、软盘(FD)、磁带等。在光盘中有DVD(Digita VersatileDisc)、DVD-RAM(Random Access Memory)、CD-ROM(Compact DiscRead Only Memory)、CD-R(Recordable)/RW(ReWritable)等。在光磁存储介质中,有MO(Magneto-Optical disc)等。
在使程序流通的情况下,例如,将存储了该程序的DVD、CD-ROM等可移动型存储介质进行销售。另外,也可以将程序储存到服务器计算机的存储装置内,通过网络将该程序从服务器计算机转送到其他的计算机上。
执行程序的计算机例如将储存到可移动型存储介质内的程序或由服务器计算机转送来的程序储存到自己的存储装置内。然后,计算机从自己的存储装置中读出程序,执行依据程序的处理。另外,计算机也可以从可移动型存储介质中直接读出程序,并执行依据该程序的处理。另外,计算机也可以在每当由服务器计算机将程序转送来时,逐步执行依据了所接收的程序的处理。
如上所述,在本发明中,根据立体形状数据预先所定义的面的顶点的位置和顶点的法线方向来决定曲面形状,由于通过分割成沿该曲面形状的多个面来显示立体形状,因而可以根据较少的数据量的立体形状数据来显示高精度的立体形状。
以上所述只是表示了本发明的原理。本技术领域的技术人员可以进行各种变形和变更,本发明不限于以上说明的标准的结构及应用例,所对应的所有的变形例及等同实施方式均被认为是属于本发明的权利保护范围内。

Claims (11)

1.一种立体形状显示方法,该方法用于对物体的形状进行立体显示,其特征在于,使计算机执行如下的处理,即:
根据在至少一个面上定义了立体形状的立体形状数据,决定构成所述立体形状的所述面的各边的细分割数;
根据在所述立体形状数据中被预先定义的所述面的顶点的位置和该顶点的法线方向,决定所述面的曲面形状;
根据所述各边的细分割数来细分割被决定的所述曲面形状,从而生成沿所述曲面形状的多个细分割面;以及
显示由生成的所述多个细分割面构成的立体形状,
其中,
所述决定细分割数的步骤将所述各边的细分割数定为2的幂;
所述细分割的步骤重复对细分割模型进行选择和应用的过程,直至达到所决定的各边的细分割数;以及
所述重复过程如下将三角形细分割为多个小三角形:
将所述三角形的三个边的细分割数进行排序,由此获得按升序排列的细分割数i,j和k,其中i,j和k为2的幂,
如果i>1,选择(i,i,i)作为细分割模型,以同样的细分割数i对所述三角形的三个边进行细分割,
如果i=1并且i>1,选择(1,j,j)作为细分割模型,以同样的细分割数j对所述三角形的二个边进行细分割,
如果i=1,j=1并且k>1,选择(1,1,k)作为细分割模型,以细分割数k仅对所述三角形的一个边进行细分割。
2.根据权利要求1所述的立体形状显示方法,其特征在于,
所述决定细分割数的步骤根据与显示精度相关的操作输入来决定构成所述面的所述各边的细分割数。
3.根据权利要求2所述的立体形状显示方法,其特征在于,
与所述显示精度相关的操作输入为显示倍率的指定。
4.根据权利要求2所述的立体形状显示方法,其特征在于,
与所述显示精度相关的操作输入为容许误差的指定。
5.根据权利要求2所述的立体形状显示方法,其特征在于,
与所述显示精度相关的操作输入为显示画面内的立体形状的动作指示。
6.根据权利要求2所述的立体形状显示方法,其特征在于,
所述决定细分割数的步骤通过根据与所述显示精度相关的操作输入增减对构成所述面的所述边预先设定的基底细分割数,来决定所述各边的细分割数。
7.根据权利要求6所述的立体形状显示方法,其特征在于,
所述决定细分割数的步骤决定适应由操作输入所指定的显示倍率和容许误差的系数,根据用该系数乘以所述基底细分割数所得出的值来决定所述边的细分割数。
8.根据权利要求1所述的立体形状显示方法,其特征在于:
在显示所述立体形状时,判断在显示画面内的该立体形状有无移动,在有移动的情况下,显示由所述立体形状数据预先定义的立体形状。
9.根据权利要求1所述的立体形状显示方法,其特征在于:
在细分割矩形的情况下,所述细分割步骤选择性地执行以下两者中的任一个:
通过使用(M,N,N,N)作为所述细分割模型,将所述矩形细分割成更小的矩形,其中在上述括号中的四个参数表示所述矩形的四个连续的边的细分割数,并且M和N是2的幂;和
将所述矩形细分割成共用该矩形对角线的两个三角形。
10.一种立体形状显示装置,该装置将物体的形状进行立体显示,
其特征在于,具有:
根据在至少一个面上定义了立体形状的立体形状数据,决定构成所述立体形状的所述面的各边的细分割数的细分割数决定单元;
根据在所述立体形状数据中被预先定义的所述面的顶点的位置和该顶点的法线方向,决定所述面的曲面形状的曲面形状决定单元;
根据所述各边的细分割数来细分割由所述曲面形状决定单元所决定的所述曲面形状,从而生成沿所述曲面形状的多个细分割面的面生成单元;和
显示由利用所述面生成单元生成的所述多个细分割面构成的立体形状的显示单元,
其中,
所述细分割数决定单元将所述各边的细分割数定为2的幂;
所述面生成单元重复对细分割模型进行选择和应用的过程,直至达到所决定的各边的细分割数;以及
所述重复过程如下将三角形细分割为多个小三角形:
将所述三角形的三个边的细分割数进行排序,由此获得按升序排列的细分割数i,j和k,其中i,j和k为2的幂,
如果i>1,选择(i,i,i)作为细分割模型,以同样的细分割数i对所述三角形的三个边进行细分割,
如果i=1并且j>1,选择(1,j,j)作为细分割模型,以同样的细分割数j对所述三角形的二个边进行细分割,
如果i=1,j=1并且k>1,选择(1,1,k)作为细分割模型,以细分割数k仅对所述三角形的一个边进行细分割。
11.根据权利要求10所述立体形状显示装置,其特征在于:
在细分割矩形的情况下,所述面生成单元选择性地执行以下两者中的任一个:
通过使用(M,N,N,N)作为所述细分割模型,将所述矩形细分割成更小的矩形,其中在上述括号中的四个参数表示所述矩形的四个连续的边的细分割数,并且M和N是2的幂;和
将所述矩形细分割成共用该矩形对角线的两个三角形。
CNB028279212A 2002-02-06 2002-02-06 立体形状显示方法及立体形状显示装置 Expired - Lifetime CN100385466C (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2002/001000 WO2003067527A1 (fr) 2002-02-06 2002-02-06 Programme d'affichage de forme tridimensionnelle, procede d'affichage de forme tridimensionnelle et dispositif d'affichage de forme tridimensionnelle

Publications (2)

Publication Number Publication Date
CN1618087A CN1618087A (zh) 2005-05-18
CN100385466C true CN100385466C (zh) 2008-04-30

Family

ID=27677641

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028279212A Expired - Lifetime CN100385466C (zh) 2002-02-06 2002-02-06 立体形状显示方法及立体形状显示装置

Country Status (7)

Country Link
US (1) US7348976B2 (zh)
EP (1) EP1473678A4 (zh)
JP (1) JPWO2003067527A1 (zh)
KR (1) KR100861161B1 (zh)
CN (1) CN100385466C (zh)
AU (1) AU2002230169A1 (zh)
WO (1) WO2003067527A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003234821A1 (en) * 2003-05-19 2004-12-13 Setoguchi Laboratory Ltd. Plane shape creation system, plane shape creation method and program recording medium
GB2411331A (en) 2004-02-19 2005-08-24 Trigenix Ltd Rendering user interface using actor attributes
US7529418B2 (en) * 2004-05-20 2009-05-05 Hewlett-Packard Development Company, L.P. Geometry and view assisted transmission of graphics image streams
US8031957B1 (en) * 2006-07-11 2011-10-04 Adobe Systems Incorporated Rewritable lossy compression of graphical data
US20090115782A1 (en) * 2007-11-05 2009-05-07 Darren Scott Irons Display of Analytic Objects and Geometric Objects
CN101441781B (zh) * 2007-11-23 2011-02-02 鸿富锦精密工业(深圳)有限公司 曲面翻面方法
US8296097B2 (en) * 2009-09-24 2012-10-23 Fuji Xerox Co., Ltd. Unmoldability determination apparatus, computer readable medium, and unmoldability determination method
CN102014134A (zh) * 2010-12-01 2011-04-13 北京数码大方科技有限公司 数据文件控制方法、系统及计算机
KR101456404B1 (ko) 2010-12-02 2014-10-31 디지털 프로세스 가부시끼가이샤 표시 처리 방법 및 장치
US20130321564A1 (en) 2012-05-31 2013-12-05 Microsoft Corporation Perspective-correct communication window with motion parallax
US9767598B2 (en) * 2012-05-31 2017-09-19 Microsoft Technology Licensing, Llc Smoothing and robust normal estimation for 3D point clouds
US9846960B2 (en) 2012-05-31 2017-12-19 Microsoft Technology Licensing, Llc Automated camera array calibration
CN103162620B (zh) * 2012-10-26 2015-05-13 苏州比特速浪电子科技有限公司 图像处理装置及图像处理方法
US9797225B2 (en) 2013-11-27 2017-10-24 Saudi Arabian Oil Company Data compression of hydrocarbon reservoir simulation grids
KR101582650B1 (ko) * 2014-02-24 2016-01-07 주식회사 포디웰컴 3d 프린터 생성장치 및 방법
US9922359B2 (en) * 2014-04-08 2018-03-20 Imaginestics, Llc Three-dimensional image searching using active label technology
CN104361850B (zh) * 2014-11-04 2018-05-04 京东方科技集团股份有限公司 一种像素结构及其驱动方法、显示装置
US10078711B2 (en) * 2015-08-21 2018-09-18 International Business Machines Corporation Data driven shrinkage compensation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0996094A1 (en) * 1998-04-09 2000-04-26 Sony Computer Entertainment Inc. Image processing apparatus and image processing method, program providing medium, and data providing medium
US6222553B1 (en) * 1997-08-04 2001-04-24 Pixar Animation Studios Hybrid subdivision in computer graphics
JP2001250129A (ja) * 2000-03-03 2001-09-14 Namco Ltd ゲームシステム及び情報記憶媒体

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966140A (en) * 1997-06-20 1999-10-12 Microsoft Corporation Method for creating progressive simplicial complexes
US6600485B1 (en) * 1998-07-03 2003-07-29 Sega Enterprises, Ltd. Polygon data generation method and image display apparatus using same
US6356263B2 (en) * 1999-01-27 2002-03-12 Viewpoint Corporation Adaptive subdivision of mesh models
US6462738B1 (en) 1999-04-26 2002-10-08 Spatial Technology, Inc. Curved surface reconstruction
US6437791B1 (en) * 1999-06-11 2002-08-20 Creative Technology Ltd. Method and apparatus for supporting texture patterns larger than supported natively by a graphics chip
FR2810770B1 (fr) * 2000-06-23 2003-01-03 France Telecom Raffinement d'un maillage triangulaire representatif d'un objet en trois dimensions
JP3468464B2 (ja) * 2001-02-01 2003-11-17 理化学研究所 形状と物性を統合したボリュームデータ生成方法
US6806876B2 (en) 2001-07-11 2004-10-19 Micron Technology, Inc. Three dimensional rendering including motion sorting
US6806874B2 (en) 2001-07-24 2004-10-19 International Business Machines Corporation Method and apparatus for providing sharp features on multiresolution subdivision surfaces
JP4381743B2 (ja) * 2003-07-16 2009-12-09 独立行政法人理化学研究所 境界表現データからボリュームデータを生成する方法及びそのプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6222553B1 (en) * 1997-08-04 2001-04-24 Pixar Animation Studios Hybrid subdivision in computer graphics
EP0996094A1 (en) * 1998-04-09 2000-04-26 Sony Computer Entertainment Inc. Image processing apparatus and image processing method, program providing medium, and data providing medium
CN1272933A (zh) * 1998-04-09 2000-11-08 索尼电脑娱乐公司 图像处理装置与图像处理方法、程序提供媒体、以及数据提供媒体
US6373491B1 (en) * 1998-04-09 2002-04-16 Sony Computer Entertainment, Inc. Image processing device, image processing method and program distribution medium and data distribution medium for processing images
JP2001250129A (ja) * 2000-03-03 2001-09-14 Namco Ltd ゲームシステム及び情報記憶媒体

Also Published As

Publication number Publication date
JPWO2003067527A1 (ja) 2005-06-02
KR20040091011A (ko) 2004-10-27
EP1473678A4 (en) 2008-02-13
EP1473678A1 (en) 2004-11-03
WO2003067527A1 (fr) 2003-08-14
AU2002230169A1 (en) 2003-09-02
US7348976B2 (en) 2008-03-25
US20050078109A1 (en) 2005-04-14
KR100861161B1 (ko) 2008-09-30
CN1618087A (zh) 2005-05-18

Similar Documents

Publication Publication Date Title
CN100385466C (zh) 立体形状显示方法及立体形状显示装置
US10140386B2 (en) Tessellated data visualization system
US20140078143A1 (en) Apparatus and method for scheduling of ray tracing
US20060010141A1 (en) Method, computer program product and data structure for representing two- or three-dimensional object modeling
US10592242B2 (en) Systems and methods for rendering vector data on static and dynamic-surfaces using screen space decals and a depth texture
US11574084B1 (en) Methods and systems for geometric analysis of a part for manufacture
US11551412B2 (en) Systems and methods for traversing implied subdivision hierarchical level of detail content
CN110363837A (zh) 游戏中纹理图像的处理方法及装置、电子设备、存储介质
CN117036567A (zh) 一种三维场景模型渲染方法
Castro et al. Statistical optimization of octree searches
JP4437504B2 (ja) 3次元表示プログラム、3次元表示装置、および3次元表示方法
CN110223395B (zh) 一种三维场景物料模型动态构建方法及系统
Söderlund et al. Ray Tracing of Signed Distance Function Grids
US11687687B1 (en) Apparatuses and methods for superimposition of a cross-sectional drawing over a three-dimensional model
US20230097562A1 (en) Acceleration structures with delta instances
Ghazanfarpour et al. Proximity-aware multiple meshes decimation using quadric error metric
US6850638B1 (en) System for naming faces and vertices in an adaptive hierarchical subdivision surface
US5325308A (en) Simulation method of machining steps
US6567082B1 (en) Incremental resolution changes in multi-resolution meshes with update records
CN113643191A (zh) 用于体素模型的平滑方法、装置及电子设备
US11847746B2 (en) Server and method for generating best view spots
Xing et al. MR environments constructed for a large indoor physical space
Du et al. TSS BVHs: tetrahedron swept sphere BVHs for ray tracing subdivision surfaces
US20060152521A1 (en) Method, device and computer program for processing a computer aided polygon model
Lai et al. A cell subdivision strategy for r‐nearest neighbors computation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20080430