提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:吴秋红|2024-04-22 11:16:57.393|阅读 14 次
概述:在本教程中,我们将使用涡轮发动机模型来演示反射平面、两种类型的阴影和光晕。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
渲染效果
当需要创建具有非常高视觉质量的图像时,可以提供多种渲染效果。在本教程中,我们将使用涡轮发动机模型来演示反射平面、两种类型的阴影和光晕。
本教程将使用沙盒应用程序,对于C++用户,您可以从mfc_sandboxCHPSView::OnUserCodeX项目开始。如果您想按照本教程进行操作,则可以在function中放置代码;C#用户将使用wpf_sandbox应用程序-您将代码放置在DemoUserCommand**X**::Execute.
1.1 加载涡轮机模型
构建并运行沙箱后的第一步是加载涡轮机模型文件。该文件可以在Visualize安装的样本/数据目录中找到。这是一个HSF文件,因此可以通过本机加载。使用沙箱的主菜单将其加载到沙箱中。或者,您可以使用以下代码片段以编程方式加载文件:
HPS::Stream::ImportNotifier notifier; try { HPS::Stream::ImportOptionsKit importOptionsKit; importOptionsKit.SetSegment(mySegmentKey); notifier = HPS::Stream::File::Import(filename, importOptionsKit); // pauses this thread until the HSF is finished loading notifier.Wait(); } catch (HPS::IOException const& e) { // handle exception}
您还需要获取对模型的段键的引用。如果您以编程方式加载该文件,则应该向HPS::ImportOptionsKit.如果您使用沙箱应用程序的文件菜单加载模型,则可以获得模型段,如下所示:
HPS::SegmentKey modelSegmentKey = GetTopView().GetAttachedModel().GetSegmentKey();
有关加载HSF的更多信息,请参阅编程指南的第 9.1节。加载完成后,您应该看到下图:
涡轮发动机的默认视图
1.2 添加反射平面和照明
您可以相对轻松地应用的一种奇特效果是反射平面。SetSimpleReflectionPlane使用平面的几何方程指定平面:
Ax + By + Cz + D = 0
还可以使用反射图像的其他选项,例如不透明度、模糊、褪色和衰减。我们还将添加照明,使模型显得更加真实。将以下代码放入UserCode或方法之一中,DemoUserCommand以在加载模型后激活它。
modelSegmentKey.GetVisualEffectsControl().SetSimpleReflection(true, 0.5f, 1U, false, 0, 2.0f); // parameters are equation of a plane modelSegmentKey.GetVisualEffectsControl().SetSimpleReflectionPlane(HPS::Plane(0, 1, 0, 0.375f)); // add lighting modelSegmentKey.InsertDistantLight(HPS::Vector(1, 1, -1));
使用轨道运算符(位于应用程序的功能区控件中)旋转模型后,生成的图像应如下所示:
带有反射平面的涡轮发动机(请注意,为了清晰起见,窗口背景已更改为白色)
与所有额外的渲染效果一样,需要额外的处理时间才能获得最终的图像。始终牢记渲染质量和性能之间的平衡。
1.3 阴影
modelSegmentKey.GetVisibilityControl().SetShadows(true); modelSegmentKey.GetVisualEffectsControl().SetShadowMaps(true, 16, 2048, true, true);
在本节中,我们将向涡轮机模型应用投影和阴影贴图。由于投影在反射平面上通常看起来不太好,因此我们将禁用它以专注于阴影。我们将启用的第一种阴影类型是阴影贴图。阴影贴图允许几何体的面在受光影响的任何类型的几何体上投射阴影。第一步是在片段中启用阴影,然后我们将设置阴影贴图参数:
在这里,您可以看到前景中的一些部件在其后面的几何体上投射阴影。
接下来,我们将启用阴影。投影在Visualize中称为简单阴影,因为效果受到高度限制。首先,简单的阴影只能投射在平面上。其次,阴影只能由单一光源产生。然而,对于大多数工程应用来说,简单的阴影就可以产生足够的效果。
mySegmentKey.GetVisualEffectsControl().SetSimpleShadow(true); // enables simple shadows mySegmentKey.GetVisualEffectsControl().SetSimpleShadowPlane( HPS::Plane(0, 1, 0, 0.425f)); // sets the plane where the shadows are projected mySegmentKey.GetVisualEffectsControl().SetSimpleShadowColor(HPS::RGBAColor(0.2f, 0.2f, 0.2f)); // color of the shadow mySegmentKey.GetVisualEffectsControl().SetSimpleShadowLightDirection(HPS::Vector(0, 1, 0)); // light direction
带有阴影贴图和简单阴影的涡轮机
1.4.Bloom
另一种可以提高渲染视觉质量的效果是光晕。当强烈的明亮光线从闪亮的表面反射时,就会发生光晕。光线似乎渗入了周围的空气中。Bloom仅在基于着色器的驱动程序中可用,例如DirectX11和OpenGL2。Bloom是使用HPS::PostProcessEffectsKit.
HPS::PostProcessEffectsKit ppek; ppek.SetBloom(true, 10.0f); // enables bloom. strength can be set from 0 to 10, (default is 1) myWindowKey.SetPostProcessEffects(ppek); ppek.SetBloom(false); // disables bloom
启用光晕时,涡轮机的闪亮部分会产生有趣的效果
1.5 纹理
为了获得最高的视觉质量,您还需要添加纹理。将纹理应用到像涡轮机这样复杂的模型超出了本教程的范围,但提供了一个图像来演示它。您可以在Visualize安装的样本/数据目录中找到纹理模型。有关纹理的更多信息可以在编程指南的纹理部分和教程 2:应用材质中找到。
应用纹理的涡轮机
慧都科技是Tech Soft 3D-HOOPS在中国区的唯一增值服务商,负责与试用,咨询,销售,技术支持,售后,旨在为企业提供一站式的3D开发解决方案。如果您的企业目前也有、的需求,欢迎咨询在线客服申请3D 轻量化引擎的60天免费试用。
↓↓扫码添加客服微信,及时获取“HOOPS技术”支持↓↓
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢