温州做网站建设公司3d模型资源哪个网站比较好

张小明 2026/1/19 19:11:56
温州做网站建设公司,3d模型资源哪个网站比较好,公司互联网推广,动漫制作专业名人作品展示一#xff1a;主要的知识点 1、说明 本文只是教程内容的一小段#xff0c;因博客字数限制#xff0c;故进行拆分。主教程链接#xff1a;vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①vtkLoopSubdivisionFilter上采样#xf…一主要的知识点1、说明本文只是教程内容的一小段因博客字数限制故进行拆分。主教程链接vtk教程——逐行解析官网所有Python示例-CSDN博客2、知识点纪要本段代码主要涉及的有①vtkLoopSubdivisionFilter上采样②着色③Cell最近网格面的查询二代码及注释import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkCommonCore import vtkUnsignedCharArray, vtkPoints, mutable from vtkmodules.vtkCommonDataModel import vtkCellArray, vtkTriangle, vtkPolyData, vtkCellLocator from vtkmodules.vtkFiltersCore import vtkCleanPolyData from vtkmodules.vtkFiltersModeling import vtkLoopSubdivisionFilter from vtkmodules.vtkCommonComputationalGeometry import vtkParametricSpline from vtkmodules.vtkFiltersSources import vtkParametricFunctionSource import numpy as np from vtkmodules.vtkRenderingCore import vtkPolyDataMapper, vtkActor, vtkRenderer, vtkRenderWindow, \ vtkRenderWindowInteractor def main(): named_colors vtkNamedColors() size 32 np.random.seed(3) topography np.random.randint(0, 5, (size, size)) colors vtkUnsignedCharArray() colors.SetNumberOfComponents(3) points vtkPoints() triangles vtkCellArray() count 0 for i in range(size - 1): for j in range(size - 1): # 第一个三角 z1 topography[i][j] z2 topography[i][j 1] z3 topography[i 1][j] points.InsertNextPoint(i, j, z1) points.InsertNextPoint(i, j 1, z2) points.InsertNextPoint(i 1, j, z3) triangle vtkTriangle() triangle.GetPointIds().SetId(0, count) triangle.GetPointIds().SetId(1, count 1) triangle.GetPointIds().SetId(2, count 2) triangles.InsertNextCell(triangle) # 第二个三角 z1 topography[i][j 1] z2 topography[i 1][j 1] z3 topography[i 1][j] points.InsertNextPoint(i, (j 1), z1) points.InsertNextPoint((i 1), (j 1), z2) points.InsertNextPoint((i 1), j, z3) triangle vtkTriangle() triangle.GetPointIds().SetId(0, count 3) triangle.GetPointIds().SetId(1, count 4) triangle.GetPointIds().SetId(2, count 5) count 6 triangles.InsertNextCell(triangle) r [int(i / float(size) * 255), int(j / float(size) * 255), 0] # 这里写6次是因为每次循环都有6个点需要赋予颜色 colors.InsertNextTypedTuple(r) colors.InsertNextTypedTuple(r) colors.InsertNextTypedTuple(r) colors.InsertNextTypedTuple(r) colors.InsertNextTypedTuple(r) colors.InsertNextTypedTuple(r) # 创建polydata trianglePolydata vtkPolyData() trianglePolydata.SetPoints(points) trianglePolydata.SetPolys(triangles) trianglePolydata.GetPointData().SetScalars(colors) # 去除可能的重复的点 cleanPolyData vtkCleanPolyData() cleanPolyData.SetInputData(trianglePolydata) # 平滑 vtkLoopSubdivisionFilter 是 VTK 中一个非常常用的 网格平滑细分滤波器 用来让一个多边形尤其是三角网格模型的表面变得更平滑、更细腻 简而言之就是上采样平滑 smooth_loop vtkLoopSubdivisionFilter() smooth_loop.SetNumberOfSubdivisions(3) # 设置细分次数 smooth_loop.SetInputConnection(cleanPolyData.GetOutputPort()) smooth_loop.Update() mapper vtkPolyDataMapper() mapper.SetInputConnection(smooth_loop.GetOutputPort()) actor_loop vtkActor() actor_loop.SetMapper(mapper) SetInterpolationToFlat置模型的着色模式Shading Model为平面着色Flat Shading 平面着色的含义: 颜色计算对于模型中的每一个多边形例如一个三角形光照和颜色计算只在多边形的一个顶点上进行 颜色应用将计算出的单一颜色应用于整个多边形表面 结果多边形内部的颜色是均匀的、平坦的。每个多边形边界处都会出现明显的颜色或亮度变化 使得模型看起来像是由许多独立的、扁平的小平面拼成的具有明显的棱角感 通常平面着色用于强调**单元格Cell**本身的重要性而不是曲面的光滑度 或者用于处理那些颜色是基于单元格而不是顶点来定义的模型 actor_loop.GetProperty().SetInterpolationToFlat() actor_loop.GetProperty().SetInterpolationToGouraud() 它的作用是将模型的着色模式设置为 Gouraud 着色Gouraud Shading,使模型表面看起来更平滑、更真实 Gouraud 着色的含义: 光照计算仅在顶点Gouraud 着色在模型中每个多边形的所有顶点上计算光照强度和颜色例如基于法线、光源和相机位置 颜色插值在表面它通过线性插值的方法将顶点的颜色平滑地混合到多边形内部的所有像素上 结果:最终的模型表面看起来是连续和圆润的消除了多边形之间的突兀边界。这种模式适用于渲染有机形状、曲面或任何需要平滑外观的几何体 actor_loop.GetProperty().SetInterpolationToPhong() Phong 着色是最复杂、最昂贵但通常也是最能产生逼真高光效果的技术 Phong 着色旨在修正 Gouraud 着色的两个主要缺陷无法准确显示模型内部的高光点Specular Highlights和移动的光源 工作原理如下 光照计算仅在顶点和 Gouraud 着色一样法线在每个顶点处计算一次并在多边形表面进行插值。 高光和颜色插值在像素关键区别它不是插值颜色而是插值法线向量。对于多边形上的每个像素在渲染时VTK 使用插值后的法线、光源和相机位置来重新计算光照方程。 结果由于光照计算是在每个像素上进行的Phong 着色能够渲染出真实、锐利且移动准确的高光点。这使得模型表面的质感如金属光泽、塑料质感看起来更加逼真 # 定义一个cell的定位 vtkCellLocator 是 VTK 中一个非常常用、非常高效的 空间查询与碰撞检测 工具 核心用途是:在三维空间中快速定位一个点、线或其他几何体与 mesh网格之间的几何关系 核心功能有最近点查询射线——网格相交点所在单元多点最近单元构建空间索引 locator vtkCellLocator() locator.SetDataSet(smooth_loop.GetOutput()) locator.BuildLocator() # 执行索引构建操作。 # 这是计算成本最高的一步但只执行一次。定位器会分析输入网格的所有几何单元三角形并建立它的内部数据结构 maxloop 1000 dist 20.0 / maxloop tolerance 0.001 # X 轴上等间距地发射一系列垂直的射线然后使用 vtkCellLocator 来精确找到每条射线与三维地形曲面的交点 points vtkPoints() for i in range(maxloop): p1 [2 i * dist, 16, -1] p2 [2 i * dist, 16, 6] # p1 p2点形成的线段在Z轴上是穿过上面形成的mesh的 t mutable(0) # 交点在线段 P1→P2 上的位置。如果 t0交点是 P1如果 t1交点是 P2如果 0t1交点在线段内部 pos [0.0, 0.0, 0.0] # 三维空间中的绝对坐标 pcoords [0.0, 0.0, 0.0] # 交点在它所处的那个cell内部的相对坐标 pcoords 在你的地形网格示例中cell 是一个三角形。三角形通常使用两个参数 (ξ,η) 来定义内部位置 维度2 个参数通常写作 P (ξ,η,0)其中第三个值总是 0。 物理意义这两个参数代表了点到三角形三个顶点的相对权重或距离 (1,0) 点位于第一个顶点上。 (0,1) 点位于第二个顶点上。 (0,0) 点位于第三个顶点上。 (0.5,0.5) 点位于三角形某条边的中点。 (0.33,0.33) 点位于三角形的质心重心 在 VTK 中对于颜色插值、法线计算以及进一步的几何处理比如计算梯度都至关重要 subId mutable(0) # 交点所在那个cell的ID locator.IntersectWithLine(p1, p2, tolerance, t, pos, pcoords, subId) # 如果IntersectWithLine没有找到交点一切的值都会是初始值 pos[2] 0.01 # 增加一点偏移值方便可视化 points.InsertNextPoint(pos) vtkParametricSpline 主要用于在 一系列离散点之间生成平滑曲线样条曲线 / Spline spline vtkParametricSpline() spline.SetPoints(points) functionSource vtkParametricFunctionSource() functionSource.SetUResolution(maxloop) # 设置采样点的密度(或分辨率) functionSource.SetParametricFunction(spline) # Map the spline mapper vtkPolyDataMapper() mapper.SetInputConnection(functionSource.GetOutputPort()) # Define the line actor actor vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetColor(named_colors.GetColor3d(Red)) actor.GetProperty().SetLineWidth(3) # Visualize renderer vtkRenderer() renderWindow vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindowInteractor vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) # Add actors and render renderer.AddActor(actor) renderer.AddActor(actor_loop) renderer.SetBackground(named_colors.GetColor3d(Cornsilk)) renderWindow.SetSize(800, 800) renderWindow.Render() renderer.GetActiveCamera().SetPosition(-32.471276, 53.258788, 61.209332) renderer.GetActiveCamera().SetFocalPoint(15.500000, 15.500000, 2.000000) renderer.GetActiveCamera().SetViewUp(0.348057, -0.636740, 0.688055) renderer.ResetCameraClippingRange() renderWindow.SetWindowName(LineOnMesh) renderWindow.Render() renderWindowInteractor.Start() if __name__ __main__: main()
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

哪个餐饮店微网站做的有特色wordpress移动端音频播放

Go-CQHTTP完整开发手册:构建智能QQ机器人的终极实战指南 【免费下载链接】go-cqhttp cqhttp的golang实现,轻量、原生跨平台. 项目地址: https://gitcode.com/gh_mirrors/go/go-cqhttp Go-CQHTTP作为QQ机器人开发领域的明星项目,以其轻…

张小明 2026/1/17 20:31:46 网站建设

网站源码下载pdf文件网站怎么建设与管理

第一章:告别低效编码:deepseek Open-AutoGLM网页版如何重构现代前端开发流程? 在现代前端开发中,重复性高、调试成本大、原型迭代慢等问题长期制约着开发效率。deepseek Open-AutoGLM 网页版的出现,为这一困境提供了智…

张小明 2026/1/17 20:31:47 网站建设

建设服装网站目的希尔顿酒店网络营销案例

YOLO在智慧农业中的探索:病虫害识别靠它搞定 在一片广袤的麦田上,无人机低空掠过,镜头快速扫过一排排作物。几秒钟后,后台系统弹出一条预警:“第3区发现蚜虫聚集,置信度87%。”几乎同时,不远处的…

张小明 2026/1/17 20:31:49 网站建设

做网站需要准备哪些东西wordpress更换服务器搬家教程

摘要: 如果你尝试把标准的 DQN 扔到一个静态数据集上训练,你通常会得到一个在训练集上 Q 值高得离谱、但在实际环境里一跑就“暴毙”的策略。这种现象被称为 Extrapolation Error (外推误差)。本文将带你像侦探一样拆解这个灾难的发生过程:从…

张小明 2026/1/17 20:31:49 网站建设

seo网站优化方案淮安新网站制作

RTL8852BE无线网卡:Linux环境下的完整配置指南 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 如果你正在Linux系统上使用搭载RTL8852BE芯片的无线网卡,这篇指南将…

张小明 2026/1/16 21:30:14 网站建设

网站开发英文参考文献成品网站w灬源码伊园

数据管理与SNMP技术全解析 在系统管理工作中,数据管理和设备监控是至关重要的环节。本文将深入探讨如何利用Python进行文件系统元数据管理、数据归档压缩,以及SNMP协议在设备管理中的应用。 元数据管理:数据背后的数据 系统管理员不仅要关注数据本身,还需关注数据的元数…

张小明 2026/1/17 20:31:50 网站建设