查看: 601|回复: 0

用顶点坐标进行纹理贴图//下面{}里是什么意思?

[复制链接]

该用户从未签到

发表于 2014-8-30 12:06:51 | 显示全部楼层 |阅读模式


  1. void computeTextCoords(osg::Vec2Array& texCoors,osg::ref_ptr<osg::Vec3Array> pts)
  2. {

  3.         osg::Vec3 v0 = pts->at(0);
  4.         osg::Vec3 v1 = pts->at(1);
  5.         osg::Vec3 v2 = pts->at(2);

  6.         osg::Vec2 tv0 = texCoors.at(0);
  7.         osg::Vec2 tv1 = texCoors.at(1);
  8.         osg::Vec2 tv2 = texCoors.at(2);

  9.         osg::Vec3 vec1 = v1 - v0;
  10.         osg::Vec3 vec2 = v2 - v0;

  11.         float len1 = vec1.length();
  12.         float len2 = vec2.length();

  13.         osg::Vec2 tvec1 = tv1 - tv0;
  14.         osg::Vec2 tvec2 = tv2 - tv0;

  15.         tvec1 /= len1;
  16.         tvec2 /= len2;
  17.        //下面{}里是什么意思?
  18.         {
  19.                 vec2.normalize();

  20.                 float d = vec1 * vec2;
  21.                 v1 -= vec2 * d;
  22.                 vec1 = v1 - v0;
  23.                 len1 = vec1.length();

  24.                 tv1 -= tvec2 * d;
  25.                 tvec1 = tv1 - tv0;
  26.                 tvec1 /= len1;

  27.                 vec1.normalize();
  28.         }

  29.         std::vector<int> offsets;
  30.         for(unsigned int i = 3; i < pts->size(); i++)
  31.         {
  32.                 osg::Vec3 vec = pts->at(i) - v0;
  33.                 float d1 = vec * vec1;
  34.                 float d2 = vec * vec2;
  35.                 osg::Vec2 t = tv0 + tvec1 * d1 + tvec2 * d2;
  36.                 texCoors[i]= t;;
  37.         }

  38. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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