用OpenInventor实现的NeHe OpenGL教程-第十二课

本文通过OpenInventor实现NeHe OpenGL教程的第十二课,介绍了如何创建彩色立方体并响应键盘事件进行旋转。使用OpenInventor的缓存功能提升性能。
 
用OpenInventor实现的NeHe OpenGL教程-第十二课
 
      
 
NeHe这节课主要讨论OpenGL的显示列表功能。OpenGL的显示列表是加速OpenGL性能的一种重要的手段。但在OpenInventor中,我们根本就不需要关心是否使用显示列表,因为OpenInventor内部有缓存功能,而这个缓存功能就是使用显示列表来实现的。所以我们只需要实现程序逻辑功能,至于程序性能方面的事情,由OpenInventor内部处理就可以了。
 
       在程序开始的部分我们定义了一些变量。
SoRotation*                 g_pXRotation = NULL;  // 绕X轴旋转节点
SoRotation*                 g_pYRotation = NULL;   // 绕Y轴旋转节点
double                       g_dbXRot = M_PI / 4.0; // 绕X轴旋转的角度
double                       g_dbYRot = M_PI / 4.0; // 绕Y轴旋转的角度
 
       编写一个新函数CreateCube,这个函数的作用是根据输入颜色,创建一个彩色立方体场景。
SoSeparator* CreateCube(float* BoxColor,float* TopColor)
{
     // 因为立方体中,第5个面和其他面的颜色不同,因此需要为6个面分别指定颜色
    SoMaterial *pCubeMaterial = new SoMaterial;// 创建材质节点
     pCubeMaterial->diffuseColor.set1Value(0,BoxColor[0],BoxColor[1],BoxColor[2]);
     pCubeMaterial->diffuseColor.set1Value(1,BoxColor[0],BoxColor[1],BoxColor[2]);
     pCubeMaterial->diffuseColor.set1Value(2,BoxColor[0],BoxColor[1],BoxColor[2]);
     pCubeMaterial->diffuseColor.set1Value(3,BoxColor[0],BoxColor[1],BoxColor[2]);
     pCubeMaterial->diffuseColor.set1Value(4,TopColor[0],TopColor[1],TopColor[2]);
     pCubeMaterial->diffuseColor.set1Value(5,BoxColor[0],BoxColor[1],BoxColor[2]);
 
     SoSeparator *pCubeSep = new SoSeparator;// 创建保存立方体的组节点
     pCubeSep->addChild(pCubeMaterial);// 增加材质节点
     pCubeSep->addChild(new SoCube);// 增加立方体节点
     return pCubeSep;
}
 
       在函数BuildScene中,我们编写如下的代码。
void BuildScene(void)
{
     // 定义光照模型为BASE_COLOR
     SoLightModel *pSoLightModel = new SoLightModel;
     pSoLightModel->model = SoLazyElement::BASE_COLOR;
     g_pOivSceneRoot->addChild(pSoLightModel);
     // 设置纹理品质
     SoComplexity *pTextureComplexity = new SoComplexity;
     pTextureComplexity->textureQuality = 0.6;
     g_pOivSceneRoot->addChild(pTextureComplexity);
     // 增加纹理数据
     SoTexture2 *pTexture = new SoTexture2;
     pTexture->filename.setValue("../Data/Cube.png");
     g_pOivSceneRoot->addChild(pTexture);
     // 增加绕X,Y轴旋转的矩阵节点
     g_pXRotation = new SoRotation;
     g_pXRotation->rotation.setValue(SbVec3f(1,0,0),g_dbXRot);
 
     g_pYRotation = new SoRotation;
     g_pYRotation->rotation.setValue(SbVec3f(0,1,0),g_dbYRot);
 
     // 因为立方体中,第5个面和其他面的颜色不同,我们已经为6个面分别指定了颜色,下面的代码告诉
     //OpenInventor ,立方体节点是每个面使用一种颜色。关于材质绑定方面的内容,请参考
     // 《The Inventor Mentor》一书。
     SoMaterialBinding *pMaterialBinding = new SoMaterialBinding;
     pMaterialBinding->value = SoMaterialBindingElement::PER_PART;
     g_pOivSceneRoot->addChild(pMaterialBinding);
 
     // 定义每行立方体的颜色,数据和NeHe教程中相同
     static float boxcol[5][3] = { {1.0f,0.0f,0.0f},{1.0f,0.5f,0.0f},{1.0f,1.0f,0.0f},{0.0f,1.0f,0.0f},{0.0f,1.0f,1.0f} };
     static float topcol[5][3] = { {.5f,0.0f,0.0f},{0.5f,0.25f,0.0f},{0.5f,0.5f,0.0f},{0.0f,0.5f,0.0f},{0.0f,0.5f,0.5f} };
 
     // 创建所有的立方体,立方体的位置数据的计算和NeHe教程相同,读者请查阅NeHe教程
     for ( int yloop = 1; yloop < 6; yloop++)
     {
         for (int xloop = 0; xloop < yloop; xloop++)
         {
              SoSeparator *pOneCubeSep = new SoSeparator;
              g_pOivSceneRoot->addChild(pOneCubeSep);
 
              SoTranslation *pCubeTrans = new SoTranslation;
              pCubeTrans->translation.setValue(1.4f + (float(xloop) * 2.8f) - (float(yloop) * 1.4f),((6.0f - float(yloop)) * 2.4f) - 7.0f,0.0f);
              pOneCubeSep->addChild(pCubeTrans);
 
              pOneCubeSep->addChild(g_pXRotation);
 
              pOneCubeSep->addChild(g_pYRotation);
 
              pOneCubeSep->addChild(CreateCube(boxcol[yloop - 1],topcol[yloop - 1]));
         }
     }
 
     定义键盘回调节点,响应用户按键事件
     SoEventCallback* pEventCallback = new SoEventCallback;
     pEventCallback->addEventCallback(SoKeyboardEvent::getClassTypeId(),KeyboardEventCB,g_pOivSceneRoot);
     g_pOivSceneRoot->addChild(pEventCallback);
}
 
下面是键盘响应函数,我们在这个函数中响应上下左右箭头按键。请注意,OpenInventor角度的单位为弧度
void KeyboardEventCB(void *userData, SoEventCallback *pEventCB)
{
     if(SO_KEY_PRESS_EVENT(pEvent,LEFT_ARROW))
     {    // 绕X轴旋转
         g_dbYRot -= 0.01;
         g_pYRotation->rotation.setValue(SbVec3f(0,1,0),g_dbYRot);
     }
     else
     if(SO_KEY_PRESS_EVENT(pEvent,RIGHT_ARROW))
     {    // 绕X轴旋转
         g_dbYRot += 0.01;
         g_pYRotation->rotation.setValue(SbVec3f(0,1,0),g_dbYRot);
     }
     else
     if(SO_KEY_PRESS_EVENT(pEvent,UP_ARROW))
     {    // 绕Y轴旋转
         g_dbXRot -= 0.01;
         g_pXRotation->rotation.setValue(SbVec3f(1,0,0),g_dbXRot);
     }
     else
     if(SO_KEY_PRESS_EVENT(pEvent,DOWN_ARROW))
     {    // 绕Y轴旋转
         g_dbXRot += 0.01;
         g_pXRotation->rotation.setValue(SbVec3f(1,0,0),g_dbXRot);
     }
}
 
       现在编译运行我们程序,屏幕上会显示15个不同颜色的立方体。读者可以按下前后左右箭头键来旋转这些立方体。显示的效果和NeHe第十二课是相同的。
 
 
本课的完整代码 下载。 (VC 2003 + Coin2.5)
 
 
 
后记
OpenInventor是一种基于OpenGL的面向对象的三维图形软件开发包。使用这个开发包,程序员可以快速、简洁地开发出各种类型的交互式三维图形软件。这里不对OpenInventor做详细的介绍,读者如果感兴趣,可以阅读我的blog中的这篇文章《 OpenInventor 简介》。
 
NeHe教程是目前针对初学者来说最好的OpenGL教程,它可以带领读者由浅入深,循序渐进地掌握OpenGL编程技巧。到目前为止(2007年11月),NeHe教程一共有48节。我的计划是使用OpenInventor来实现所有48节课程同样的效果。目的是复习和巩固OpenGL的知识,同时与各位读者交流OpenInventor的使用技巧。
 
       因为篇幅的限制,我不会介绍NeHe教程中OpenGL的实现过程,因为NeHe的教程已经讲解的很清楚了,目前网络中也有NeHe的中文版本。我将使用VC 2003作为主要的编译器。程序框架采用和NeHe一样的Win32程序框架,不使用MFC。程序也可以在VC Express,VC 2005/2008中编译。我采用的OpenInventor开发环境是Coin,这是一个免费开源的OpenInventor开发库。文章 《 OpenInventor-Coin3D开发环境》 介绍了如何在VC中使用Coin。我使用的Coin版本是2.5。读者可以到 www.coin3d.org 中免费下载。
 
       读者可以在遵循GNU协议的条件下自由使用、修改本文的代码。水平的原因,代码可能不是最优化的,我随时期待读者的指正和交流。转载请注明。谢谢。
我的联系方式:
 
The Inventor Mentor[cn].: 文件夹 PATH 列表 卷序列号为 4E8D-6931 C:. │ .txt │ The Inventor Mentor[cn].rar │ └─The Inventor Mentor[cn] │ The Inventor Mentor[cn].pdf │ └─ExampleCode └─例子代码 │ 01.1.Windmill.iv │ 1Mentor.ncb │ 1Mentor.sln │ 1Mentor.sln.old │ Mentor.dsw │ Mentor.ncb │ Mentor.sln │ UpgradeLog.XML │ 使用声明.txt │ ├─Cxx │ │ 02.1.HelloCone.cxx │ │ 02.1.HelloCone.dsp │ │ 02.1.HelloCone.ncb │ │ 02.1.HelloCone.plg │ │ 02.1.HelloCone.suo │ │ 02.1.HelloCone.vcproj │ │ 02.1.HelloCone.vcproj.shuang-PC.shuang.user │ │ 02.2.EngineSpin.cxx │ │ 02.2.EngineSpin.dsp │ │ 02.2.EngineSpin.ncb │ │ 02.2.EngineSpin.suo │ │ 02.2.EngineSpin.vcproj │ │ 02.2.EngineSpin.vcproj.shuang-PC.shuang.user │ │ 02.3.Trackball.cxx │ │ 02.3.Trackball.dsp │ │ 02.3.Trackball.vcproj │ │ 02.3.Trackball.vcproj.shuang-PC.shuang.user │ │ 02.4.Examiner.cxx │ │ 02.4.Examiner.dsp │ │ 02.4.Examiner.vcproj │ │ 02.4.Examiner.vcproj.shuang-PC.shuang.user │ │ 03.1.Molecule.cxx │ │ 03.1.Molecule.dsp │ │ 03.1.Molecule.vcproj │ │ 03.1.Molecule.vcproj.shuang-PC.shuang.user │ │ 03.2.Robot.cxx │ │ 03.2.Robot.dsp │ │ 03.2.Robot.ncb │ │ 03.2.Robot.suo │ │ 03.2.Robot.vcproj │ │ 03.2.Robot.vcproj.shuang-PC.shuang.user │ │ 03.3.Naming.cxx │ │ 03.3.Naming.dsp │ │ 03.3.Naming.vcproj │ │ 03.3.Naming.vcproj.shuang-PC.shuang.user │ │ 04.1.Cameras.cxx │ │ 04.1.Cameras.dsp │ │ 04.1.Cameras.vcproj │ │ 04.1.Cameras.vcproj.shuang-PC.shuang.user │ │ 04.2.Lights.cxx │ │ 04.2.Lights.dsp │ │ 04.2.Lights.vcproj │ │ 04.2.Lights.vcproj.shuang-PC.shuang.user │ │ 05.1.FaceSet.cxx │ │ 05.1.FaceSet.dsp │ │ 05.1.FaceSet.ncb │ │ 05.1.FaceSet.suo │ │ 05.1.FaceSet.vcproj │ │ 05.1.FaceSet.vcproj.7.10.old │ │ 05.1.FaceSet.vcproj.shuang-PC.shuang.user │ │ 05.2.IndexedFaceSet.cxx │ │ 05.2.IndexedFaceSet.dsp │ │ 05.2.IndexedFaceSet.vcproj │ │ 05.2.IndexedFaceSet.vcproj.shuang-PC.shuang.user │ │ 05.3.TriangleStripSet.cxx │ │ 05.3.TriangleStripSet.dsp │ │ 05.3.TriangleStripSet.vcproj │ │ 05.3.TriangleStripSet.vcproj.shuang-PC.shuang.user │ │ 05.4.QuadMesh.cxx │ │ 05.4.QuadMesh.dsp │ │ 05.4.QuadMesh.vcproj │ │ 05.4.QuadMesh.vcproj.shuang-PC.shuang.user │ │ 05.5.Binding.cxx │ │ 05.5.Binding.dsp │ │ 05.5.Binding.vcproj │ │ 05.5.Binding.vcproj.shuang-PC.shuang.user │ │ 05.6.TransformOrdering.cxx │ │ 05.6.TransformOrdering.dsp │ │ 05.6.TransformOrdering.vcproj │ │ 05.6.TransformOrdering.vcproj.shuang-PC.shuang.user │ │ 05.6.TransformOrdering1.cxx │ │ 06.1.Text.cxx │ │ 06.1.Text.dsp │ │ 06.1.Text.vcproj │ │ 06.1.Text.vcproj.shuang-PC.shuang.user │ │ 06.2.Simple3DText.cxx │ │ 06.2.Simple3DText.dsp │ │ 06.2.Simple3DText.vcproj │ │ 06.2.Simple3DText.vcproj.shuang-PC.shuang.user │ │ 06.3.Complex3DText.cxx │ │ 06.3.Complex3DText.dsp │ │ 06.3.Complex3DText.vcproj │ │ 06.3.Complex3DText.vcproj.shuang-PC.shuang.user │ │ 07.1.BasicTexture.cxx │ │ 07.1.BasicTexture.dsp │ │ 07.1.BasicTexture.vcproj │ │ 07.1.BasicTexture.vcproj.shuang-PC.shuang.user │ │ 07.2.TextureCoordinates.cxx │ │ 07.2.TextureCoordinates.dsp │ │ 07.2.TextureCoordinates.vcproj │ │ 07.2.TextureCoordinates.vcproj.shuang-PC.shuang.user │ │ 07.3.TextureFunction.cxx │ │ 07.3.TextureFunction.dsp │ │ 07.3.TextureFunction.vcproj │ │ 07.3.TextureFunction.vcproj.shuang-PC.shuang.user │ │ 08.1.BSCurve.cxx │ │ 08.1.BSCurve.dsp │ │ 08.1.BSCurve.vcproj │ │ 08.1.BSCurve.vcproj.shuang-PC.shuang.user │ │ 08.2.UniCurve.cxx │ │ 08.2.UniCurve.dsp │ │ 08.2.UniCurve.ncb │ │ 08.2.UniCurve.suo │ │ 08.2.UniCurve.vcproj │ │ 08.2.UniCurve.vcproj.7.10.old │ │ 08.2.UniCurve.vcproj.shuang-PC.shuang.user │ │ 08.3.BezSurf.cxx │ │ 08.3.BezSurf.dsp │ │ 08.3.BezSurf.vcproj │ │ 08.3.BezSurf.vcproj.shuang-PC.shuang.user │ │ 08.4.TrimSurf.cxx │ │ 08.4.TrimSurf.dsp │ │ 08.4.TrimSurf.vcproj │ │ 08.4.TrimSurf.vcproj.shuang-PC.shuang.user │ │ 09.1.Print.cxx │ │ 09.1.Print.dsp │ │ 09.1.Print.vcproj │ │ 09.1.Print.vcproj.shuang-PC.shuang.user │ │ 09.2.Texture.cxx │ │ 09.2.Texture.dsp │ │ 09.2.Texture.vcproj │ │ 09.2.Texture.vcproj.shuang-PC.shuang.user │ │ 09.3.Search.cxx │ │ 09.3.Search.dsp │ │ 09.3.Search.vcproj │ │ 09.3.Search.vcproj.shuang-PC.shuang.user │ │ 09.4.PickAction.cxx │ │ 09.4.PickAction.dsp │ │ 09.4.PickAction.vcproj │ │ 09.4.PickAction.vcproj.shuang-PC.shuang.user │ │ 09.5.GenSph.cxx │ │ 09.5.GenSph.dsp │ │ 09.5.GenSph.vcproj │ │ 09.5.GenSph.vcproj.shuang-PC.shuang.user │ │ 10.1.addEventCB.cxx │ │ 10.1.addEventCB.dsp │ │ 10.1.addEventCB.vcproj │ │ 10.1.addEventCB.vcproj.shuang-PC.shuang.user │ │ 10.2.setEventCB.cxx │ │ 10.2.setEventCB.dsp │ │ 10.2.setEventCB.vcproj │ │ 10.2.setEventCB.vcproj.shuang-PC.shuang.user │ │ 10.5.SelectionCB.cxx │ │ 10.5.SelectionCB.dsp │ │ 10.5.SelectionCB.vcproj │ │ 10.5.SelectionCB.vcproj.shuang-PC.shuang.user │ │ 10.6.PickFilterTopLevel.cxx │ │ 10.6.PickFilterTopLevel.dsp │ │ 10.6.PickFilterTopLevel.vcproj │ │ 10.6.PickFilterTopLevel.vcproj.shuang-PC.shuang.user │ │ 10.7.PickFilterManip.cxx │ │ 10.7.PickFilterManip.dsp │ │ 10.7.PickFilterManip.vcproj │ │ 10.7.PickFilterManip.vcproj.shuang-PC.shuang.user │ │ 10.8.PickFilterNodeKit.cxx │ │ 10.8.PickFilterNodeKit.dsp │ │ 10.8.PickFilterNodeKit.vcproj │ │ 10.8.PickFilterNodeKit.vcproj.shuang-PC.shuang.user │ │ 11.1.ReadFile.cxx │ │ 11.1.ReadFile.dsp │ │ 11.1.ReadFile.vcproj │ │ 11.1.ReadFile.vcproj.shuang-PC.shuang.user │ │ 11.2.ReadString.cxx │ │ 11.2.ReadString.dsp │ │ 11.2.ReadString.vcproj │ │ 11.2.ReadString.vcproj.shuang-PC.shuang.user │ │ 12.1.FieldSensor.cxx │ │ 12.1.FieldSensor.dsp │ │ 12.1.FieldSensor.vcproj │ │ 12.1.FieldSensor.vcproj.shuang-PC.shuang.user │ │ 12.2.NodeSensor.cxx │ │ 12.2.NodeSensor.dsp │ │ 12.2.NodeSensor.vcproj │ │ 12.2.NodeSensor.vcproj.shuang-PC.shuang.user │ │ 12.3.AlarmSensor.cxx │ │ 12.3.AlarmSensor.dsp │ │ 12.3.AlarmSensor.vcproj │ │ 12.3.AlarmSensor.vcproj.shuang-PC.shuang.user │ │ 12.4.TimerSensor.cxx │ │ 12.4.TimerSensor.dsp │ │ 12.4.TimerSensor.vcproj │ │ 12.4.TimerSensor.vcproj.shuang-PC.shuang.user │ │ 13.1.GlobalFlds.cxx │ │ 13.1.GlobalFlds.dsp │ │ 13.1.GlobalFlds.vcproj │ │ 13.1.GlobalFlds.vcproj.shuang-PC.shuang.user │ │ 13.2.ElapsedTime.cxx │ │ 13.2.ElapsedTime.dsp │ │ 13.2.ElapsedTime.vcproj │ │ 13.2.ElapsedTime.vcproj.shuang-PC.shuang.user │ │ 13.3.TimeCounter.cxx │ │ 13.3.TimeCounter.dsp │ │ 13.3.TimeCounter.vcproj │ │ 13.3.TimeCounter.vcproj.shuang-PC.shuang.user │ │ 13.4.Gate.cxx │ │ 13.4.Gate.dsp │ │ 13.4.Gate.vcproj │ │ 13.4.Gate.vcproj.shuang-PC.shuang.user │ │ 13.5.Boolean.cxx │ │ 13.5.Boolean.dsp │ │ 13.5.Boolean.vcproj │ │ 13.5.Boolean.vcproj.shuang-PC.shuang.user │ │ 13.6.Calculator.cxx │ │ 13.6.Calculator.dsp │ │ 13.6.Calculator.vcproj │ │ 13.6.Calculator.vcproj.shuang-PC.shuang.user │ │ 13.7.Rotor.cxx │ │ 13.7.Rotor.dsp │ │ 13.7.Rotor.vcproj │ │ 13.7.Rotor.vcproj.shuang-PC.shuang.user │ │ 13.8.Blinker.cxx │ │ 13.8.Blinker.dsp │ │ 13.8.Blinker.vcproj │ │ 13.8.Blinker.vcproj.shuang-PC.shuang.user │ │ 14.1.FrolickingWords.cxx │ │ 14.1.FrolickingWords.dsp │ │ 14.1.FrolickingWords.vcproj │ │ 14.1.FrolickingWords.vcproj.shuang-PC.shuang.user │ │ 14.2.Editors.cxx │ │ 14.2.Editors.dsp │ │ 14.2.Editors.vcproj │ │ 14.2.Editors.vcproj.7.10.old │ │ 14.2.Editors.vcproj.shuang-PC.shuang.user │ │ 14.3.Balance.cxx │ │ 14.3.Balance.dsp │ │ 14.3.Balance.vcproj │ │ 14.3.Balance.vcproj.7.10.old │ │ 14.3.Balance.vcproj.shuang-PC.shuang.user │ │ 15.1.ConeRadius.cxx │ │ 15.1.ConeRadius.dsp │ │ 15.1.ConeRadius.vcproj │ │ 15.1.ConeRadius.vcproj.7.10.old │ │ 15.1.ConeRadius.vcproj.shuang-PC.shuang.user │ │ 15.2.SliderBox.cxx │ │ 15.2.SliderBox.dsp │ │ 15.2.SliderBox.plg │ │ 15.2.SliderBox.vcproj │ │ 15.2.SliderBox.vcproj.7.10.old │ │ 15.2.SliderBox.vcproj.shuang-PC.shuang.user │ │ 15.3.AttachManip.cxx │ │ 15.3.AttachManip.dsp │ │ 15.3.AttachManip.plg │ │ 15.3.AttachManip.vcproj │ │ 15.3.AttachManip.vcproj.7.10.old │ │ 15.3.AttachManip.vcproj.shuang-PC.shuang.user │ │ 15.4.Customize.cxx │ │ 15.4.Customize.dsp │ │ 15.4.Customize.plg │ │ 15.4.Customize.vcproj │ │ 15.4.Customize.vcproj.7.10.old │ │ 15.4.Customize.vcproj.shuang-PC.shuang.user │ │ 16.1.Overlay.cxx │ │ 16.1.Overlay.dsp │ │ 16.1.Overlay.plg │ │ 16.1.Overlay.vcproj │ │ 16.1.Overlay.vcproj.7.10.old │ │ 16.1.Overlay.vcproj.shuang-PC.shuang.user │ │ 16.2.Callback.cxx │ │ 16.2.Callback.dsp │ │ 16.2.Callback.vcproj │ │ 16.2.Callback.vcproj.7.10.old │ │ 16.2.Callback.vcproj.shuang-PC.shuang.user │ │ 16.3.AttachEditor.cxx │ │ 16.3.AttachEditor.dsp │ │ 16.3.AttachEditor.vcproj │ │ 16.3.AttachEditor.vcproj.7.10.old │ │ 16.3.AttachEditor.vcproj.shuang-PC.shuang.user │ │ 16.4.OneWindow.cxx │ │ 16.5.Examiner.cxx │ │ 16.5.Examiner.dsp │ │ 16.5.Examiner.ncb │ │ 16.5.Examiner.suo │ │ 16.5.Examiner.vcproj │ │ 16.5.Examiner.vcproj.shuang-PC.shuang.user │ │ 17.2.GLCallback.cxx │ │ 17.2.GLCallback.dsp │ │ 17.2.GLCallback.plg │ │ 17.2.GLCallback.vcproj │ │ 17.2.GLCallback.vcproj.7.10.old │ │ 17.2.GLCallback.vcproj.shuang-PC.shuang.user │ │ 17.3.GLFloor.cxx │ │ 17.3.GLFloor.dsp │ │ 17.3.GLFloor.ncb │ │ 17.3.GLFloor.suo │ │ 17.3.GLFloor.vcproj │ │ 17.3.GLFloor.vcproj.shuang-PC.shuang.user │ │ CoinDef.h │ │ print.c │ │ print.h │ │ UpgradeLog.XML │ │ UpgradeLog2.XML │ │ │ ├─Data │ │ annotation.iv │ │ bird.iv │ │ bookshelf.iv │ │ brick.1.rgb │ │ cranfld.iv │ │ desk.iv │ │ diamondRug.rgb │ │ dogDish.iv │ │ duck.iv │ │ eatAtJosies.iv │ │ flower.iv │ │ flowerPath.iv │ │ globe.rgb │ │ hole.iv │ │ jumpyMan.iv │ │ luxo.iv │ │ monitor.iv │ │ NurbsCurve.iv │ │ NurbsSurface.iv │ │ oak.gif │ │ parkbench.iv │ │ sillyFace.rgb │ │ star.iv │ │ temple.iv │ │ windmillTower.iv │ │ windmillVanes.iv │ │ │ ├─Win32Debug │ │ 02.1.HelloCone.bsc │ │ 02.1.HelloCone.exe.embed.manifest │ │ 02.1.HelloCone.exe.embed.manifest.res │ │ 02.1.HelloCone.obj │ │ 02.1.HelloCone.sbr │ │ 02.2.EngineSpin.bsc │ │ 02.2.EngineSpin.exe.embed.manifest │ │ 02.2.EngineSpin.exe.embed.manifest.res │ │ 02.2.EngineSpin.obj │ │ 02.2.EngineSpin.sbr │ │ 02.3.Trackball.exe │ │ 02.4.Examiner.exe │ │ 03.1.Molecule.exe │ │ 03.2.Robot.bsc │ │ 03.2.Robot.exe.embed.manifest │ │ 03.2.Robot.exe.embed.manifest.res │ │ 03.2.Robot.obj │ │ 03.2.Robot.sbr │ │ 03.3.Naming.exe │ │ 04.1.Cameras.exe │ │ 04.2.Lights.exe │ │ 05.1.bsc │ │ 05.1.FaceSet.obj │ │ 05.1.FaceSet.sbr │ │ 05.2.IndexedFaceSet.exe │ │ 05.3.TriangleStripSet.exe │ │ 05.4.QuadMesh.exe │ │ 05.5.Binding.exe │ │ 05.6.TransformOrdering.exe │ │ 06.1.Text.exe │ │ 06.2.Simple3DText.exe │ │ 06.3.Complex3DText.exe │ │ 07.1.BasicTexture.exe │ │ 07.2.TextureCoordinates.exe │ │ 07.3.TextureFunction.exe │ │ 08.1.BSCurve.exe │ │ 08.2.UniCurve.exe │ │ 08.3.BezSurf.exe │ │ 08.4.TrimSurf.exe │ │ 09.1.Print.exe │ │ 09.2.Texture.exe │ │ 09.3.Search.exe │ │ 09.4.PickAction.exe │ │ 09.5.GenSph.exe │ │ 10.1.addEventCB.exe │ │ 10.2.setEventCB.exe │ │ 10.5.SelectionCB.exe │ │ 10.6.PickFilterTopLevel.exe │ │ 10.7.PickFilterManip.exe │ │ 10.8.PickFilterNodeKit.exe │ │ 11.1.ReadFile.exe │ │ 11.2.ReadString.exe │ │ 12.1.FieldSensor.exe │ │ 12.2.NodeSensor.exe │ │ 12.3.AlarmSensor.exe │ │ 12.4.TimerSensor.exe │ │ 13.1.GlobalFlds.exe │ │ 13.2.ElapsedTime.exe │ │ 13.3.TimeCounter.exe │ │ 13.4.Gate.exe │ │ 13.5.Boolean.exe │ │ 13.6.Calculator.exe │ │ 13.7.Rotor.exe │ │ 13.8.Blinker.exe │ │ 14.1.FrolickingWords.exe │ │ 14.2.Editors.bsc │ │ 14.2.Editors.obj │ │ 14.2.Editors.sbr │ │ 14.3.Balance.exe │ │ 15.1.ConeRadius.exe │ │ 15.2.SliderBox.exe │ │ 15.3.AttachManip.exe │ │ 15.4.Customize.exe │ │ 16.1.Overlay.exe │ │ 16.2.Callback.exe │ │ 16.3.AttachEditor.exe │ │ 16.5.Examiner.bsc │ │ 16.5.Examiner.exe.embed.manifest │ │ 16.5.Examiner.exe.embed.manifest.res │ │ 16.5.Examiner.obj │ │ 16.5.Examiner.sbr │ │ 17.2.GLCallback.exe │ │ 17.3.GLFloor.bsc │ │ 17.3.GLFloor.exe.embed.manifest │ │ 17.3.GLFloor.exe.embed.manifest.res │ │ 17.3.GLFloor.obj │ │ 17.3.GLFloor.sbr │ │ BuildLog.htm │ │ coin2d.dll │ │ libsndfile.dll │ │ msvcr71d.dll │ │ print.obj │ │ simage1.dll │ │ sowin1d.dll │ │ vc80.idb │ │ vc80.pdb │ │ zlib1.dll │ │ │ ├─Win32Release │ │ coin2.dll │ │ libsndfile.dll │ │ simage1.dll │ │ sowin1.dll │ │ zlib1.dll │ │ │ └─_UpgradeReport_Files │ UpgradeReport.css │ UpgradeReport.xslt │ UpgradeReport_Minus.gif │ UpgradeReport_Plus.gif │ ├─Data │ annotation.iv │ bird.iv │ bookshelf.iv │ brick.1.rgb │ cranfld.iv │ desk.iv │ diamondRug.rgb │ dogDish.iv │ duck.iv │ eatAtJosies.iv │ flower.iv │ flowerPath.iv │ globe.rgb │ hole.iv │ jumpyMan.iv │ luxo.iv │ monitor.iv │ NurbsCurve.iv │ NurbsSurface.iv │ oak.gif │ parkbench.iv │ sillyFace.rgb │ star.iv │ temple.iv │ windmillTower.iv │ windmillVanes.iv │ └─_UpgradeReport_Files UpgradeReport.css UpgradeReport.xslt UpgradeReport_Minus.gif UpgradeReport_Plus.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值