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

网站建设的文档数字营销包括哪六种方式

网站建设的文档,数字营销包括哪六种方式,世界500强企业国家排名,wordpress 订单号位数QTOpenGL光照 本篇完整工程见gitee:QtOpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主 颜色 现实生活中看到的物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的颜色 太阳光能被看见的白光是多找演的的组合…

QT+OpenGL光照

本篇完整工程见gitee:QtOpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主

颜色

现实生活中看到的物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的颜色

太阳光能被看见的白光是多找演的的组合

在这里插入图片描述

颜色的数据化的由红色,绿色和蓝色三个分量组成,他们通常被缩写为RGB

例如:珊瑚红色

QVector3D color(1.0f, 0.5f, 0.31f);

上图颜色的代码展示

// 灯光颜色
QVector3D lightColor(1.0f, 1.0f, 1.0f);
// 珊瑚红色
QVector3D toyColor(1.0f, 0.5f, 0.31f);
QVector3D result = lightColor * toyColor; // 分量相乘,不是点乘也不是叉乘

代码展示:

light.frag

#version 330 core
out vec4 FragColor;
uniform vec3 lightColor;
void main()
{FragColor = vec4(lightColor, 1.0);
}

light.vert

#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aTexCord;uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;void main()
{gl_Position = projection * view * model * vec4(aPos, 1.0);
}
void TurboOpenGLWidget::paintGL()
{QMatrix4x4 model;QMatrix4x4 view;float time = m_time.elapsed() / 50.0;model.rotate(time, 1.0f, 5.0f, 0.0f);glClearColor(0.2f, 0.3f, 0.3f, 1.0f);glEnable(GL_DEPTH_TEST);glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);shader_program_.bind();glBindVertexArray(VAO);QMatrix4x4 projection;projection.perspective(camera_.getZoom(), float(width() / height()), 0.1, 100);shader_program_.setUniformValue("projection", projection);view = camera_.getViewMatrix();switch(shape_){case Rect:shader_program_.setUniformValue("model", model);shader_program_.setUniformValue("view", view);for(const auto &item: cubePositions){model.setToIdentity();model.translate(item);model.rotate(time, 1.0, 5.0, 0.5);shader_program_.setUniformValue("model", model);glDrawArrays(GL_TRIANGLES,0,36);}break;}glBindVertexArray(0);glBindVertexArray(lightVAO);light_shader_program_.bind();light_shader_program_.setUniformValue("projection", projection);light_shader_program_.setUniformValue("model", model);light_shader_program_.setUniformValue("view", view);model.setToIdentity();model.translate(lightPos);model.rotate(1.0, 1.0, 5.0, 0.5);model.scale(0.2);light_shader_program_.setUniformValue("model", model);glDrawArrays(GL_TRIANGLES,0,36);update();
}

效果展示

在这里插入图片描述

冯氏光照模型

冯氏光照模型的主要结构有三个:

  • 环境光(ambient)
    • 即使在黑暗情况下,通常也仍然有一些光亮
  • 漫反射(diffuse)
    • 模拟光源对物体的方向性影响
  • 镜面反射(specular)
    • 模拟有光泽物体表面上出现的亮点

Iphong=ka⋅Iambient+∑i=1numLightsIi⋅(kd(L^i⋅N^)+ks⋅(R^i⋅V^)nshiny)I_{phong} = k_a\cdot I_{ambient} + \sum_{i = 1}^{numLights}I_i\cdot (k_d(\hat L_i\cdot \hat N) + k_s\cdot (\hat R_i \cdot \hat V)^{n^{shiny}}) Iphong=kaIambient+i=1numLightsIi(kd(L^iN^)+ks(R^iV^)nshiny)

其中kakdksk_a k_d k_skakdks是系数

环境光代码:

#version 330 core
out vec4 FragColor;
uniform vec3 objectColor;
uniform vec3 lightColor;
void main()
{float ambientStrength = 0.2;vec3 ambient = ambientStrength * lightColor;vec3 result = ambient * objectColor;FragColor = vec4(result, 1.0);
}

向上面代码,如果我们只有环境光,会是如下效果,并不是完全黑的。

在这里插入图片描述

漫反射代码:

计算漫反射光照需要:

  • 法向量:一个垂直于顶点表面的向量
  • 定向的光线:作为光源的位置与片段的位置之间的向量差的方向向量;为了计算这个光线,我们需要光的位置向量和片段的位置向量

片段着色器:

#version 330 core
out vec4 FragColor;uniform vec3 objectColor;
uniform vec3 lightColor;
uniform vec3 lightPos;in vec3 Normal;
in vec3 fragPos;void main()
{// ambientfloat ambientStrength = 0.1;vec3 ambient = ambientStrength * lightColor;// diffusevec3 norm = normalize(Normal);vec3 lightDir = normalize(lightPos - fragPos);float diff = max(dot(norm, lightDir), 0.0);vec3 diffuse = diff + lightColor;vec3 result = (ambient + diffuse)  * objectColor;FragColor = vec4(result, 1.0);
}

在这里插入图片描述

镜面反射代码:

片段着色器:

#version 330 core
out vec4 FragColor;uniform vec3 objectColor;
uniform vec3 lightColor;
uniform vec3 lightPos;
uniform vec3 viewPos;in vec3 Normal;
in vec3 fragPos;void main()
{// ambientfloat ambientStrength = 0.1;vec3 ambient = ambientStrength * lightColor;// diffusevec3 norm = normalize(Normal);vec3 lightDir = normalize(lightPos - fragPos);float diff = max(dot(norm, lightDir), 0.0);vec3 diffuse = diff * lightColor;// specularfloat specularStrength = 0.5;vec3 viewDir = normalize(viewPos - fragPos);vec3 reflectDir = reflect(-lightDir, norm);float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);vec3 specular = specularStrength * spec * lightColor;vec3 result = (ambient + diffuse + specular)  * objectColor;FragColor = vec4(result, 1.0);
}

在这里插入图片描述

法向量

  • 如果模型矩阵执行了不等比例的缩放,顶点的改变导致法向量不再垂直与表面。

  • 修复这个行为的诀窍是使用一个为法向量专门定制的模型矩阵。这个矩阵称之为法线矩阵

Normal = mat3(transpose(inverse(model))) * aNormal;
http://www.yayakq.cn/news/438326/

相关文章:

  • 沈阳 网站建设网站怎样做优化
  • 站长统计网站大全市场营销咨询
  • 个人备案的网站可以卖东西么成都seo公司排名
  • app开发网站建设公司哪家好网站实名制认证备案
  • 代理网站是什么上传视频网站源码
  • WordPress怎么更改主题名称seo交流博客
  • 淘客手机网站建设不用代码做网站
  • 1个ip可以做几个网站吗开县做网站
  • 做网站编辑应该注意什么微博问答网站开发
  • 汕头建设网站网络公司的经营范围有哪些
  • 欧美做瞹瞹嗳免费视频网站网站建设公司公司我我提供一个平台
  • 青岛学校论坛网站建设wordpress与微信连接
  • 中国网库做网站游戏开发和网站开发哪个好玩
  • 网络司网站猪八戒网网站开发需求
  • 全球建筑设计网站用dw制作视频网站
  • 怎么做网站后台界面聚美优品网站建设目的
  • 在车子男女做的视频网站微信公众平台推广
  • 东丽区装饰网站建设电子商务网页设计与网站建设论文
  • 昆明网站建设精英电商怎么做
  • 网站建设域名空间网站制作软件dw
  • 同ip网站有什么影响西安黄页网
  • 网站怎么建设商城微信小程序网站建设方案
  • 网页设计公司哪家效果好无锡网站建设seo
  • 百度网站的总结找it工作有什么好的招聘网站
  • 网站建设的通知唯美古风ppt模板
  • 网站设计流程电话网站设计要素 优帮云
  • 学校信息门户网站建设毕设做网站什么主题比较好
  • 龙南建设局网站深圳十大工业设计公司
  • vue 做自适应网站建设企业网站的人员组成
  • 湖北网站建设服务郑州做网站的公司哪家好