理论教育 VegaPrime虚拟现实开发技术:图形材质控制

VegaPrime虚拟现实开发技术:图形材质控制

时间:2023-11-25 理论教育 版权反馈
【摘要】:本节将重点讨论VSG 中的材质控制。控制图形材质是通过在状态类里设置元素值来完成的。需要设置材质元素、光照模式元素和颜色轨迹元素,然后把这3个元素值赋予状态类。图7.4.1图形材质控制主线程运行程序,其效果如图7.4.2所示。

VegaPrime虚拟现实开发技术:图形材质控制

除了为图形设置纹理外,还可以为图形设置材质,使图形看起来更加形象逼真。本节将重点讨论VSG 中的材质控制。

控制图形材质是通过在状态类里设置元素值来完成的。需要设置材质元素、光照模式元素和颜色轨迹元素,然后把这3个元素值赋予状态类。

首先,为材质元素做准备,并设置相关的值,其代码为:

vrMaterial *material=new vrMaterial();

material->setColor(vrMaterial::COLOR_AMBIENT,0.2f,0.0f,0.0f,1.0);

material->setColor(vrMaterial::COLOR_DIFFUSE,1.0,0.0,0.0,0.0);

material->setColor(vrMaterial::COLOR_SPECULAR,1.0,0.0,0.0,1.0);

material->setColor(vrMaterial::COLOR_EMISSIVE,0.0,0.0,0.0,1.0);

material->setSpecularExponent(50.0);

第2行代码设置其环绕颜色,第3行代码设置其漫反射颜色,第4行代码设置其镜面反射颜色,第5行代码设置其散发光颜色,第6行代码设置其镜面反射的尺寸和亮度。

其次,为光照模式元素做准备,并设置其相关的值,其代码为:

vrLightModel *lightModel=new vrLightModel();

lightModel->setLocalViewerEnable(false);

lightModel->setTwoSidedLightingEnable(false);

lightModel->setAmbientColor(0.2f,0.2f,0.2f,1.0);

第2行代码设置其本地光无效,第3行代码设置其双面光照无效,第4行代码设置其漫反射颜色。

接着,分别建立材质元素、光照模式元素和颜色轨迹元素,并赋值,其代码如下:

//建立材质元素并赋值

vrMaterial::Element materialElement;

materialElement.m_side=vrMaterial::SIDE_FRONT_AND_BACK;

materialElement.m_material=material;(www.daowen.com)

//建立光照模式元素并赋值

vrLightModel::Element lightModelElement;

lightModelElement.m_lightModel=lightModel;

//建立颜色轨迹元素并赋值

vrColorTrack::Element colorTrackElement;

colorTrackElement.m_enable=false;

最后,利用状态对象,分别把材质元素、光照模式元素和颜色轨迹元素赋值给状态对象的元素,其代码如下:

vrState* pNonTexState=new vrState();

pNonTexState->setElement(vrMaterial::Element::Id,&materialElement);

pNonTexState->setElement(vrLightModel::Element::Id,&lightModelElement);

pNonTexState->setElement(vrColorTrack::Element::Id,&colorTrackElement);

其他代码与绘制球体基本相同。主线程中详细代码如图7.4.1所示,有关图形材质的代码用黑体字体进行了标识。

图7.4.1 图形材质控制主线程

运行程序,其效果如图7.4.2所示。图中仅仅绘制了一个半径为4 m的球体,为图形设置材质后,这个红色的球体不再随着运动而变换颜色,而是具有了它自己的材料特性。

图7.4.2 材质效果图

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

我要反馈