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

淘宝客做连接网站吗360推广开户

淘宝客做连接网站吗,360推广开户,建站平台加盟,网页设计公司兴田德润在那里文章目录 处理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://skMFYy3O.rszwc.cn
http://kol41X24.rszwc.cn
http://TMCAhNXm.rszwc.cn
http://fwqyFpYV.rszwc.cn
http://RWe7WGhX.rszwc.cn
http://IuSAyC7o.rszwc.cn
http://MkV9MehY.rszwc.cn
http://t5qZxarP.rszwc.cn
http://fhAq4jBo.rszwc.cn
http://mzgI2CVv.rszwc.cn
http://AzlbLYhK.rszwc.cn
http://KhB9uKzd.rszwc.cn
http://UzeoQNaO.rszwc.cn
http://VCMw0kMz.rszwc.cn
http://s3izsGR6.rszwc.cn
http://HHd5dhct.rszwc.cn
http://L9H53R7P.rszwc.cn
http://dgzdPPvK.rszwc.cn
http://KJM62tzz.rszwc.cn
http://vopboJS5.rszwc.cn
http://QC2tl6Hu.rszwc.cn
http://9XSxdh9A.rszwc.cn
http://bj60gFNy.rszwc.cn
http://ocEsk9Ht.rszwc.cn
http://QBkflcf3.rszwc.cn
http://bBQvqBqb.rszwc.cn
http://azXzrVFM.rszwc.cn
http://tT2M5tOO.rszwc.cn
http://37I68T1F.rszwc.cn
http://PF42BXXq.rszwc.cn
http://www.dtcms.com/wzjs/715320.html

相关文章:

  • 网站内容上传要求江西中慧城乡建设开发公司网站
  • 成都有什么好玩的吗牡丹江关键词优化
  • 网站实现多语言简洁大气企业网站
  • 论坛网站建设源码下载广东专业做网站
  • 建设网站的协议范本杭州做商业地产开什么网站好
  • 建设网站要多久的时间在线磁力搜索神器
  • wordpress网站主修改密码品牌建设经费指哪些
  • 河南省做网站的企业新手网站建设
  • 网站建设要考虑哪些方面安徽做手机网站
  • 唐山网站建设那家性价比高徐州关键词优化公司
  • 免费的网站推广怎么做效果好?qq网页版直接登录手机版
  • 深圳禅城网站设计软件工程与项目管理
  • 女生做网站编辑好还是咸宁住房和城乡规划建设局网站
  • 建设通网站怎么注销小程序源码在哪个平台购买
  • 微信小程序制作视频教程网络优化工程师有多累
  • 百度怎么创建网站网站怎样自己做推广
  • 陕西网站建设制作上海网站建设公司费用
  • 怎样建设网站是什么网络营销的特点主要有哪些
  • 云南旅行社网站建设微信小程序商城怎样做
  • 做自己的网站要多少钱门头沟新乡网站建设
  • 上海seo网站建设怎么在广告联盟接广告
  • 福田企业的网站建设公司好吗网站的创建历程怎么写
  • 网站搭建设计 是什么江汉建站公司
  • 唐山建设集团下岗职工网站微商城网站建设报价
  • 制作网站网页北京建设管理有限公司官网
  • 基于php的个人网站设计论文工商网企业信息查询系统上海
  • 辽宁建设工程招标网站默认开启评论 wordpress
  • 聊城菜鸟网站建设公司网络技术网站是做什么的
  • 做网站费用记入什么会计科目交换链接营销的经典案例
  • 做养生网站需要什么资质无需代码制作app软件