zoukankan      html  css  js  c++  java
  • WebGL编程指南高级技术篇(常见需求的处理)

    一、鼠标控制模型旋转

    实质的根据鼠标移动前后的位置比较得出x,y轴的旋转角度;

    图中是一个屏幕,有一个模型(恩,他是一个模型),鼠标由P点移动到P1点,我们假定移动单位步长旋转β角度;

    P(x1,y1)--->P1(x2,y2),x轴移动(x2-x1),y轴移动(y2-y1),所以x轴旋转 (x2-x1)β度,y轴旋转(y2-y1)β度:

    二、判断物体被点击

    当鼠标点击的时候,将物体颜色全置为红色,然后取鼠标点击坐标点的颜色,然后将物体颜色还原,再将之前获取的坐标点颜色做判断:

    如果颜色为红色,那么就说明,点击到了物体。

    点完之后,要将顶点着色器内判断是否点击的变量重置为false,从而使得重绘为正常颜色。

     三、判断面被点击

    前面我们知道,绘制面的时候,是通过告知这个面包含那几个顶点来进行绘制的:

    二在这里,为了实现判断面的点击,我们加入了面的序号这个概念,

    这样一来,每个顶点除了坐标、颜色,发向量之外,多了一个面序号的属性。当我们点击的时候:

    直接就获取了点击位置的面编号,兵器将其传递给顶点着色器,进行判断并绘制:

    四、HUD平视显示器/网页上方显示3D物体

    就是在三维canvas(z-index = 1)上覆盖一个canvas(z-index = 2),用来显示2D信息(实时显示一些提示性消息),前置canvas的背景色为透明。

    鼠标点击事件注册到2D的canvas上,因为两个canvas是重叠的,所以点击2D上的点,就相当于点击了WebGL上的点了。

    后续该怎么绘制怎么绘制:

    对于网页上方显示3D,道理相同,将3D的canvas,绝对定位在html上,或者指定节点位置,背景色透明。

    五、雾化效果

     

     

    六、绘制圆点

    主要是在片元着色器中使用gl_PointCoord变量

    七、α混合实现透明

  • 相关阅读:
    稳定性「三十六计」- 无状态化
    设置默认的超时和重试是一个基础设施的基本素养
    「前任的50种死法」开发踩坑案例--慢就是错
    稳定性「三十六计」- 配额管控
    编写代码的「八荣八耻」- 以开关上线为荣,以自信编码为耻
    Kubernetes的DaemonSet(下篇)
    使用Elasticsearch的动态索引和索引优化
    Kubernetes的DaemonSet(上篇)
    程序媛的人生观
    Kubernetes的污点和容忍(下篇)
  • 原文地址:https://www.cnblogs.com/eco-just/p/10705735.html
Copyright © 2011-2022 走看看