案例描述:
     我正在利用OpenGL+VC开发一个三维空间的服装设计系统。我要进行两步工作:
     1  在三维的虚拟环境中,在立体人体上进行服装结构线的设计。(*.gmt文件)
     2  把三维环境下设计好的服装结构映射到二维平面,形成所谓的服装样板。(*.pat文件)
     在上面两步操作中,三维环境下我自己定制了.gmt文件进行文档数据的serilize;二维的环境下我
     定制了.pat文件进行文档二维数据的serilize.并利用一定的映射算法(灵感来自于gis系统的常 用算法),来实现三维到二维的映射,即从三维的结构图得到平面的二维的服装样板,同时完成了.gmt文件到.pat文件的数据传递。
    我的一种方案是(方案一):把这两种类型的文件集成到一个多文档的应用程序中。即在一个应用程序中创建两种形式的文件类型。
    还有一种方案(方案二):是为该三维系统和二维系统各自创建一个应用程序,即两中文件各自位于一个单独的应用系统中。
    各位有类似开发经历的同行们认为那一种方案更佳呢?
    还有就是如何在一个多文档的应用程序中注册两种文件类型呢?(我还没有做过尝试过,请尝试的兄弟简单说明一下)
     

解决方案 »

  1.   

    连 syy64(太平洋)都关注我的这个贴子,顿感无限荣幸啊!!呵呵
      

  2.   

    综合到一个app里面几乎是不二的选择。
    开发起来也很容易,没什么难度。
    用户的操作会大大的方便,大大的得益于这种结构。能介绍一下三维到二维的映射的思想吗?我很好奇
      

  3.   

    alphapaopao(炮炮):
       你好,想必你是个高手吧!!呵呵
       你经常帮我解答问题,在此身表谢意!
       我简单介绍一下我的三维到二维的映射思想。
       首先我声明我的这个思想的灵感来源于GIS系统。
       所谓数值变换的方法,其实质在于在若干共同点的坐标之间建立一定幂次的多项式来逼近通用坐标变换公式,通常采用下列形式的三次多项式。
       何谓“若干共同点”呢?即人体的关键点。比如乳凸点,肩点,腰线中点等。
       我选用的是下列形式的三次多项式:
        (式一)X=a000+a001x+a010y+a100z+a002x^2+a020y^2+a200z^2+a0xy+a101yz+a110xz
    +a003x^3+a030y^3+a300z^3+a012x^2y+a021x^2z+a102xy^2+a120y^2z+a201xZ^2+a210yz^2+a111xyz
        (式二)Y=.........(与上式同,a换成b)
        (式三)0=..........(a换成c)(二维的Z坐标为0)
         为了解算这种三次多项式,先要确定多项式的系数a,b,c,为此,须在两种投影之间选定地理坐标相应的20个基谁点,将它们分别代入上式。利用主原高斯消去法,解方程组,得到系数a,b,c
        至此,就建立了三维到二维的映射模型。
      呵呵,不知道我说明白了吗?
      

  4.   

    纠正一点错误:
       接上面的方程组,应该选20个点。即在三维空间的人体上选择20个点(x,y,z),然后再在二维的平面上选择20个点(x,y,0)。
       将这两组已知点的坐标代入方程组,即可解得方程得系数了:)
      

  5.   

    "我想对应点的选取应该是软件在设计过程中就选取好了吧??"
    >> 如果是这样,软件岂不是求解固定的一个问题?
      

  6.   

    每个DOC-View做成一个dll或com组件 而每个dll就对应一种或很多种的文档格式我就是这么做的效果不错啊.
    看看我的配置文件吧
    <?xml version="1.0" encoding="gb2312"?>
    <plugInConfig>
    <plugIns>
    <plugIn model="Doc">
    <item code="1" plugFile="plugin\ObtGcomWhiteBoardPlugIn.dvp" type="gcfw"/>
    <item code="2" plugFile="plugin\ObtGcomGcfPlugIn.dvp" type="pdf,gcfp"/>
    <item code="3" plugFile="plugin\ObtGcomImagePlugIn.dvp" type="gcfa,bmp,jpg,jpeg,gif,mng,jng,ico,tiff,tif,tga,wbmp,j2k,jp2,jbg,pgx,png,pgm,ppm,ras,wmf,emf,pcx,jpc,pnm"/>
    <item code="4" plugFile="plugin\ObtGcomMultiMediaPlugIn.dvp" type="mpg4,mp41,mp42,divx,mp4x,mp4v,div3,div4,div5,div6,dx50,mp4,xvid,xvix,ram,rmm,ra,rm,rmx,rmj,rms,mnd,rmvb,avi,mpeg,mpg,mpe,m1v,mp2,mp3,mpv2,mp2v,mpa,mid,midi,rmi,aif,aifc,mov,qt,au,snd,wav,wmv,wma,asf,wm,cda,dat,gcfm"/>
    <item code="5" plugFile="plugin\ObtGcomHtmlPlugIn.dvp" type="gcfh"/>
    <item code="6" plugFile="plugin\ObtGcomInfoPlugIn.dvp" type="gcfi"/>
    <item code="7" plugFile="plugin\ObtGcomFlashPlugIn.dvp" type="swf,gcff"/>
    </plugIn>
    </plugIns>
    </plugInConfig>
      

  7.   

    按照各位的意见,我已经按方案一完成了系统的结构设计。
    谢谢各位。
    本想另开一帖,问一些相关的其他问题。但是,为了保持问题的联贯性,为了关注本帖的同行们,能够通过本帖完整的学点东西,我就把相关的问题,在本帖继续发问了。这样,几个问题串在一起,可以形成一个非常好的学习资料。三维的绘图环境我是用的OpenGL。
    当然,本系统还需要搭建一个二维的绘图环境。各位认为我在二维的绘图环境中,是依然使用OpenGL还是改用GDI呢?