NMM3DViewer 设计

     在FrameworkInterfaces工程的INMM3DServer.cs中定义了

    岩石材料结构 BlockMaterial  -----> StrBLOCKProperty
     public struct StrBLOCKProperty
        {
            public int      nID;
            public double   dbDensity;        //密度       [0]
            public double   dbYoungModulus;        //杨氏模量 [0]
        public double     dbPoissonRadio;        //泊松比   [0]
        public double[] dbGravityDirection;     //重力方向 [0,0,-1]
        public double     dbGravityAcceleration;    //重力加速度[9.8]
        public double[] dbInitialStress;    //初始应力  [0,0,0]
        public double     dbStressGradient;    //应力梯度  [0]
    }
    节理材料结构 faceMaterial  ----> StrFaceProperty
    public struct StrFACEProperty
    {
        public int nID;
        public double dbCohesion;        //粘聚力   [0]
        public double dbFriction;        //摩擦角   [0]
        public double dbTensileStrength;    //抗拉强度 [0]
        public double dbAperture;        //节理宽度 [0]
    }

    关键块结构 keyblock
    public struct StrTARGETBLOCKMODEL
    {
        public StrBLOCK[]   ObjBlockArr;
            public StrFACET[]   ObjFACETArr;
            public StrVERTEX[]  ObjVERTEXArr;
    }
        public struct StrBLOCK
        {
                public int      nID;
                 public int      nEDGECOUNT;
                public int[]    nFACEIDs;
                public int[]    nVERTEXIDs;
                public int      nBLOCKTYPEIndex;
                public int      nBLOCKMATERIALIndexID;
       }
        public struct StrKEYBLOCK
        {
                public int      nBLOCKID;
                 public int      nITERATION;
               public double[] dbVECTOR;
                 public double   dbFORCE;
                 public double   dbVOLUME;
        }
        public struct StrFACET
        {
            public int      nID;
            public int[]    nVERTEXIDs;
            public double[] dbNORMALVECTOR;
            public double   dbDISTANCE;
            public double   dbAREA;
                public int      dbFACETMATERIALIndexID;
            public int      dbFACETIndexID;
        }
        public struct StrVERTEX
        {
            public int      nID;
            public double[] dbCOORD;
        }

2. 界面部分摘主要的重新写 - 2周时间 (8个工作日内)                                                           
    
3. 确定交换数据定义和接口  -- 1周时间
    a. 定义岩石材料和节理材料的接口 ----》 调用接口传给底层
    b. 定义 切割 接口          ----》 调用接口传给底层
    c. 定义 分析 接口        ----》 动用接口传给底层

4. 渲染和选择    --  3周时间(10个工作日)
    改用osg作为3D渲染平台

5. 集成测试        -- 2周时间

6. 操作手册和说明文档    -- 1周时间(并行)
////////////////////////////////////////////////////

系统架构
架构1 :
        ///////////////////////////////////////////////////////////    
        //         “系统界面框架模块”
        //    使用Virtual C#开发.NetFrameWork 4.0(doNet控件)
        //          程序名:NMM3DVIEWER.exe
        //        工程名:MainUI
        //////////////////////////////////////////////////////////
                    /\
                    ||
                    \/
    //////////////////////////////////////////////////////////////////////////////
    //                "中间层模块"
    //        功能:采用托管C++将底层的C++类封装以便上层C#调用
    //        一个或多个dll,以N打头
    //            
    //////////////////////////////////////////////////////////////////////////////
                    /\
                    ||
                    \/"核心层模块"
    /////////////////////////////////////////////////////////////////////////////////////
    //                    "逻辑模块"
    //                定义显示控制和专业应用的逻辑接口
    //                实现业务逻辑与具体实现技术分离
    //                                     模块名称:RockInterface.dll
    //                 调用业务模块和渲染模块相关接口实现
    //    --------------------------------------------------------------------------
    //        |                 |             |                                                            
    //       "专业业务模块"                         |        "3D渲染模块"
    //C++封装的dll负责切割,分析等专业算法的实现 |负责渲染“岩石”“节理面”等专业对象
    //在此模块中定义基础数据结构             |场景操控,用户交互,选择反馈,漫游等
    //       模块名称:???.dll                     |       模块名称:RockScene.dll
    //                         |    
    /////////////////////////////////////////////////////////////////////////////////////

 

架构2

        ///////////////////////////////////////////////////////////    
        //         “系统界面框架模块”
        //    使用Virtual C++开发 office风格的窗口界面
        //          程序名:NMM3DVIEWER.exe
        //        工程名:  NMMRockExplore
        //////////////////////////////////////////////////////////
                    /\
                    ||
                    \/"核心层模块"
    /////////////////////////////////////////////////////////////////////////////////////
    //                    "逻辑模块"
    //                定义显示控制和专业应用的逻辑接口
    //                实现业务逻辑与具体实现技术分离
    //                                     模块名称:RockInterface.dll
    //                 调用业务模块和渲染模块相关接口实现
    //    --------------------------------------------------------------------------
    //        |                 |             |                                                            
    //       "专业业务模块"                         |        "3D渲染模块"
    //C++封装的dll负责切割,分析等专业算法的实现 |负责渲染“岩石”“节理面”等专业对象
    //在此模块中定义基础数据结构             |场景操控,用户交互,选择反馈,漫游等
    //       模块名称:???.dll                     |       模块名称:RockScene.dll
    //                         |    
    /////////////////////////////////////////////////////////////////////////////////////

posted on 2015-07-29 17:29  3D入魔  阅读(560)  评论(0编辑  收藏  举报