SoBlinker

/*-------------------------------------------------------------- * Blinker node. * Use a blinker node to flash a neon ad sign on and off *------------------------------------------------------------*/ #include <Inventor/SoDB.h> #include <Inventor/SoInput.h> #include <Inventor/Win/SoWin.h> #include <Inventor/Win/SoWinRenderArea.h> #include <Inventor/nodes/SoBlinker.h> #include <Inventor/nodes/SoDirectionalLight.h> #include <Inventor/nodes/SoMaterial.h> #include <Inventor/nodes/SoPerspectiveCamera.h> #include <Inventor/nodes/SoSeparator.h> #include <Inventor/nodes/SoText3.h> int main(int, char **argv) { // Initialize Inventor and Win HWND myWindow = SoWin::init(argv[0]); if (myWindow == NULL) exit(1); // Set up camera and light SoSeparator *root = new SoSeparator; root->ref(); SoPerspectiveCamera *myCamera = new SoPerspectiveCamera; root->addChild(myCamera); root->addChild(new SoDirectionalLight); // Read in the parts of the sign from a file SoInput myInput; if (!myInput.openFile("../data/eatAtJosies.iv")) exit (1); SoSeparator *fileContents = SoDB::readAll(&myInput); if (fileContents == NULL) exit (1); SoSeparator *eatAt; eatAt = (SoSeparator *)SoNode::getByName("EatAt"); SoSeparator *josie; josie = (SoSeparator *)SoNode::getByName("Josies"); SoSeparator *frame; frame = (SoSeparator *)SoNode::getByName("Frame"); // // CODE FOR The Inventor Mentor STARTS HERE // Add the non-blinking part of the sign to the root root->addChild(eatAt); // Add the fast-blinking part to a blinker node SoBlinker *fastBlinker = new SoBlinker; root->addChild(fastBlinker); fastBlinker->speed = 2; // blinks 2 times a second fastBlinker->addChild(josie); // Add the slow-blinking part to another blinker node SoBlinker *slowBlinker = new SoBlinker; root->addChild(slowBlinker); slowBlinker->speed = 0.5; // 2 secs per cycle; 1 on, 1 off slowBlinker->addChild(frame); // CODE FOR The Inventor Mentor ENDS HERE // // Set up and display render area SoWinRenderArea *myRenderArea = new SoWinRenderArea(myWindow); SbViewportRegion myRegion(myRenderArea->getSize()); myCamera->viewAll(root, myRegion); myRenderArea->setSceneGraph(root); myRenderArea->setTitle("Neon"); myRenderArea->show(); SoWin::show(myWindow); SoWin::mainLoop(); return 0; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值