Creator之Switch节点运用入门
类型:整理 | 来自:86CG | 时间:2007-11-29 |
点击:
Creator中的Switch节点用于控制其子节点的显示状态,具体来说就是子节点是否被渲染。
打开Switch节点属性面版可以看到,一些竖条,每一条按照顺序对应一个相应的子节点,白色表示显示该子节点,蓝色表示不显示该子节点,我们可以设置任意组合来进行控制,每一种组合都对应一个唯一的掩码索引号:0, 1,2,3……n
这样我们就可以在Vega中通过程序来控制采用哪种组合方式来显示该组节点对应的模型,比如我们可以将一个建筑的多个组成部分用Switch节点的方式来进行组合显示,或者为模型制作在不同的状态下的样子,然后再程序中根据实际情况来判断显示哪种状态,等等等等。
下面是一段简单的代码,用来控制Switch节点,假设模型对象中包含一个名为“mysw”的Switch节点:
#include
#include
#include
#include
pfSwitch* findSwitchInObj(vgObject *obj, char *swname); // 用于获取模型对象中的Swtich节点指针
main (int argc, char* argv[])
{
vgWindow *win;
vgObject *obj;
pfSwitch *sw;
if (argc!=2)
{
printf( "Usage: %s ", argv[0] );
exit( -1 );
}
vgInitSys();
vgDefineSys(argv[1]);
vgConfigSys();
win = vgGetWin(0);
obj = vgGetObj(0);
sw = findSwitchInObj(obj, "mysw");
while (1)
{
vgSyncFrame();
vgFrame();
switch(vgGetWinKey(win))
{
case '1':
pfSwitchVal(sw, 0);
break;
case '2':
pfSwitchVal(sw, 1);
break;
case '3':
pfSwitchVal(sw, 2);
break;
……
default:
break;
}
}
}
pfSwitch* findSwitchInObj(vgObject *obj, char *swName)
{
pfSwitch *swNode = NULL;
pfNode *node = NULL;
if (obj == NULL)
return NULL;
node = vgGetObjPfNode(obj);
if (node == NULL)
return NULL;
swNode = (pfSwitch *)pfFindNode( node, swName, pfGetSwitchClassType());
return swNode;
}
(完)
- 上篇文章: 怎样在程序中设置一个 Navigator的速度
- 返回:Multigen
- 下篇文章:怎样在程序中从运动模式变换为自动漫游模式
CG橙子精彩导航: 










