理论教育 VegaPrime虚拟现实开发技术:物体渲染策略使用

VegaPrime虚拟现实开发技术:物体渲染策略使用

时间:2023-11-25 理论教育 版权反馈
【摘要】:m 默认值为0,表示不使用渲染策略;m 为1,表示使用高亮渲染策略;m 为2,表示使用包围盒渲染策略;m 为3,表示使用法线渲染策略。具体代码如图9.10.2所示。图9.10.3物体的几种渲染效果

VegaPrime虚拟现实开发技术:物体渲染策略使用

vrRenderStrategy的类视图如图9.10.1所示,常用的渲染策略类包含 3个:vrRender StrategyBounds,渲染出一个包围盒;vrRenderStrategyHighlight,渲染出一个高亮显示的几何体;vrRenderStrategyNormals,渲染出法线几何体。

图9.10.1 渲染策略的类视图

高亮渲染策略vrRenderStrategyHighlight的设置,主要包含线条宽度、线条颜色和是否使用线框模式:

//高亮显示 1

vrRenderStrategyHighlight *m_strategyHighlight;

m_strategyHighlight=new vrRenderStrategyHighlight();

m_strategyHighlight->ref();

m_strategyHighlight->setLineWidth(1.0f );

m_strategyHighlight->setColor(1.0f,0.0f,0.0f,1.0f);

m_strategyHighlight->setWireframeEnable(true);

包围盒渲染策略vrRenderStrategyBounds的设置,主要包含线条宽度、线条颜色和是否使用线框模式:

//包围盒2

vrRenderStrategyBounds *m_strategyBounds;

m_strategyBounds=new vrRenderStrategyBounds();

m_strategyBounds->ref();

m_strategyBounds->setLineWidth(1.0f );

m_strategyBounds->setColor(1.0f,0.0f,0.0f,1.0f);

m_strategyBounds->setWireframeEnable(true);

法线渲染策略vrRenderStrategyNormals的设置,主要包含法线长度和线条颜色:

//法线3(www.daowen.com)

vrRenderStrategyNormals *m_strategyNormals;

m_strategyNormals=new vrRenderStrategyNormals();

m_strategyNormals->setLength(0.5f );

m_strategyNormals->setColor(1.0f,0.0f,0.0f,1.0f);

m_strategyNormals->ref();

具体渲染策略的使用,还需要遍历三维物体中所包含的几何体vrGeometry,该几何体对象使用setRenderStrategy()方法进行渲染,以下代码使对象obj 使用高亮渲染策略进行渲染:

为了便于使用,把渲染策略编写成PublicMember 类的一个静态函数:

void setObjRenderStrategy(vpObject *obj,int m=0);

该函数包含两个参数:第一个参数是对象指针obj;第二个参数是整数m。m 默认值为0,表示不使用渲染策略;m 为1,表示使用高亮渲染策略;m 为2,表示使用包围盒渲染策略;m 为3,表示使用法线渲染策略。具体代码如图9.10.2所示。

图9.10.2 物体渲染策略方式设计

如图9.10.3所示,对场景中的汽车分别进行了高亮渲染、包围盒渲染和法线渲染策略,只需要在窗口相应的按钮下调用函数:

PublicMember::setObjRenderStrategy(obj,m);

与m 值对应,可对物体按相应的渲染策略进行渲染。

图9.10.3 物体的几种渲染效果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈