查看: 1788|回复: 8

请问如何在贴图时只贴一面

[复制链接]

该用户从未签到

发表于 2010-7-25 18:48:06 | 显示全部楼层 |阅读模式
1 我画一个矩形,然后使用Texture2D贴图,矩形的两面都有纹理,这是为什么呢?

2 顶点的顺序我是逆时针的,我用顺时针也可以,还有法线设置与否似乎没什么影响,请问法线的作用是什么?

代码:

osg::ref_ptr<osg::Vec3Array>v = new osg::Vec3Array;
v->push_back(osg::Vec3(0,0,0));
v->push_back(osg::Vec3(0,0,1));
v->push_back(osg::Vec3(1,0,1));
v->push_back(osg::Vec3(1,0,0));


//创建一个Vec2Array对象以保存纹理单元0的纹理坐标,将其关联到geom
osg::ref_ptr<osg::Vec2Array> tc= new osg::Vec2Array;
tc->push_back(osg::Vec2(0.f,0.f));
tc->push_back(osg::Vec2(1.0f,0.f));
tc->push_back(osg::Vec2(1.0f,1.0f));
tc->push_back(osg::Vec2(1.0f,0.0f));
geom->setTexCoordArray(0,tc.get());

3 请问FrontFace如何使用?
osg::ref_ptr<osg::FrontFace> frontface = new osg::FrontFace;
frontface->setMode(osg::FrontFace::COUNTER_CLOCKWISE);
似乎没有什么作用

谢谢各位!

该用户从未签到

发表于 2010-7-25 21:13:30 | 显示全部楼层
1:这个应该不会吧,除非你两个面都打开了吧
2:顺时针和逆时针是决定哪一个是正面,哪一个是反面的,法线是计算光照用的
3:COUNTER_CLOCKWISE方向是前面

该用户从未签到

发表于 2010-7-25 21:13:52 | 显示全部楼层
1:这个应该不会吧,除非你两个面都打开了吧
2:顺时针和逆时针是决定哪一个是正面,哪一个是反面的,法线是计算光照用的
3:COUNTER_CLOCKWISE方向是前面

该用户从未签到

发表于 2010-7-25 22:04:29 | 显示全部楼层
默认两个面都是打开的,所有两个面都有纹理;
将背面剔除即可,然后再背面的位置在做一个正面;
法线是用来计算光强的

该用户从未签到

 楼主| 发表于 2010-7-25 23:56:27 | 显示全部楼层
4# StackSnow
谢谢,需要将背面剔除才可以。
那么如果我程序中没有计算光强的代码,是不是可以不设置法线,我设置与否不影响效果。我试了。

还有,请问:每个点的颜色和哪些因素有关?仅仅是点的color吗?会不会和环境光啊、光源啊 等等有关呢?因为我想生成一个面,这个面是被一个灯光照射的效果。 不知道怎么计算这个面的纹理。

该用户从未签到

发表于 2010-7-26 08:42:19 | 显示全部楼层
没有计算光强的代码,是不是可以不设置法线
会有默认的光源的,除非您关闭了GL_LIGHTING

每个点的颜色和哪些因素有关?仅仅是点的color吗?会不会和环境光啊、光源啊 等等有关呢
是的

该用户从未签到

 楼主| 发表于 2010-7-26 09:55:34 | 显示全部楼层
6# array

谢谢array的回答。
感觉在这里学习真好。
真的希望哪天我也可以在这里回答问题。
OSG新人满是好奇,动手实践时又有很多问题。

我 每天在进步……  

该用户从未签到

 楼主| 发表于 2010-7-26 10:44:25 | 显示全部楼层
6# array

请问array:

我按照建议,增加了如下代码,为什么贴图的两侧还是都有呢?

osg::StateSet * stateset = geom->getOrCreateStateSet();
//stateset-//>setModeosg::StateAttribute::CULLFACE,osg::StateAttribute::ON);
osg::CullFace*  cullface= new osg::CullFace(osg::CullFace::BACK);
//cullface->setMode(osg::CullFace::FRONT);
stateset->setAttribute(cullface);

该用户从未签到

发表于 2010-7-26 12:03:41 | 显示全部楼层
setAttributeAndModes(cullface),不过我不确定这是您想要的结果
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表