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

net网站同时支持 生成静态文件和伪静态网站首页介绍

net网站同时支持 生成静态文件和伪静态,网站首页介绍,省企联网站建设要求,wordpress 文本 点不了文章目录 三维场景的基本要素1.灯光2.相机3.颜色4.纹理映射 三维场景的基本要素 1.灯光 在三维渲染场景中#xff0c;可以有多个灯光的存在#xff0c;灯光和相机是三维渲染场景的必备要素#xff0c;如果没有指定的话#xff0c;vtkRenderer会自动创建默认的灯光和相机。… 文章目录 三维场景的基本要素1.灯光2.相机3.颜色4.纹理映射 三维场景的基本要素 1.灯光 在三维渲染场景中可以有多个灯光的存在灯光和相机是三维渲染场景的必备要素如果没有指定的话vtkRenderer会自动创建默认的灯光和相机。在VTK里用类vtkLight来表示渲染场景中的灯光与现实中的灯光类似VTK中的vtkLight实例也可以打开、关闭设置灯光的颜色照射位置(焦点)、灯光所在的位置、强度等。 vtkLight可以分为位置灯光(也叫聚光灯)和方向灯光。 位置灯光即光源位置在渲染场景中的某个位置可以指定灯光的衰减值、锥角等 方向灯光即指光源位置在无穷远可以认为光线是平行的比如自然界中的太阳光。光源的位置和焦点的连线定义光线的方向。默认的vtkLight为方向灯光。 vtkLight提供了一系列方法来设置光源的位置、颜色、类型和强度等。以下是 vtkLight 的一些常用方法。 位置与方向 SetPosition(double x, double y, double z)设置光源的位置。 GetPosition()获取光源的位置返回一个三元组x, y, z。 SetFocalPoint(double x, double y, double z)设置光源的焦点位置即光线指向的方向。 GetFocalPoint()获取光源的焦点位置。 颜色与亮度 SetColor(double r, double g, double b)设置光源的颜色参数为 RGB 值范围 0-1。 GetColor()获取光源的颜色返回 RGB 三元组。 SetIntensity(double intensity)设置光源的亮度强度值范围通常为 0 到 1。 GetIntensity()获取光源的亮度强度值。 光源类型 SetLightTypeToHeadlight()将光源类型设置为“头灯”光源总是朝向相机无论位置如何变化。 SetLightTypeToCameraLight()将光源类型设置为“相机光源”光源位置与相机位置一致随相机移动。 SetLightTypeToSceneLight()将光源类型设置为“场景光源”光源位于场景中的固定位置。 GetLightType()获取当前光源的类型。 衰减 SetAttenuationValues(double constant, double linear, double quadratic)设置光源的衰减系数分别控制常数、线性和二次衰减因子。 GetAttenuationValues()获取光源的衰减系数。 开关控制 SwitchOn() / SwitchOff()开启或关闭光源。 SetSwitch(bool on)直接设置光源是否开启true 表示开启false 表示关闭。 GetSwitch()获取光源的开关状态返回布尔值。 阴影设置 SetShadowAttenuation(double attenuation)设置光源阴影的衰减值用于控制阴影的强度。 GetShadowAttenuation()获取阴影的衰减值。 其他常用方法 DeepCopy(vtkLight *light)复制另一个光源的属性到当前光源。 SetConeAngle(double angle)设置聚光灯的角度仅在聚光灯模式下生效。 SetExponent(double exponent)设置聚光灯的光强指数指数越大光照越集中。 以下是一个使用 vtkLight 的示例展示了如何在 VTK 场景中创建和设置光源的属性。该示例创建了一个简单的场景包括一个立方体和一个自定义光源并演示如何设置光源的位置、颜色、类型等。 #include vtkSmartPointer.h #include vtkCubeSource.h #include vtkPolyDataMapper.h #include vtkActor.h #include vtkRenderer.h #include vtkRenderWindow.h #include vtkRenderWindowInteractor.h #include vtkGenericOpenGLRenderWindow.h #include vtkLight.hQtVTKDemo::QtVTKDemo(QWidget *parent): QMainWindow(parent) {ui.setupUi(this);this-setFixedSize(800, 600);QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());// 创建渲染器、渲染窗口和交互器vtkSmartPointervtkRenderer renderer vtkSmartPointervtkRenderer::New();vtkSmartPointervtkGenericOpenGLRenderWindow renderWindow vtkSmartPointervtkGenericOpenGLRenderWindow::New();renderWindow-AddRenderer(renderer);// 创建一个立方体vtkSmartPointervtkCubeSource cubeSource vtkSmartPointervtkCubeSource::New();// 创建映射器并连接立方体数据vtkSmartPointervtkPolyDataMapper cubeMapper vtkSmartPointervtkPolyDataMapper::New();cubeMapper-SetInputConnection(cubeSource-GetOutputPort());// 创建演员并设置映射器vtkSmartPointervtkActor cubeActor vtkSmartPointervtkActor::New();cubeActor-SetMapper(cubeMapper);// 将立方体添加到渲染器中renderer-AddActor(cubeActor);// 创建光源vtkSmartPointervtkLight light vtkSmartPointervtkLight::New();// 设置光源的位置、焦点、颜色和亮度light-SetPosition(1.0, 1.0, 1.0); // 设置光源位置light-SetFocalPoint(0.0, 0.0, 0.0); // 设置光源焦点使光源指向立方体中心light-SetColor(1.0, 1.0, 1.0); // 设置光源颜色为白色light-SetIntensity(0.8); // 设置光源强度为0.8// 设置光源类型为场景光源固定在场景中的位置,不随相机移动light-SetLightTypeToSceneLight();// 将光源添加到渲染器renderer-AddLight(light);// 设置渲染器背景颜色renderer-SetBackground(0.1, 0.1, 0.1); // 深灰色背景// 开始渲染和交互ui.openGLWidget-setRenderWindow(renderWindow); }注意因为Render里可以有多个灯光所以VTK提供的接口是AddLight()而不是SetLight()。 2.相机 在VTK中相机vtkCamera是一个用于控制三维场景中视角的对象相机在VTK的3D渲染中扮演着重要的角色因为它决定了观察者如何看待场景。相机的位置、朝向和投影方式可以通过vtkCamera类来控制。相机投影示意图如下所示 从上图可以看出与相机投影相关的要素主要有以下几个 相机位置相机所处的位置用vtkCamera::SetPosition()方法设置。 相机焦点用vtkCamera::SetFocusPoint()方法设置默认的焦点位置在世界坐标系的原点。 朝上方向朝上方向即哪个方向为相机朝上的方向。就好比直立看东西方向为头朝上看到的东西也是直立的。如果倒立看东西这时方向为头朝下看到的东西就是倒立的。相机位置、相机焦点和朝上方向三个因素确定了相机的实际方向即确定相机的视图。 投影方向相机位置到相机焦点的向量方向即为投影方向。 投影方法该要素用于确定Actor是如何映射到像平面的。vtkCamera定义了两种投影方法一种是正交投影也叫平行投影即进入相机的光线与投影方向是平行的另一种是透视投影即所有光线相交于一点。该投影方法最符合人类眼睛对于景物所产生的近大远小的视觉习惯。 视角透视投影时需要指定相机的视角View Angle默认的视角大小为30度可以用vtkCamera::SetViewAngle()方法设置。 前后裁剪平面裁剪平面与投影方向相交一般与投影方向也是垂直的裁剪平面主要用于评估Actor与相机距离的远近只有在前后裁剪平面之间的Actor才是可见的。裁剪平面的位置可以用vtkCamera:SetClippingRange()方法设置。 以下是一个使用 vtkCamera的示例 #include vtkSmartPointer.h #include vtkCubeSource.h #include vtkPolyDataMapper.h #include vtkActor.h #include vtkRenderer.h #include vtkRenderWindow.h #include vtkRenderWindowInteractor.h #include vtkGenericOpenGLRenderWindow.h #include vtkLight.h #include vtkCamera.hQtVTKDemo::QtVTKDemo(QWidget *parent): QMainWindow(parent) {ui.setupUi(this);this-setFixedSize(800, 600);QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());// 创建渲染器、渲染窗口和交互器vtkSmartPointervtkRenderer renderer vtkSmartPointervtkRenderer::New();// 创建并设置相机vtkSmartPointervtkCamera camera vtkSmartPointervtkCamera::New();camera-SetPosition(10, 10, 10); // 设置摄像机的位置坐标。默认位置是 (0, 0, 1)。camera-SetFocalPoint(0, 0, 0); // 设置摄像机的焦点即摄像机所看的目标点位置。camera-SetViewAngle(40); // 设置视角视场角角度以度数表示通常在30到45度之间。视角决定了摄像机的视野范围。camera-SetClippingRange(0.1, 1000); // 设置近裁剪平面和远裁剪平面。该函数控制显示的最近和最远距离。设置裁剪平面范围为 0.1 到 1000camera-SetViewUp(0, 1, 0); // 设置视上方向通常用于控制摄像机的“上”方向。设置摄像机上方向为 (0, 1, 0)renderer-SetActiveCamera(camera);vtkSmartPointervtkGenericOpenGLRenderWindow renderWindow vtkSmartPointervtkGenericOpenGLRenderWindow::New();renderWindow-AddRenderer(renderer);// 创建一个立方体vtkSmartPointervtkCubeSource cubeSource vtkSmartPointervtkCubeSource::New();// 创建映射器并连接立方体数据vtkSmartPointervtkPolyDataMapper cubeMapper vtkSmartPointervtkPolyDataMapper::New();cubeMapper-SetInputConnection(cubeSource-GetOutputPort());// 创建演员并设置映射器vtkSmartPointervtkActor cubeActor vtkSmartPointervtkActor::New();cubeActor-SetMapper(cubeMapper);// 将立方体添加到渲染器中renderer-AddActor(cubeActor);// 创建光源vtkSmartPointervtkLight light vtkSmartPointervtkLight::New();// 设置光源的位置、焦点、颜色和亮度light-SetPosition(1.0, 1.0, 1.0); // 设置光源位置light-SetFocalPoint(0.0, 0.0, 0.0); // 设置光源焦点使光源指向立方体中心light-SetColor(1.0, 1.0, 1.0); // 设置光源颜色为白色light-SetIntensity(0.8); // 设置光源强度为0.8// 设置光源类型为场景光源固定在场景中的位置,不随相机移动light-SetLightTypeToSceneLight();// 将光源添加到渲染器renderer-AddLight(light);// 设置渲染器背景颜色renderer-SetBackground(0.1, 0.1, 0.1); // 深灰色背景renderWindow-SetSize(600, 600); // 设置渲染窗口大小// 开始渲染和交互ui.openGLWidget-setRenderWindow(renderWindow); }另外vtkCamera 类中的 Dolly()、Roll()、Azimuth()、Yaw()、Elevation()、Pitch() 和 Zoom() 函数提供了丰富的摄像机视角调整选项允许你通过不同的方式调整摄像机的位置、旋转角度和缩放比例。 vtkCamera运动方向示意图 Dolly(double value) 用于沿视线方向拉近或拉远视图值大于1会拉近小于1会拉远。Dolly() 影响摄像机和焦点的相对距离改变场景的纵深感。 Roll(double angle)沿摄像机视线方向旋转摄像机使画面有“滚动”效果。通常用于模拟摄像机在视线方向上的滚动旋转。 Azimuth(double angle)绕摄像机的垂直轴Y轴旋转视角相当于左右旋转视图。用于改变水平方向的视角。 Yaw(double angle)Yaw() 和 Azimuth() 类似都是绕 Y 轴旋转但它直接影响摄像机的方向而不是整个视图。通常用于改变摄像机的指向。 Elevation(double angle)绕 X 轴旋转摄像机视角改变垂直方向的视角类似于仰视或俯视场景。 Pitch(double angle)Pitch() 和 Elevation() 类似绕 X 轴旋转摄像机但直接影响摄像机的指向而非视图。 Zoom(double factor)用于缩放视图影响摄像机的视角大小。factor 值大于1会放大小于1会缩小。 以下示例展示如何结合使用这些函数来调整摄像机的视角 vtkSmartPointervtkCamera camera vtkSmartPointervtkCamera::New(); camera-SetPosition(0, 0, 10); // 设置摄像机位置 camera-SetFocalPoint(0, 0, 0); // 设置摄像机焦点camera-Dolly(1.2); // 拉近视图 camera-Roll(45); // 视线滚动45度 camera-Azimuth(30); // 水平旋转30度 camera-Yaw(20); // 绕Y轴旋转20度 camera-Elevation(15); // 垂直旋转15度 camera-Pitch(10); // 绕X轴旋转10度 camera-Zoom(1.5); // 放大视图1.5倍从上述可以看出Dolly 和 Zoom 都用于拉近或拉远视图但 Dolly 更适合产生真实的深度感Roll 适合调整画面旋转感滚动Azimuth 和 Elevation 改变视角的水平方向和垂直方向Yaw 和 Pitch 改变摄像机的方向而不影响场景整体视图。 3.颜色 颜色是Actor重要的属性之一。VTK采用RGB和HSV两种颜色系统来描述颜色。 RGB颜色系统由三个颜色分量红色R、绿色G、和蓝色B的组合表示在VTK里这三个分量的取值范围都是0~1(0, 0, 0)表示黑色(1, 1, 1)表示白色。vtkProperty::SetColor(r, g, b)采用的就是RGB颜色系统设置颜色属性值。 HSV颜色系统同样也是由三个分量来决定颜色它们分别是色相Hue表示颜色的基本属性就是通常所说的颜色名称如红色、黄色饱和度是指颜色的纯度其值越高则越纯值Value也就是强度Intensity或者亮度Bright值为0通常表示的是黑色值为1表示的是最亮的颜色。这三个分量的取值范围0~1。类vtkLookupTable提供了HSV颜色系统设置的方法。 (1).设置颜色属性 可以直接在渲染的对象上设置颜色属性包括 Actor的颜色设置通过actor-GetProperty()-SetColor()来设置一个对象的颜色。 边界颜色和透明度使用SetEdgeColor()和SetOpacity()等方法对渲染物体的边界颜色和透明度进行控制。 环境光、漫反射和镜面反射颜色通过SetAmbientColor()、SetDiffuseColor()、SetSpecularColor()等方法来设置材质的反射特性。 以下是一个简单的VTK示例用于演示颜色属性设置包括颜色、边界颜色、透明度、环境光、漫反射和镜面反射等 #include vtkSmartPointer.h #include vtkPolyDataMapper.h #include vtkActor.h #include vtkRenderer.h #include vtkRenderWindow.h #include vtkGenericOpenGLRenderWindow.h #include vtkSphereSource.h #include vtkProperty.hQtVTKDemo::QtVTKDemo(QWidget *parent): QMainWindow(parent) {ui.setupUi(this);this-setFixedSize(800, 600);QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());// 创建渲染器、渲染窗口和交互器vtkSmartPointervtkRenderer renderer vtkSmartPointervtkRenderer::New();vtkSmartPointervtkGenericOpenGLRenderWindow renderWindow vtkSmartPointervtkGenericOpenGLRenderWindow::New();renderWindow-AddRenderer(renderer);// 创建一个球体数据源vtkSmartPointervtkSphereSource sphereSource vtkSmartPointervtkSphereSource::New();sphereSource-SetRadius(5.0);// 将球体数据映射到几何数据vtkSmartPointervtkPolyDataMapper sphereMapper vtkSmartPointervtkPolyDataMapper::New();sphereMapper-SetInputConnection(sphereSource-GetOutputPort());// 创建演员并设置映射器vtkSmartPointervtkActor sphereActor vtkSmartPointervtkActor::New();sphereActor-SetMapper(sphereMapper);// 设置颜色属性sphereActor-GetProperty()-SetColor(0.1, 0.6, 0.8); // 设置球体颜色RGB: 浅蓝色sphereActor-GetProperty()-SetEdgeColor(0.0, 0.0, 0.0); // 设置边界颜色黑色sphereActor-GetProperty()-EdgeVisibilityOn(); // 开启边界显示sphereActor-GetProperty()-SetOpacity(0.7); // 设置透明度0.0 全透明1.0 不透明sphereActor-GetProperty()-SetAmbientColor(0.2, 0.2, 0.2); // 设置环境光颜色sphereActor-GetProperty()-SetDiffuseColor(0.1, 0.6, 0.8); // 设置漫反射颜色sphereActor-GetProperty()-SetSpecularColor(1.0, 1.0, 1.0); // 设置镜面反射颜色白色sphereActor-GetProperty()-SetSpecular(0.5); // 镜面反射强度sphereActor-GetProperty()-SetSpecularPower(30.0); // 镜面反射的光泽度// 将立方体添加到渲染器中renderer-AddActor(sphereActor);// 设置渲染器背景颜色renderer-SetBackground(0.1, 0.1, 0.1); // 深灰色背景renderWindow-SetSize(600, 600); // 设置渲染窗口大小// 开始渲染和交互ui.openGLWidget-setRenderWindow(renderWindow); }(2).设置颜色映射 在VTK中颜色映射是将标量数据映射到颜色的一种方式常用于对科学数据的可视化。颜色映射可以使用vtkLookupTable或者vtkColorTransferFunction来实现。 #include vtkSmartPointer.h #include vtkPolyDataMapper.h #include vtkActor.h #include vtkRenderer.h #include vtkRenderWindow.h #include vtkGenericOpenGLRenderWindow.h #include vtkSphereSource.h #include vtkProperty.h #include vtkFloatArray.h #include vtkLookupTable.h #include vtkPointData.hQtVTKDemo::QtVTKDemo(QWidget *parent): QMainWindow(parent) {ui.setupUi(this);this-setFixedSize(800, 600);QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());// 创建渲染器、渲染窗口和交互器vtkSmartPointervtkRenderer renderer vtkSmartPointervtkRenderer::New();vtkSmartPointervtkGenericOpenGLRenderWindow renderWindow vtkSmartPointervtkGenericOpenGLRenderWindow::New();renderWindow-AddRenderer(renderer);// 创建一个球体数据源vtkSmartPointervtkSphereSource sphereSource vtkSmartPointervtkSphereSource::New();/*作用设置球体在水平绕Z轴方向的分段数量。参数传入一个整数值表示沿着球体赤道平分的分段数量。影响增大 ThetaResolution 值会使球体在水平方向上更光滑细腻但会增加计算量和渲染时间。*/sphereSource-SetThetaResolution(30); // 会将球体的水平方向分成 30 个分段。/*作用设置球体在垂直方向的分段数量从南极到北极。参数传入一个整数值表示沿着球体从底到顶南极到北极平分的分段数量。影响增大 PhiResolution 值会使球体在垂直方向上更加平滑同样会增加计算和渲染成本。*/sphereSource-SetPhiResolution(30); // 会将球体的垂直方向分成 30 个分段。/*低分辨率SetThetaResolution(10) 和 SetPhiResolution(10) 将创建一个较粗糙的球体因为分段少。高分辨率SetThetaResolution(50) 和 SetPhiResolution(50) 会生成一个非常光滑的球体但计算量和渲染成本也会增加。SetThetaResolution 和 SetPhiResolution 的值越大球体的外观越平滑细节越丰富但会带来更高的计算开销。*/sphereSource-Update();// 创建一个标量数据数组将标量数据与球体的顶点关联vtkSmartPointervtkFloatArray scalars vtkSmartPointervtkFloatArray::New();for (vtkIdType i 0; i sphereSource-GetOutput()-GetNumberOfPoints(); i){scalars-InsertNextValue(static_castfloat(i % 100) / 100.0); // 模拟生成标量数据}sphereSource-GetOutput()-GetPointData()-SetScalars(scalars);// 创建颜色映射表Lookup TablevtkSmartPointervtkLookupTable lookupTable vtkSmartPointervtkLookupTable::New();lookupTable-SetNumberOfTableValues(256); // 设置颜色表的大小lookupTable-SetRange(0.0, 1.0); // 标量值的范围lookupTable-Build();// 设置颜色映射的渐变如从蓝色到红色for (int i 0; i 256; i) {double r static_castdouble(i) / 255.0;double b 1.0 - r;lookupTable-SetTableValue(i, r, 0.0, b); // 渐变从蓝色到红色}// 将球体数据映射到几何数据vtkSmartPointervtkPolyDataMapper sphereMapper vtkSmartPointervtkPolyDataMapper::New();sphereMapper-SetInputConnection(sphereSource-GetOutputPort());sphereMapper-SetLookupTable(lookupTable); // 设置映射表sphereMapper-SetScalarRange(0.0, 1.0); // 设置标量数据的范围映射到颜色表// 创建演员并设置映射器vtkSmartPointervtkActor sphereActor vtkSmartPointervtkActor::New();sphereActor-SetMapper(sphereMapper);// 设置颜色属性sphereActor-GetProperty()-SetColor(0.1, 0.6, 0.8); // 设置球体颜色RGB: 浅蓝色sphereActor-GetProperty()-SetEdgeColor(0.0, 0.0, 0.0); // 设置边界颜色黑色sphereActor-GetProperty()-EdgeVisibilityOn(); // 开启边界显示sphereActor-GetProperty()-SetOpacity(0.7); // 设置透明度0.0 全透明1.0 不透明sphereActor-GetProperty()-SetAmbientColor(0.2, 0.2, 0.2); // 设置环境光颜色sphereActor-GetProperty()-SetDiffuseColor(0.1, 0.6, 0.8); // 设置漫反射颜色sphereActor-GetProperty()-SetSpecularColor(1.0, 1.0, 1.0); // 设置镜面反射颜色白色sphereActor-GetProperty()-SetSpecular(0.5); // 镜面反射强度sphereActor-GetProperty()-SetSpecularPower(30.0); // 镜面反射的光泽度// 将立方体添加到渲染器中renderer-AddActor(sphereActor);// 设置渲染器背景颜色renderer-SetBackground(0.1, 0.1, 0.1); // 深灰色背景renderWindow-SetSize(600, 600); // 设置渲染窗口大小// 开始渲染和交互ui.openGLWidget-setRenderWindow(renderWindow); }上述代码中创建了一个vtkFloatArray并为球体的每个顶点设置了一个标量值。这里是模拟数据将每个顶点的标量值设置为i % 100 / 100.0。vtkLookupTable创建了一个颜色映射表并为其设置范围为0.0到1.0。然后通过一个循环为颜色表中的每个值设置一个渐变颜色从蓝色到红色。将颜色表设置到vtkPolyDataMapper的映射器上并使用SetScalarRange方法来指定标量数据的范围使其映射到颜色表中。最后创建渲染窗口和交互器将颜色映射应用到的球体显示在窗口中。 在计算机图形学中RGB颜色模型用于表示颜色其中 R红、G绿、B蓝 三个通道的组合决定最终的颜色。 RGB每个通道的取值范围为 0 到 255通常用于8位色深的颜色表示即0-255范围的整数。这个范围是最常见的 RGB 表示法适用于图像处理、计算机显示器、网页设计等。 0.0 到 1.0用于归一化的浮点表示法即0.0-1.0的浮点数。在计算机图形学和许多绘图库例如 OpenGL、VTK中常用这种表示法。0.0表示最小强度无光1.0表示最大强度全亮。 通过不同强度的 RGB 值组合可以生成不同的颜色。例如 (255, 0, 0) 或 (1.0, 0.0, 0.0)纯红色 (0, 255, 0) 或 (0.0, 1.0, 0.0)纯绿色 (0, 0, 255) 或 (0.0, 0.0, 1.0)纯蓝色 (255, 255, 255) 或 (1.0, 1.0, 1.0)白色所有通道全亮 (0, 0, 0) 或 (0.0, 0.0, 0.0)黑色所有通道关闭 在编程中可以方便地将0-255范围的 RGB 值转换为0.0-1.0的归一化形式。例如 double normalizedR r / 255.0; double normalizedG g / 255.0; double normalizedB b / 255.0;4.纹理映射 纹理映射是创建逼真效果的强大的图形工具它的原理是渲染时把二维的图像贴到物体的表面上根据二维图像渲染出丰富多彩的效果所以叫纹理贴图。纹理映射需要三个要素待贴图的表面、纹理映射以及纹理坐标。其中纹理映射在VTK中就是vtkImageData的数据集而纹理坐标则用于控制纹理图在表面的位置。 #include vtkSmartPointer.h #include vtkSphereSource.h #include vtkPolyDataMapper.h #include vtkActor.h #include vtkRenderer.h #include vtkRenderWindow.h #include vtkRenderWindowInteractor.h #include vtkGenericOpenGLRenderWindow.h #include vtkPNGReader.h #include vtkTexture.hQtVTKDemo::QtVTKDemo(QWidget *parent): QMainWindow(parent) {ui.setupUi(this);this-setFixedSize(800, 600);QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());// 创建渲染器、渲染窗口和交互器vtkSmartPointervtkRenderer renderer vtkSmartPointervtkRenderer::New();vtkSmartPointervtkGenericOpenGLRenderWindow renderWindow vtkSmartPointervtkGenericOpenGLRenderWindow::New();renderWindow-AddRenderer(renderer);// 创建球体数据源vtkSmartPointervtkSphereSource sphereSource vtkSmartPointervtkSphereSource::New();sphereSource-SetThetaResolution(30);sphereSource-SetPhiResolution(30);sphereSource-Update();// 加载纹理图像vtkSmartPointervtkPNGReader pngReader vtkSmartPointervtkPNGReader::New();pngReader-SetFileName(VTKDemo.png);vtkSmartPointervtkTexture texture vtkSmartPointervtkTexture::New();texture-SetInputConnection(pngReader-GetOutputPort());// 创建映射器并连接立方体数据vtkSmartPointervtkPolyDataMapper sphereMapper vtkSmartPointervtkPolyDataMapper::New();sphereMapper-SetInputConnection(sphereSource-GetOutputPort());// 创建演员并设置映射器vtkSmartPointervtkActor sphereeActor vtkSmartPointervtkActor::New();sphereeActor-SetMapper(sphereMapper);sphereeActor-SetTexture(texture);// 将立方体添加到渲染器中renderer-AddActor(sphereeActor);// 设置渲染器背景颜色renderer-SetBackground(0.1, 0.1, 0.1); // 深灰色背景// 开始渲染和交互ui.openGLWidget-setRenderWindow(renderWindow); }针对不同的图像格式VTK 提供了不同的读取类 JPEG 文件使用 vtkJPEGReader。 PNG 文件使用 vtkPNGReader。 TIFF 文件使用 vtkTIFFReader。
http://www.hkea.cn/news/14451455/

相关文章:

  • 学校网站建设的背景广州专业展台制作
  • 美橙互联网站模板网站建设的优点和不足
  • 抚州市企业网站建设企业信息
  • 网站总体规划设计说明云教育科技网站建设
  • 重庆茶叶网站建设市场营销策划ppt
  • dedecms网站地图插件网站备案 做网站
  • 在线做logo的网站阿勒泰建设局网站
  • 钦州住房和城乡建设局网站潍坊网站建设收费标准
  • 建设地方美食网站的目的报价表
  • 手机免费网站建设哪家公司好怎么查个人是否注册工商执照
  • 成都网站建设排行榜中国建设招标网是个假网站
  • 风景区网站建设论文范文WordPress如何更改文章链接
  • 怎么做网站图片的切换图洛阳设计公司官网
  • 动易网站中添加邮箱英文网站建设服务合同模板
  • 微信怎么做网站推广商城网站租服务器安全不
  • 南京网站建设 ww网站建设汇报
  • 临西做网站多少钱装潢设计学校
  • 网站建设部署视频教程临沂网站定制
  • 网站做竞价对seo有影响吗东莞高端建站公司
  • 唐山网站建设互众动力营销型网站开发公司
  • 网站开发的功能需求和模块划分项目网络图和关键路径
  • 淮安做网站卓越凯欣wordpress 哪个好用
  • 济南网站建设排名引迈快速开发平台
  • 龙岗网站建设 公司推广金泉网做的山东黄锈石网站有哪些
  • 网站做好了如何发布北京seo网站管理
  • 长春网长春关键词排名站设计商务网站推广技巧包括什么
  • 照片做视频ppt模板下载网站好南京网站制作哪家好
  • 嘉兴网站专业做网站涉及个人隐私
  • jsp企业网站分公司注册流程网上注册
  • 如何用自己网站做大电商wordpress写的网站