基于Qt的海洋模拟

1、案例介绍

案例位置examples/Cuda/HeigthField/Qt_HeightField

功能介绍:该案例主要展示Qt框架下的高度场海洋仿真功能。用户可以在工具架上便捷的创建高度场相关的仿真任务,并通过节点编辑界面对节点进行编辑,通过属性编辑器对节点的属性进行修改。

案例说明:该案例仿真效果与GL_OceanPatch示例一样,主要展示Qt界面。用户点击OceanPatch节点时,可以动态调节以下属性。例如通过调节Wind Type属性,来控制风速大小,不同的数值可产生不同等级的海浪。目前支持0-12级风速。通过调节Wind Direction来控制风的方向。

2、程序实现

  • 创建场景图:
	std::shared_ptr<SceneGraph> scn = std::make_shared<SceneGraph>();
  • 创建Ocean节点和OceanPatch节点,构建海洋环境。
	auto root = scn->addNode(std::make_shared<OceanPatch<DataType3f>>());
	auto mapper = std::make_shared<HeightFieldToTriangleSet<DataType3f>>();
	root->stateHeightField()->connect(mapper->inHeightField());
	root->graphicsPipeline()->pushModule(mapper);
  • 创建海洋渲染节点:
	auto sRender = std::make_shared<GLSurfaceVisualModule>();
	sRender->setColor(Vec3f(0, 0.2, 1.0));
	mapper->outTriangleSet()->connect(sRender->inTriangleSet());
	root->graphicsPipeline()->pushModule(sRender);
  • 在Qt框架中创建高度场导航栏。用户可以在导航中快速创建相关案例。
HeightFieldLibrary::initStaticPlugin();