当前位置: 首页 > news >正文

设计的网站源代码怎么做搜索引擎优化基本

设计的网站源代码怎么做,搜索引擎优化基本,广州互邦物流网络优化建站,网站编程语言哪个好法线贴图 法线贴图分两种#xff0c;一种是模型空间中的#xff0c;一种是切线空间中的 模型空间中的法线贴图的rgb代表着每个渲染像素法线的xyz#xff0c;与顶点坐标处于一个空间#xff0c;图片是五颜六色的。 切线空间中的法线贴图的rgb同样对应xyz#xff0c;是切线…法线贴图 法线贴图分两种一种是模型空间中的一种是切线空间中的 模型空间中的法线贴图的rgb代表着每个渲染像素法线的xyz与顶点坐标处于一个空间图片是五颜六色的。 切线空间中的法线贴图的rgb同样对应xyz是切线空间里的坐标切线空间里的z轴正向垂直与当前三角形便宜x是当前三角形片元表面的一个切线y是他们的叉积。 切线空间每个轴范围是-1到1.但图片本身0-255对应的是0-1.而多数法线都是都是(0,0,1)(即当前像素的法向量刚好就是当前片元的顶点法向量)转换到颜色空间就是(0.5,0.5,1)(法向量坐标可能为负但颜色范围始终为正)。因此图片主要是蓝紫色 两个完全一样材质的物体由于位置不同光照也会不同。如果用模型空间存储的法线贴图是绝对法线法向量会完全不同无法使用同一张物体。而切线空间存储的法线贴图完全是基于物体自身的是相对法线多个物体可以复用(优点)。但再实际计算时需要根据物体本身的缩放位移做相应的矩阵转换处理(缺点) 模型空间的法线贴图直接提取向量信息做为法线向量即可 Vec3f Model::getNormal(float x, float y) {TGAColor n normalTex_.get(x * normalTex_.get_width(), y * normalTex_.get_height());Vec3f res;for (int i 0; i 3; i) {res[i] n.bgra[i] / 255.f * 2 - 1.f;}return res; } //.... struct normalTexShader :public IShader {mat2, 3, float uv;virtual Vec4f vertex(int iface, int vertIdx, Matrix mvp) {Vec3f v model-vert(model-face(iface)[vertIdx]);uv.set_col(vertIdx, model-tverts(model-tface(iface)[vertIdx]));return mvp * embed4(v);}virtual bool fragment(Vec3f barycentricCoordinates, TGAColor color) {Vec2f texcoords uv * barycentricCoordinates;Vec3f normal model-getNormal(texcoords.x, texcoords.y);float I std::max(0.f, normal * light_dir);color model-getDiffuseColor(texcoords.x, texcoords.y) * I;return false;} };切线空间的法线贴图使用重点求出tbn矩阵将切线空间的法线转化到世界空间中 tbn矩阵 tbn矩阵 tbn矩阵 当tbn矩阵的n是模型空间时法线贴图取值经过tbn变换后是模型空间法线 当tbn矩阵的n是世界空间时法线贴图取值经过tbn变换后是世界空间法线 对于三角形表面所有点t切线和b切线都是相同的 顶点法线与面法线可能不同 面法线只是垂直于面的一条向量规定了面的正反而顶点法线才是用于光照信息的处理建模软件中顶点法线的最初是的默认情况也并非是面法线的平均只有当在建模软件中对物体进行了平滑着色后才会根据面法线平均得到顶点法线 因此要通过每个顶点的切线找到曲面的法线 struct Shader :public IShader {mat2, 3, float uv;Vec3f vp[3];Matrix MVP rasterizer-getProjection() * rasterizer-getModelView();mat3, 3, float n;virtual Vec4f vertex(int iface, int vertIdx) {Vec3f v model-vert(model-face(iface)[vertIdx]);uv.set_col(vertIdx, model-tverts(model-tface(iface)[vertIdx]));vp[vertIdx] v;n.set_col(vertIdx, model-nverts(model-nface(iface)[vertIdx]));return MVP * embed4(v);}virtual bool fragment(Vec3f barycentricCoordinates, TGAColor color) {Vec3f N (n * barycentricCoordinates).normalize();float u1 uv[0][1] - uv[0][0];float v1 uv[1][1] - uv[1][0];float u2 uv[0][2] - uv[0][0];float v2 uv[1][2] - uv[1][0];Vec3f e1 vp[1] - vp[0];Vec3f e2 vp[2] - vp[0];float f 1.f / (u1 * v2 - u2 * v1);Vec3f T (e1 * v2 - e2 * v1) * f;T T - N * (T * N);T.normalize();Vec3f B cross(N, T).normalize();mat3, 3, float TBN;TBN.set_col(0, T);TBN.set_col(1, B);TBN.set_col(2, N);Vec2f texcoords uv * barycentricCoordinates;Vec3f normal TBN * model-getNormal(texcoords.x, texcoords.y);float I std::max(0.f, normal * light_dir);color model-getDiffuseColor(texcoords.x, texcoords.y) * I;return false;} };有一点注意的是很多文章里的tbn矩阵只到了这步推导公式 求出了t和b向量后实际上还要加上N做一次正交化否则是不保证相互垂直的。最终才是tbn矩阵 项目跟随练习代码地址
http://www.hkea.cn/news/14275116/

相关文章:

  • 多个域名绑定同一网站吗wordpress数据库搜索功能
  • 梧州做网站建设游艇 高端网站建设
  • 哈尔滨营销型网站制作百度自动点击器下载
  • 烟台网站建设托管江西省城乡建设培训网站官方网站
  • 苍强广州网站建设公司大学生做静态网站
  • 威胁网站检测平台建设中标北京建设部网站
  • 宁波北仑网站建设淘宝搜索关键词技巧
  • 贷款类网站怎样做建立健全安全生产责任制的根本目的是
  • 网站开发公司人员配置免费建站的软件
  • 做网站价格miniuinet软文推广系统
  • iis网站权限配置网站与手机app是一体吗
  • 西安做公司网站的公司ftp怎么重新上传网站
  • 手机网站底部电话代码泉州手机端建站模板
  • 搜索关键字搜索到网站株洲网站制作与设计
  • 在线房屋建设设计网站怎么修改wordpress布局
  • 专业网站优化seo旅游网站的建设现状
  • 网站积分规则设计wordpress 服务器搬家
  • 深圳学校网站定制设计个人网站做淘宝客
  • 超实用网站精致的个人网站
  • 网站访客西部数码网站管理助手 301
  • 有什么做公众号封面图的网站温州制作网站公司
  • 网站做快速排名是怎么做的呢校园二手网站的建设方案
  • 网页布局照着别的网站做会侵权吗基于wordpress学校系统
  • 如何提升网站的搜索排名网站后期增加内容
  • 关于做一动物网站的界面个网站运营推广选择乐云seo
  • wordpress调取文章列表seo系统培训哪家好
  • 追波设计网站官网南通专业网站制作
  • 凡科建站做网站需要几天高端网站设计公司
  • 品牌网站如何建设做网站大约多少钱
  • 江苏城乡建设教育网站手机wap网站免费建站