VTK笔记 |
您所在的位置:网站首页 › 抖音安妮的原名叫什么 › VTK笔记 |
纹理贴图
计算机图形学中的纹理既包括通常意义上物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案,通常我们更多地称之为花纹。对于花纹而言,就是在物体表面绘出彩色花纹或图案,产生了纹理后的物体表面依然光滑如故。对于沟纹而言,实际上也是要在表面绘出彩色花纹或图案,同时要求视觉上给人以凹凸不平感即可。 凹凸不平的图案一般是不规则的。在计算机图形学中,这两种类型的纹理的生成方法完全一致, 这也是计算机图形学中把他们统称为纹理的原因所在。 所以纹理映射就是在物体的表面上绘制彩色的图案。 在三维图像世界中表示物体表面细节的一幅或几幅二维图形,也称纹理贴图(texture mapping),当把纹理按照特定的方式映射到物体表面上的时候能使物体看上去更加真实。纹理映射是一种允许我们为三角形赋予图像数据的技术,能够更细腻更真实地表现渲染场景。 在计算机图形学中,纹理贴图是使用图像、函数或其他数据源来改变物体表面外观的技术。 可以使用凹凸纹理在光滑的球上,呈现出凹凸不平的球的效果;
用于控制在纹理映射时,是否进行线性插值; vtkGetMacro(Interpolate, vtkTypeBool); vtkSetMacro(Interpolate, vtkTypeBool); vtkBooleanMacro(Interpolate, vtkTypeBool); mipmap开关MIP map(有时候拼写成mipmap)是一种电脑图形图像技术,用于在三维图像的二维代替物中达到立体感效应。MIP map技术与材质贴图技术结合,根据距观看者远近距离的不同,以不同的分辨率将单一的材质贴图以多重图像的形式表现出来并代表平面纹理:尺寸最大的图像放在前面显著的位置,而相对较小的图像则后退到背景区域。每一个不同的尺寸等级定义成一个MIP map水平。MIP map技术帮助避免了不想要的锯齿边缘(称为锯齿状图形)在图像中出现,这种锯齿状图形可能是由于在不同分辨率下使用bit map图像产生的。 vtkGetMacro(Mipmap, bool); vtkSetMacro(Mipmap, bool); vtkBooleanMacro(Mipmap, bool); 示例 墙角具体步骤: 1.读入一张jpeg的二维图像作为纹理图textureFile; 2.定义一个纹理vtkTexture类的对象atext,将textureFile的输出放入atext的输入中,作为它即将贴到平面上的一个纹理图; 3.定义一个vtkPlaneSource对象plane,类vtkPlaneSource可以生成一个平面,也就是纹理图要贴图的地方。 4.定义一个vtkActor对象planeActor,将plane对应的vtkPolyDataMapper设置到其中,通过SetTexture方法设定atext为该演员的纹理; vtkNew readerFactory; vtkSmartPointer textureFile; textureFile.TakeReference(readerFactory->CreateImageReader2("G:\\Data\\texture.jpg")); textureFile->SetFileName("G:\\Data\\texture.jpg"); textureFile->Update(); vtkNew atext; atext->SetInputConnection(textureFile->GetOutputPort()); atext->InterpolateOn(); // Create a plane source and actor. The vtkPlanesSource generates // texture coordinates. vtkNew plane; vtkNew planeMapper; planeMapper->SetInputConnection(plane->GetOutputPort()); vtkNew planeActor; planeActor->SetMapper(planeMapper); planeActor->SetTexture(atext); // Create the RenderWindow, Renderer and both Actors vtkNew colors; vtkNew renderer; vtkNew renWin; renWin->AddRenderer(renderer); vtkNew iren; iren->SetRenderWindow(renWin); // Add the actors to the renderer, set the background and size renderer->AddActor(planeActor); renderer->SetBackground(colors->GetColor3d("DarkSlateGray").GetData()); renWin->SetSize(640, 480); renWin->SetWindowName("TexturePlane"); // render the image renWin->Render(); renderer->ResetCamera(); renderer->GetActiveCamera()->Elevation(-30); renderer->GetActiveCamera()->Roll(-20); renderer->ResetCameraClippingRange(); renWin->Render(); iren->Start();
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |