位置: 编程技术 - 正文

解决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实现原理)

  • 支付工资代扣个税会计科目
  • 预提所得税的计税基础
  • 进口原料免税
  • 小微企业免税销售额是按1%还是3%
  • 年终奖影响社保公积金基数吗
  • 收企业利息如何做账
  • 专票如何开具
  • 新办企业一定要社保登记吗
  • 小规模季度不超过30万元免税会计分录
  • 申报从租计征的房产税必须提前备案吗
  • 电子发票冲红是怎么回事
  • 所得税的利润总额怎么计算
  • 叉车折旧年限是多少年
  • 新会计准则下接会计科目
  • 股息交个人所得税怎么交
  • 捐赠纳税调增金额怎么算
  • 销售商品发生的运费计入什么科目
  • 非居民企业所得税核定利润率
  • 住宅租给公司需要注意什么
  • 二手房增值税怎么收取
  • 滞留发票一般怎么开具
  • 如何降低房租
  • 进项虚假怎么处理
  • 非居民企业啥意思
  • 企业大中小型划分最新标准
  • 公司集体旅游会计处理
  • 申报个税按计提工资还是实际发放
  • 民办学校会计分录 百度网盘
  • 管理费用劳务费包括什么
  • win7改win10详细教程
  • 压缩文件夹发给别人他能看到我桌面上的文件吗
  • 员工 意外保险
  • 存量资金上缴国库是哪个文件规定了
  • 长期股权投资特征
  • 苹果icloud储存空间怎么查看内容
  • 施工项目费用明细表模板
  • 没有发票只有收据可以报销吗
  • PHP:class_parents()的用法_spl函数
  • Win11 Build22000.346 Beta/Release预览版发布 KB5007262更新汇总
  • codeigniter 教程
  • laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
  • 免购车税政策
  • 从上魏斯巴赫山地列车的车站向外看,德国图林根 (© golero/iStock/Getty Images Plus)
  • 企业发生的现金折扣应计入什么费用
  • 豁免债权如何做账
  • yii2权威指南
  • php写一个函数,对手机号做基础的判断和处理
  • php文件上传用什么请求方法
  • thinkphp input
  • 《ai人工智能》
  • vue权限管理面试题
  • input输入语句
  • vue快速入门
  • 什么是对公账户和个人账户
  • 厂房建设包括哪些
  • 个人发票需要什么抬头
  • sqlserver数据库事务
  • sqlserver数据库大小于对索引有影响吗?
  • 一般纳税人附加税减半征收政策2023
  • 计提生产经营所得
  • 减免税额月底怎么结转
  • 购配件组装机器多少钱
  • 财务费用利息收入的账务处理
  • 网银转账被退回来了
  • 小规模纳税人交通运输服务税率
  • 研发支出资本化支出在资产负债表哪里体现
  • 资本公积金什么时候提取
  • sql server 执行语句
  • ubuntu20.0.4安装
  • QQExternal.exe是什么进程?QQExternal.exe进程为什么被运行?
  • linux操作系统版本有哪些
  • smOutlookPack.exe - smOutlookPack是什么进程 什么文件
  • linux如何修改账户名
  • linux中fdisk -l
  • node mongoose
  • linux conky
  • 从零开始学什么
  • python的cumprod
  • Jquery实现$.fn.extend和$.extend函数
  • 汽车销售流程有哪些环节?每个环节的主要内容是什么?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设