OGRE 手动LOD(Levels of Detail)多层次细节

本文介绍了如何使用OGRE中的LOD(Levels of Detail)技术来提高渲染效率。具体包括手动设置不同精细度级别的模型,并根据摄像机与模型的距离自动切换模型,以减少非关键物体的细节,实现高效的渲染。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OGRE为我们提供了自动生成LOD模型的工具,请参看我的另外一篇文章。但有时候由于该工具生成的自动LOD模型有问题(其原理就是模型简化,比如树模型有很多叶子面片,基本上无论如何简化,面片数都不会有明显的减少,而且将枝干简化后模型会严重形变),针对这种情况,我们可以在建模的时候手工进行模型简化,即导出多个不同精细度模型,然后通过下面的代码加入到OGRE里,程序在判断你指定的摄像机距离的时候就会自动将模型替换。


出处:http://blog.sina.com.cn/s/blog_6250d5a101015yrh.html

Levels ofDetail,意为多细节层次,LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

Ogre的网格可以在建模软件中设置LOD,也可以在程序中自定义,注意如果一个mesh文件的LOD等级大于1的话就不能被自定义LOD

在Ogre中可以通过Mesh接口来自定义LOD级别,Ogre会根据用户定义的LOD级别以及摄像机与模型的距离自动给出相应的LOD模型

//载入初始网格

MeshPtrmesh=MeshManager::getSingleton().load("athene.mesh",ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);

//创建LOD模型,第一个参数是和摄像机的距离,第二个是LOD模型资源

mesh->createManualLodLevel(250,"athene_LOD1.mesh");

mesh->createManualLodLevel(500,"athene_LOD2.mesh");

//创建实体

m_entity=render->m_sm->createEntity(mesh->getName());

m_node=render->m_sm->getRootSceneNode()->createChildSceneNode();

m_node->attachObject(m_entity);

m_node->scale(0.1f,0.1f,0.1f);

m_node->setPosition(0.0f,500.0f,0.0f);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值