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
// |
/////////////////////////////////////////////////////////////////////////////////////
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2008-07-29 换肤软件摘要