虚拟现实:Virtools SDK开发—BB模块开发
首先介绍一下此模块的功能,它主要实现了一个3d实体的自行绘制并且可以让用户自行选择材质贴图。功能比较简单适合作为入门练手。感兴趣的读者可以继续,以免浪费您的时间。
BB模块的使用如下图所示:
Virtools SDK 开发流程简单介绍如下:
(1) 安装Vritools平台,在安装过程选择全安装
(2) 安装dot net平台,或者vc平台,我使用的平台版本是dot net2003
(3) 将开发BB模块的向导文件夹复制到dot net安装目录的对应位置(有详细文件说明这里不做赘述)
(4) 新建项目,选择BB模块开发向导,选择所需完成向导
(5) 根据功能需求编写BB模块的主体功能
此模块的功能是绘制一个三维实体,并且用户可以随意选择材质(Material),那么首先要设置一个输入参数:
proto->DeclareInParameter("Material",CKPGUID_MATERIAL);
好了,在BB的SetFunction()函数中指定运行的主题函数,我们在主体函数中首先要将Material参数值取出来:
CKBehavior* beh = BehContext.Behavior;
CKMaterial* mat = (CKMaterial*)beh->GetInputParameterObject(0);
绘制Mesh:
利用CKMesh类创建Mesh,然后设置定点数量,设置顶点值,设置面数,面的顶点和Index,
之后利用mesh->ApplyGlobalMaterial(mat)函数将材质赋给Mesh;
利用CK3dEntity类创建实体ent,
CK3dEntity* ent =
(CK3dEntity*)context->CreateObject(CKCID_3DENTITY,"MyEnt");
并且利用AddMesh()函数将Mesh赋给ent;
最后不要忘记将ent加入到当前场景,这样才能保证其可见性:
BehContext.CurrentLevel->AddObject(ent);
运行之后的读者会发现所创建的实体不论赋给怎样的材质都是黑色的,这是因为材质的Emissive值的问题,我们可以用一下两行代码解决之:
VxColor vxc(255,255,255);
mat->SetEmissive(vxc); //mat 为当前使用的Material