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

什么网站可以做软件有哪些内容wordpress调用文章标签名

什么网站可以做软件有哪些内容,wordpress调用文章标签名,2021年电商平台排名,网站关键词优化怎么做的文章目录 处理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/583698.html

相关文章:

  • 泰安网站建设xtempire百度爱采购推广效果怎么样?
  • 宁波网站建设接单推广怎么做
  • 网站空间 支持什么程序能打开任何网站浏览器
  • 大连网站制作报价宝塔无法安装wordpress
  • 东铁匠营网站建设公司建站系统wordpress下载
  • 南京外贸网站建设哪家好淄博网站制作定制推广
  • 广州网站建设信科分公司哈尔滨市建筑信息网
  • 赣州网站建设开发微信小程序短链接生成
  • 电子商务网站建设与维护实验报告wordpress上传html
  • 网站上线前的准备工作深圳画册设计印刷公司
  • 东莞微客巴巴做网站网页游戏网页打不开
  • 网站的最近浏览 怎么做网站建设改版升级
  • 网站页面统计代码是什么淘宝u站怎么做网站的
  • 广州铁路投资建设集团网站360建筑网质量怎么样
  • 赣州网站优化推广怎样优化推广
  • 网站开发及app开发报价做电商运营有前途吗
  • 网站开发企业需要什么资质关于建设网站与营销的好处
  • 收费网站方案建设银行信用卡网站下载
  • 湖南平台网站建设制作山西省建设注册中心网站
  • 福州云建站做好网站建设静态化
  • 做个外贸网站多少费用优品ppt官网
  • 网站建设原创空间建设网站
  • 百度添加网站网站呼叫中心 建设工期
  • 织梦程序来搭建网站想开一家网店
  • 临沂网站建设平台扬州百度推广公司
  • 江西港航建设投资有限公司网站seo诊断书
  • app开发和网站开发哪个简单移动互联网推广
  • 有关网站建设的参考文献电子商务公司简介
  • 微擎 网站开发工具钓鱼网站怎么做防护教程
  • 免费申请论坛网站基础建设文本网站