好酷屋

Maya之如何利用Ogre实现自身截屏功能

好酷屋

发布于2023-04-08

好酷屋教程网小编为您收集和整理了Maya之如何利用Ogre实现自身截屏功能的相关教程:我们的无标记动作捕捉系统需要搭建模拟实验环境以进行模拟实验,所以便诞生了以下两个方案:利用maya布置一个模拟实验环境和利用Ogre渲染一个模拟实验环境。Maya我们暂时抛开不谈因为Maya和我们

我们的无标记动作捕捉系统需要搭建模拟实验环境以进行模拟实验,所以便诞生了以下两个方案:

利用maya布置一个模拟实验环境和利用Ogre渲染一个模拟实验环境。

Maya我们暂时抛开不谈因为Maya和我们的主题无关。关于Ogre我们需要实现的功能是在一个原地行走的人模周围均匀地布置8个摄像机,按下某一快捷键时可以同时截取8个摄像机里的画面并保存到本地硬盘里。

Ogre是可以设置多个摄像机的,而屏幕上显示的图像就是摄像机里看到的图像,所以这个问题就简化成了如何在Ogre实现截屏功能,并将截取的图像保存到本地硬盘。那么如何利用Ogre实现自身截屏功能呢?Ogre提供的渲染到材质技术可以很好的为我们服务。首先,新建一个材质Texture,把它的RenderTarget设置成摄像机。Textureptrtexture=TextureManager::getSingleton().createManual(“RttTex”,ResourceGroupManager::DEFAULT_RESOURCE_GROUp_NAME,TEX_TYpE_2D,1024,768,0,pF_R8G8B8,TU_RENDERTARGET);RenderTarget*rttTex=texture->getBuffer()->getRenderTarget();Viewport*v=rttTex->addViewport(pCamera);第二步,把Texture的缓冲区里的数据拿到pixelBox中。Ogre::HardwarepixelBufferSharedptrtmpTexBuf=texture->getBuffer();intwidth=texture->getWidth();intheight=texture->getHeight();char*tmpBuf=newchar;Ogre::pixelBoxtmpBox(width,height,texture->getDepth(),texture->getFormat(),tmpBuf);tmpTexBuf->blitToMemory(tmpBox);最后一步,从pixelBox中取出对应的信息利用Image的loadDynamicImage函数保存成Image格式。然后保存到本地硬盘上。Ogre::Imageimage;image.loadDynamicImage((Ogre::uchar*)tmpBox.data,tmpBox.getWidth(),tmpBox.getHeight(),tmpBox.getDepth(),tmpBox.format);image.save(filename);

以上就是好酷屋教程网小编为您收集和整理的Maya之如何利用Ogre实现自身截屏功能相关内容,如果对您有帮助,请帮忙分享这篇文章^_^

本文来源: https://www.haoku5.com/IT/643119daa7b3f862a9013a5a.html

相关推荐

    热门专题