查看: 2889|回复: 7

OSG两个问题?OSG法线问题&&类的结构分布继承关系

[复制链接]

该用户从未签到

发表于 2010-3-26 14:04:36 | 显示全部楼层 |阅读模式
NO.1 ........  osg::Vec3Array * normal=new osg::Vec3Array;
          normal->push back(osg::Vec3(1.0f,0.0f,0.0f)^osg::Vec3(0.0f,0.0f,1.0f));
OpenGL一个向量不就行了吗,,OSG这样设置法线什么原理?为什么要这样设置?

///////////////////////////////////////////////////////////////////////////////////////

NO.2 ........  OSG里面的类感觉怎么那么乱,有没有像MFC那样有一张大的继承关系表,这样便于理解?

该用户从未签到

发表于 2010-3-26 16:00:47 | 显示全部楼层
osg中并不是这样设置的,可以设置为一个向量。
至于类结构个人感觉还是很清晰的,你可以看看doc中的每个类的结构图,那上面很清楚的表达了继承关系。
PS:这样的帖子最好是发到讨论版块上,我还以为是新教程呢

该用户从未签到

 楼主| 发表于 2010-3-26 16:43:41 | 显示全部楼层
恩 下次就放到讨论版

第一个答案我还是不明白,我上面写的部分代码都是书上的,我就是不明白书上为什么这样写?
normal->push back(osg::Vec3(1.0f,0.0f,0.0f)^osg::Vec3(0.0f,0.0f,1.0f));

想不通~~~~

该用户从未签到

发表于 2010-3-28 21:08:39 | 显示全部楼层
^操作符用来计算叉积,您当然可以写成:
osg::Vec3 v = v1 ^ v2;
normal->push_back( v1 );

这和前一种写法没有什么区别,纯粹是个人习惯而已

该用户从未签到

 楼主| 发表于 2010-3-29 08:50:57 | 显示全部楼层
4# array 如果是那样的话V1=osg::Vec3(1.0f,0.0f,0.0f);
                    V2=osg::Vec3(0.0f,0.0f,1.0f);
那么              V3=V1^V2;
那                 V3=???
难道是V3=osg::Vec3(1.0f,0.0f,1.0f)吗?
这样的话那这个法线是怎么回事?与OpenGL不一样啊?

该用户从未签到

发表于 2010-3-29 09:35:35 | 显示全部楼层
您需要首先学习数学中叉积的理论和运算方法,很显然您并不理解“向量的叉积”是什么意思

该用户从未签到

 楼主| 发表于 2010-3-29 11:16:01 | 显示全部楼层
您需要首先学习数学中叉积的理论和运算方法,很显然您并不理解“向量的叉积”是什么意思
array 发表于 2010-3-29 09:35
array: 又复习了一下向量的知识,刚开始以为 ^  这里是位操作,原来osg定义了  ^  *    是叉积,点积。不过感觉要求Vec3(1.0f,0.0f,0.0f)与Vec3(0.0f,0.0f,1.0f)的叉积,还不如直接将法线写成vec3(0.0f,1.0f,0.0f),而为什么作者要用叉积来进行计算呢?

该用户从未签到

发表于 2010-3-29 12:18:15 | 显示全部楼层
这个您可以去问作者,也许用叉积来表达法线的求取会使得代码更清晰
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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