SoTextureCoordinatePlane使用

Inventor包含两种纹理坐标函数:
SoTextureCoordiantePlane: 通过一个平面投影纹理贴图
SoTextureCoordinateEnvironment: 指定物体表面看上去他们所处环境的反射图像(也称反射映射或环境映射)

Inventor可以使用SoTextureCoordianteDefault节点使用缺省的纹理坐标,即使用SoTextureCoordinateDefault可以“关闭”掉场景中前面定义的任何纹理坐标点所产生的结果,并不一定非要使用separator节点才能达到隔离的效果。
下面是一个SoTextureCoordinatePlane的例子。

/* * Copyright 1991-1995, Silicon Graphics, Inc. * ALL RIGHTS RESERVED * * UNPUBLISHED -- Rights reserved under the copyright laws of the United * States. Use of a copyright notice is precautionary only and does not * imply publication or disclosure. * * U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND: * Use, duplication or disclosure by the Government is subject to restrictions * as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights * in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or * in similar or successor clauses in the FAR, or the DOD or NASA FAR * Supplement. Contractor/manufacturer is Silicon Graphics, Inc., * 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311. * * THE CONTENT OF THIS WORK CONTAINS CONFIDENTIAL AND PROPRIETARY * INFORMATION OF SILICON GRAPHICS, INC. ANY DUPLICATION, MODIFICATION, * DISTRIBUTION, OR DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY * PROHIBITED WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SILICON * GRAPHICS, INC. */ /*-------------------------------------------------------------- * This is an example from the Inventor Mentor, * chapter 7, example 3. * * This example illustrates using texture functions to * generate texture coordinates on a sphere. * It draws three texture mapped spheres, each with a * different repeat frequency as defined by the fields of the * SoTextureCoordinatePlane node. *------------------------------------------------------------*/ #include "CoinDef.h" #include <Inventor/nodes/SoMaterial.h> #include <Inventor/nodes/SoSeparator.h> #include <Inventor/nodes/SoSphere.h> #include <Inventor/nodes/SoTexture2.h> #include <Inventor/nodes/SoTexture2Transform.h> #include <Inventor/nodes/SoTextureCoordinatePlane.h> #include <Inventor/nodes/SoTranslation.h> #include <Inventor/Win/SoWin.h> #include <Inventor/Win/viewers/SoWinExaminerViewer.h> #ifdef WIN32 #endif int main(int, char **argv) { HWND myWindow = SoWin::init(argv[0]); if(myWindow == NULL) exit(1); SoSeparator *root = new SoSeparator; root->ref(); // Choose a texture. SoTexture2 *faceTexture = new SoTexture2; root->addChild(faceTexture); faceTexture->filename.setValue("../data/sillyFace.rgb"); // Make the diffuse color pure white SoMaterial *myMaterial = new SoMaterial; myMaterial->diffuseColor.setValue(1,1,1); root->addChild(myMaterial); // This texture2Transform centers the texture about (0,0,0) SoTexture2Transform *myTexXf = new SoTexture2Transform; myTexXf->translation.setValue(.5,.5); root->addChild(myTexXf); // Define a texture coordinate plane node. This one will // repeat with a frequency of two times per unit length. // Add a sphere for it to affect. SoTextureCoordinatePlane *texPlane1 = new SoTextureCoordinatePlane; texPlane1->directionS.setValue(SbVec3f(2,0,0)); texPlane1->directionT.setValue(SbVec3f(0,2,0)); root->addChild(texPlane1); root->addChild(new SoSphere); // A translation node for spacing the three spheres. SoTranslation *myTranslation = new SoTranslation; myTranslation->translation.setValue(2.5,0,0); // Create a second sphere with a repeat frequency of 1. SoTextureCoordinatePlane *texPlane2 = new SoTextureCoordinatePlane; texPlane2->directionS.setValue(SbVec3f(1,0,0)); texPlane2->directionT.setValue(SbVec3f(0,1,0)); root->addChild(myTranslation); root->addChild(texPlane2); root->addChild(new SoSphere); // The third sphere has a repeat frequency of .5 SoTextureCoordinatePlane *texPlane3 = new SoTextureCoordinatePlane; texPlane3->directionS.setValue(SbVec3f(.5,0,0)); texPlane3->directionT.setValue(SbVec3f(0,.5,0)); root->addChild(myTranslation); root->addChild(texPlane3); root->addChild(new SoSphere); SoWinExaminerViewer *myViewer = new SoWinExaminerViewer(myWindow); myViewer->setSceneGraph(root); myViewer->setTitle("Texture Coordinate Plane"); // In Inventor 2.1, if the machine does not have hardware texture // mapping, we must override the default drawStyle to display textures. myViewer->setDrawStyle(SoWinViewer::STILL, SoWinViewer::VIEW_AS_IS); myViewer->show(); SoWin::show(myWindow); SoWin::mainLoop(); return 0; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值