当前位置: 首页 > wzjs >正文

做app还是做网站seo sem是什么意思

做app还是做网站,seo sem是什么意思,温州哪里有做网站,手机做网站公司有哪些文章目录 处理OBJ文件Jet渲染风格Viridis渲染风格CoolToWarm渲染风格Grayscale渲染风格Rainbow渲染风格切换风格按钮槽函数(可优化)相关代码github链接 将 .obj 数据进行 Elevation 着色并可视化渲染的完整流程 和.ply文件处理方式一样 处理OBJ文件 vo…

文章目录

  • 处理OBJ文件
  • Jet渲染风格
  • Viridis渲染风格
  • CoolToWarm渲染风格
  • Grayscale渲染风格
  • Rainbow渲染风格
  • 切换风格按钮槽函数(可优化)
  • 相关代码github链接

.obj 数据进行 Elevation 着色并可视化渲染的完整流程

和.ply文件处理方式一样

处理OBJ文件


void ThreeDimensionalDisplayPage::loadObjFile(vtkSmartPointer<vtkPolyData> _poly_data)
{renderer_->RemoveAllViewProps();renderer_->SetBackground(1.0, 1.0, 1.0); // 白色背景// 获取边界和中心double bounds[6];_poly_data->GetBounds(bounds);double center[3] = {(bounds[0] + bounds[1]) / 2.0,(bounds[2] + bounds[3]) / 2.0,(bounds[4] + bounds[5]) / 2.0};// Elevation Filter 按 Z 值添加标量vtkNew<vtkElevationFilter> elevationFilter;elevationFilter->SetInputData(_poly_data);elevationFilter->SetLowPoint(0, 0, bounds[4]);  // 最低ZelevationFilter->SetHighPoint(0, 0, bounds[5]); // 最高ZelevationFilter->Update();// 获取标量范围double scalarRange[2];elevationFilter->GetOutput()->GetScalarRange(scalarRange);vtkSmartPointer<vtkLookupTable> colorLookupTable = createJetLookupTable(scalarRange[0], scalarRange[1]);// 映射器vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(elevationFilter->GetOutputPort());mapper->SetScalarRange(scalarRange);mapper->SetLookupTable(colorLookupTable);mapper->SetColorModeToMapScalars();mapper->ScalarVisibilityOn();// 面ActorsurfaceActor_ = vtkSmartPointer<vtkActor>::New();surfaceActor_->SetMapper(mapper);surfaceActor_->GetProperty()->SetOpacity(1.0);renderer_->AddActor(surfaceActor_);surfaceActor_->SetVisibility(is_surface_visible_);// 线框ActorwireframeActor_ = vtkSmartPointer<vtkActor>::New();wireframeActor_->SetMapper(mapper);wireframeActor_->GetProperty()->SetRepresentationToWireframe();wireframeActor_->GetProperty()->SetColor(0.2, 0.2, 0.2);wireframeActor_->GetProperty()->SetLineWidth(1.0);renderer_->AddActor(wireframeActor_);wireframeActor_->SetVisibility(is_wireframe_visible_);// 点ActorpointsActor_ = vtkSmartPointer<vtkActor>::New();pointsActor_->SetMapper(mapper);pointsActor_->GetProperty()->SetRepresentationToPoints();pointsActor_->GetProperty()->SetPointSize(6);pointsActor_->GetProperty()->SetColor(0.0, 0.0, 1.0);renderer_->AddActor(pointsActor_);pointsActor_->SetVisibility(is_points_visible_);renderer_->ResetCamera();renderWindow_->Render();m_pScene->update();
}

将jet风格渲染封装成了一个函数,统一调用

Jet渲染风格


vtkSmartPointer<vtkLookupTable> ThreeDimensionalDisplayPage::createJetLookupTable(double minValue, 
double maxValue, double gamma)
{auto lut = vtkSmartPointer<vtkLookupTable>::New();lut->SetNumberOfTableValues(256);lut->SetRange(minValue, maxValue); // 设置标量范围for (int i = 0; i < 256; ++i){double t = static_cast<double>(i) / 255.0;// 非线性调整 t,使颜色更集中于中间值t = std::pow(t, gamma);// Jet 配色映射:蓝 → 青 → 绿 → 黄 → 红double r = std::clamp(1.5 - std::abs(4.0 * t - 3.0), 0.0, 1.0);double g = std::clamp(1.5 - std::abs(4.0 * t - 2.0), 0.0, 1.0);double b = std::clamp(1.5 - std::abs(4.0 * t - 1.0), 0.0, 1.0);lut->SetTableValue(i, r, g, b);}lut->Build();return lut;
}

在这里插入图片描述

Viridis渲染风格

vtkSmartPointer<vtkLookupTable> ThreeDimensionalDisplayPage::createViridisLookupTable(double minValue,double maxValue)
{auto lut = vtkSmartPointer<vtkLookupTable>::New();lut->SetNumberOfTableValues(256);lut->SetRange(minValue, maxValue);for (int i = 0; i < 256; ++i){double t = i / 255.0;// 近似 Matplotlib Viridis 色带(更精确的RGB值可参考官方定义)double r = 0.2795 + 0.4702 * t + 0.1649 * t * t - 0.0008 * t * t * t;double g = 0.0021 + 0.7047 * t + 0.0704 * t * t - 0.0053 * t * t * t;double b = 0.3904 + 0.1066 * t + 0.1968 * t * t - 0.0641 * t * t * t;lut->SetTableValue(i, r, g, b);}lut->Build();return lut;
}

在这里插入图片描述

CoolToWarm渲染风格

vtkSmartPointer<vtkLookupTable> ThreeDimensionalDisplayPage::createCoolToWarmLookupTable(double minValue,double maxValue)
{auto lut = vtkSmartPointer<vtkLookupTable>::New();lut->SetNumberOfTableValues(256);lut->SetRange(minValue, maxValue);for (int i = 0; i < 256; ++i){double t = i / 255.0;double r = t;                     // 红:从0→1double g = 1 - fabs(t - 0.5) * 2; // 绿:中间最亮double b = 1 - t;                 // 蓝:从1→0lut->SetTableValue(i, r, g, b);}lut->Build();return lut;
}

在这里插入图片描述

Grayscale渲染风格

vtkSmartPointer<vtkLookupTable> ThreeDimensionalDisplayPage::createGrayscaleLookupTable(double minValue, 
double maxValue)
{auto lut = vtkSmartPointer<vtkLookupTable>::New();lut->SetNumberOfTableValues(256);lut->SetRange(minValue, maxValue);for (int i = 0; i < 256; ++i){double gray = i / 255.0; // 从黑→白lut->SetTableValue(i, gray, gray, gray);}lut->Build();return lut;
}

在这里插入图片描述

Rainbow渲染风格


vtkSmartPointer<vtkLookupTable> ThreeDimensionalDisplayPage::createRainbowLookupTable(double minValue,double maxValue)
{auto lut = vtkSmartPointer<vtkLookupTable>::New();lut->SetNumberOfTableValues(256);lut->SetHueRange(0.666, 0.0); // 色相从蓝(0.666)→红(0.0)lut->SetSaturationRange(1.0, 1.0);lut->SetValueRange(1.0, 1.0);lut->SetRange(minValue, maxValue);lut->Build();return lut;
}

在这里插入图片描述

切换风格按钮槽函数(可优化)

void ThreeDimensionalDisplayPage::updateColorStyle(int style)
{current_color_style = style;if (ply_point_actor_) // PLY点云模型{auto mapper = vtkPolyDataMapper::SafeDownCast(ply_point_actor_->GetMapper());if (mapper){vtkSmartPointer<vtkLookupTable> new_lut;switch (style){case 0:new_lut = createJetLookupTable(current_scalar_range[0], current_scalar_range[1], 1.0);break;case 1:new_lut = createViridisLookupTable(current_scalar_range[0], current_scalar_range[1]);break;case 2:new_lut = createCoolToWarmLookupTable(current_scalar_range[0], current_scalar_range[1]);break;case 3:new_lut = createGrayscaleLookupTable(current_scalar_range[0], current_scalar_range[1]);break;case 4:new_lut = createRainbowLookupTable(current_scalar_range[0], current_scalar_range[1]);break;}mapper->SetLookupTable(new_lut);renderWindow_->Render();}}if (surfaceActor_) // OBJ网格模型{auto mapper = vtkPolyDataMapper::SafeDownCast(surfaceActor_->GetMapper());if (mapper){vtkSmartPointer<vtkLookupTable> new_lut;switch (style){case 0:new_lut = createJetLookupTable(current_scalar_range[0], current_scalar_range[1]);break;case 1:new_lut = createViridisLookupTable(current_scalar_range[0], current_scalar_range[1]);break;case 2:new_lut = createCoolToWarmLookupTable(current_scalar_range[0], current_scalar_range[1]);break;case 3:new_lut = createGrayscaleLookupTable(current_scalar_range[0], current_scalar_range[1]);break;case 4:new_lut = createRainbowLookupTable(current_scalar_range[0], current_scalar_range[1]);break;}mapper->SetLookupTable(new_lut);renderWindow_->Render();}}
}

相关代码github链接

http://www.dtcms.com/wzjs/205864.html

相关文章:

  • 网站做电子链接标识申请好吗可口可乐软文营销案例
  • 企业网站备案怎么填写seo上海推广公司
  • 上海网页设计服务5g网络优化工程师
  • 网站维护项目2021百度seo
  • 哪个网站做课件ppt比较好整站优化和关键词优化的区别
  • 化妆品网站模板下载百度运营推广
  • wordpress金融插件百度seo正规优化
  • lnmp怎么做网站竞价推广遇到恶意点击怎么办
  • 网站改域名如何做百度优化sem培训机构
  • 前端只是做网站吗搞一个公司网站得多少钱
  • 宛城区网站建设烟台seo网络推广
  • 三门峡 网站开发郑州手机网站建设
  • 建设银行网站不足和建议百度竞价推广点击软件
  • 青岛网上房地产网站狠抓措施落实
  • wordpress快速扒站优化软件下载
  • 深圳有什么互联网公司惠州seo排名收费
  • 建设网站成都免费使用seo软件
  • 无锡 网站建设公司网站推广方案有哪些
  • 东莞中企动力做网站公众号怎么推广
  • 北京网站设计培训机构重庆森林粤语完整版在线观看免费
  • wordpress网站基础知识西安百度推广开户
  • 移动网站适配如何进行搜索引擎优化?
  • 做海外市场什么网站推广什么平台引流最快
  • 武汉做网站多少钱如何开网站呢
  • 卖产品的网站怎么做深圳seo招聘
  • 哈尔滨网站设计企业网站推广有哪些
  • 怎么提高网站排名优化营商环境工作开展情况汇报
  • 专业手机建站公司seo刷点击软件
  • css做网站怎么添加子页免费发布广告信息的网站
  • 网站制作的一般步骤是什么建网站用什么工具