位置: 编程技术 - 正文

解决opengl计算顶点法向量问题(opengl函数)

编辑:rootadmin

推荐整理分享解决opengl计算顶点法向量问题(opengl函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl教程48讲,opengll,opengl nehe,opengl 计算,opengll,opengl,opengl,解决opengl计算顶点法向量问题,内容如对您有帮助,希望把文章链接给更多的朋友!

由于毕业论文的需要,近期开始学习OpenGL,由于新手刚开始接触所以总会遇到很多问题。这两天,总算把OpenGL中顶点法向量这个问题弄明白了。

几点迷惑:

在网上百度,发现很多求平面法向量的介绍以及程序。后面才知道顶点法向量才是我要的。对于空间中的三个点,怎么确定平面法向量的方法?这里可以通过尝试顺时针和逆时针结合结果图来判断。下面简单介绍下怎样进行假设。

如何通过假设方法判断平面法向量的方向(这里是指三角面片):

首先,当然要有数据,就是原始数据中每个面片是由那三个顶点组成。比如现在空间中有一个三角形平面由三个顶点A,B,C组成。

接着,就会存在下面两种情况,如下图:

因此,我们在程序中只要反着试一次,就会得到我们的结果了。下面我给出我的部分代码已经效果图(斯坦福大学著名的bunny模型):

其中,A和B是后面要进行叉乘的两个向量,point1,point2,point3就是三角面片的三个顶点。

情况1:

[cpp] view plaincopyA[X] = point2[X] - point1[X]; A[Y] = point2[Y] - point1[Y]; A[Z] = point2[Z] - point1[Z]; B[X] = point1[X] - point3[X]; B[Y] = point1[Y] - point3[Y]; B[Z] = point1[Z] - point3[Z]; 解决opengl计算顶点法向量问题(opengl函数)

情况2:

[cpp] view plaincopy<span style="color:#;">A[X] = point3[X] - point1[X]; A[Y] = point3[Y] - point1[Y]; A[Z] = point3[Z] - point1[Z]; B[X] = point1[X] - point2[X]; B[Y] = point1[Y] - point2[Y]; B[Z] = point1[Z] - point2[Z];</span>

从上面两种情况可以看出,它们确实是相反的。自己再实际操作的时候可以去尝试一下。

计算顶点法向量的过程记录:

首先,我们要了解几个概念,平面法向量(平面上两个不平行,不共线的向量叉乘得到),顶点法向量(以这个点为顶点的所有三角形的法向量之和)。

接着,我们就可以通过三个顶点求得两个向量,两个向量叉乘得到平面法向量。(平面法向量进行归一化)

然后,统计每个顶点的所有平面法向量之和。(顶点法向量进行归一化)

bunny数据文件下载链接

bunny数据包含顶点数据和顶点法向量数据链接

&#;&#;第一个连接是bunny模型的几种数据&#;式文件,第二个链接是一个包含bunny模型的顶点数据和已经计算出的顶点法向量数据。大家可以自己利用顶点数据计算顶点法向量,然后和该文件中的顶点法向量进行比对,来验证自己写的计算顶点法向量程序的正确与否。原文链接:

MipMap的LOD实现原理 当使用MipMap时我们可能会遇到tex2D,tex2Dbias,tex2Dgrad,tex2Dlod几种纹理采样函数。在PS中tex2D自动计算应该使用的纹理层。tex2Dbias需要在t.w中指定一个偏移

学习笔记一 画一个三矩形1,生成vertexbuffer//三角形顶点信息staticconstGLfloatg_vertex_buffer_data[]={-1.0f/2,-1.0f/2,0.0f,1.0f/2,-1.0f/2,0.0f,1.0f/2,1.0f/2,0.0f,-1.0f/2,1.0f/2,0.0f};//vb的标识

Android Framework基础一 简介之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework框架层了。记录1、下载源码,目录如下:2、Android系统的层次如

标签: opengl函数

本文链接地址:https://www.jiuchutong.com/biancheng/369473.html 转载请保留说明!

上一篇:OpenGL Tips: 在Visual C++中调用FreeGLUT

下一篇:MipMap的LOD实现原理(mmap实现原理)

  • 不动产租赁税率9%
  • 成本票有哪些种类
  • 待认证进项税额是什么情况下用的
  • 出差的招待费怎么报销
  • 增值税发票没了能补开吗
  • 外国人在中国工作签证
  • 出纳单据交接表怎么填写
  • 股东个人向公司借款会计分录
  • 卷烟消费税纳税环节有几个
  • 长期挂账的应付账款如何写申请报告
  • 房地产公司转让土地
  • 销项抵扣需要缴纳城建税吗
  • 政府奖励企业款银行未收到会计分录
  • 房租费用在本年内可以不摊销吗?
  • 有限公司缴税
  • 第一季度利润表本月数
  • 应收票据背书转让以取得所需物资
  • 出租柜台收取的服务费
  • 代理进口业务受托方账务处理流程
  • mac如何打电话
  • 升级鸿蒙系统会解除限制充电60
  • 代个人多交的社保怎么查
  • 企业实际缴纳税款额账务怎么看
  • php面向对象编程
  • 扣缴义务人需要办理税务登记吗
  • 都柏林圣三一学院图片
  • php调试工具哪个好用
  • 什么企业需要开具矿产品发票
  • 小规模纳税人报税期是哪几个月
  • vue中数字运算
  • 蓝桥杯咋样
  • 请求转发与重定义的区别
  • vue之间的组件通信
  • Laravel 5.3 学习笔记之 安装
  • powercfg off
  • 银行不良资产核销后怎么处理
  • mongodb介绍
  • 关于进项票少的解决方案
  • 购买铝材会计分录
  • 房屋租赁发票品目填写规范
  • 新入职员工什么时候发工资
  • 小型微利企业季度所得税怎么计算
  • 在建工程包括哪些大类科目
  • 增值税在实际计算时采取什么方法
  • 一般纳税人进销不符怎么办
  • 科技项目扶持资金
  • 已认证发票红冲全流程操作
  • 净资产收益率与什么指标有关
  • 不得从销项税额中抵扣的进项税额,不得计提加计抵减额
  • mysql 表分区
  • 一条sql语句搞定一个数据
  • mysql数据库巡检脚本
  • 重装win7系统后鼠标反应慢
  • debian更新软件
  • mac上怎么截图
  • FNPLicensingService.exe是什么意思
  • linux限制用户登录
  • ubuntu系统怎么用
  • win10预览版与正式版
  • win7系统图形设置选项
  • win10驱动备份在哪里
  • win8怎么打开磁盘管理
  • ExtJS4 Grid改变单元格背景颜色及Column render学习
  • 使用JQuery实现Ctrl+Enter提交表单的方法
  • node.js的作用是什么
  • shell脚本实现文件移动、复制等操作
  • java gui开发框架
  • android app 开发框架
  • bs cs架构
  • unity3d打开
  • 新浪微博模仿推特
  • python中django
  • javascript学习指南
  • textview在哪
  • JavaScript程序设计形考任务第一次任务
  • 广东省国家税务总局稽查局局长
  • 电子税务局登录密码怎么查询
  • 济南槐荫税务局办税大厅电话
  • 济南高新区国家税务局
  • 国税局地税局合并的必要性有哪些内容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设