查看: 1473|回复: 8

【已解决】问一个关于面和纹理的问题.

[复制链接]

该用户从未签到

发表于 2013-5-27 08:18:26 | 显示全部楼层 |阅读模式
本帖最后由 lbdzjzlzq098 于 2013-5-27 10:08 编辑

用3dmax或者maya画的面导入OSG为什么背面是透明的,而OSG画出来的面是不透明的呢?如果想导入不透明应该怎么办?
还有就是OSG画的面可以双面贴不同纹理吗?

最后,在GLSL里面怎么样让一个有纹理的材质根据观察视角的不同而透明过去?
我写了段代码 只是变黑了。。。
  1. varying float NdotV;
  2. void main( void )
  3. {
  4.       vec3 ecPosition = vec3(gl_ModelViewMatrix * gl_Vertex);
  5.       vec3 N = normalize(gl_NormalMatrix * gl_Normal);
  6.       vec3 V = normalize(- ecPosition);
  7.       NdotV = dot(N,V);
  8.       gl_Position = ftransform();
  9.       gl_TexCoord[0] = gl_MultiTexCoord0;
  10. }
复制代码
  1. uniform sampler2D baseMap;
  2. varying float NdotV;
  3. void main( void )
  4. {
  5.   if(NdotV<0.5)
  6.     gl_FragColor = texture2D( baseMap, gl_TexCoord[0]);
  7. }
复制代码
有没有大大帮忙看下怎么搞?

该用户从未签到

发表于 2013-5-27 08:59:59 | 显示全部楼层
  1. void main( void )
  2. {
  3.   if(NdotV<0.5)
  4.     gl_FragColor = texture2D( baseMap, gl_TexCoord[0]);
  5. }
复制代码
明显就有问题啊

该用户从未签到

发表于 2013-5-27 09:14:18 | 显示全部楼层
看不到背面应该是 开启了GL_CULL_FACE 了

该用户从未签到

 楼主| 发表于 2013-5-27 09:34:17 | 显示全部楼层
liuzhiyu123 发表于 2013-5-27 09:14
看不到背面应该是 开启了GL_CULL_FACE 了

没有开啊,我还特意导进来之后设定了下OFF,也没用的
  1.         osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("model//hangdao.IVE");
  2.         node->getStateSet()->setMode(GL_CULL_FACE,osg::StateAttribute::OFF);
复制代码
背面是透明的。。。
$C)L[%DTYV@QOYKVH~L~Y[L.jpg

该用户从未签到

发表于 2013-5-27 09:35:11 | 显示全部楼层
OVERRIDE

该用户从未签到

 楼主| 发表于 2013-5-27 09:38:26 | 显示全部楼层
liuzhiyu123 发表于 2013-5-27 08:59
明显就有问题啊

我是视角cos值小于0.5就可以看到物体,大于0.5就不显示
但是里面的模型的面都会隐藏的,只是最外面的一个面是颜色变黑。

你说我代码有问题,请教下问题在哪里,如果改正呢?

15EA3055-829D-42AF-B8A8-2D29A4E5638F.jpg

图中 红色部分是变黑,而橙色部分却是隐藏了,不知道为什么会这样子.

该用户从未签到

 楼主| 发表于 2013-5-27 09:45:57 | 显示全部楼层
liuzhiyu123 发表于 2013-5-27 09:35
OVERRIDE

THX 用了override果然不隐藏了

该用户从未签到

发表于 2013-5-27 09:49:16 | 显示全部楼层
大于 0.5 的时候 应该是 discard

该用户从未签到

 楼主| 发表于 2013-5-27 09:53:08 | 显示全部楼层
liuzhiyu123 发表于 2013-5-27 09:49
大于 0.5 的时候 应该是 discard

Perfect,多谢版主!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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