image3D是一个基于WebGL开发的web端3D绘图库,包括常用的三维接口和辅助方法,帮助你快速绘制自己的三维图形。
如何使用?
首先,我们不得不说明一下绘图的基本流程: 编辑着色器 → 创建3D对象 → 准备好数据 → 绘制
我们接下来准备绘制一个点,点的颜色、大小和位置不停改变。
绘图的时候,本质上我们都是需要通过着色器来和GPU进行数据交互,因此,需要传递的数据都需要在这里提前定义好,看看本例子的着色器:
<!-- 顶点着色器 --> <script type='x-shader/x-vertex' id='vs'> attribute vec4 a_position; attribute float a_size; attribute vec4 a_color; varying vec4 v_color; void main(){ gl_Position=a_position; gl_PointSize=a_size; v_color=a_color; } <script> <!-- 片段着色器 --> <script type='x-shader/x-fragment' id='fs'> precision mediump float; varying vec4 v_color; void main(){ gl_FragColor=v_color; } <script>
着色器分二类:顶点着色器和片段着色器,前者用于传递点的位置和大小,后者用于传递点的颜色。
本质上来讲,着色器其实就是二个字符串,用script标签包裹是为了在html文本中方便编辑,在后面的过程就可以看出来了。
着色器的代码有点像C语言,我们目前需要了解这三点:
着色器准备好了以后,我们就可以使用这二个着色器创建3D对象了,同样的,看看本例中的代码:
var image3d = new image3D(document.getElementsByTagName('canvas')[0], { // 传递着色器 "vertex-shader": document.getElementById("vs").innerText, "fragment-shader": document.getElementById("fs").innerText });
从这里是不是可以看出来,着色器只不过是二段字符串。
实际的例子是不停的改变,我们为了方便说明,这里假设某个瞬间的操作:
image3d // 设置点的位置 .setAttributeFloat("a_position", 0.5, 0.5, 0.0) // 设置点的大小 .setAttributeFloat("a_size", 50.0) // 设置点的颜色 .setAttributeFloat("a_color", 1.0, 0.0, 0.0);
比如点的位置,“a_position”是和着色器中attribute修饰的变量对应的。大部分根据感觉应该就可以看出来,下面稍微提二点:
一切准备完毕,获取画笔绘制即可:
image3d.Painter().drawPoint(0, 1);
这里缩减版的例子最终会绘制一个大小是50px,位于第一象限中心的红色正方形。完整的例子请 点击此处 查看运行效果。
当然,上面的例子可能过于简单,你也可以试试 旋转的二十四边形 这个稍微复杂点的例子,下面是某个瞬间的截图(本身是运动的,不停旋转):
/*! * Image3D * Copyright (c) 2010 cloudgamer * Blog: http://cloudgamer.cnblogs.com/ * Date: 2010-9-18 */ //容器对象 var Image3D = function(container, options){ this._initialize( container, options
我有一个三维阵列。列的标题是“身高”、“体重”和“年龄”。如何使用或任何其他可用功能绘制三维直方图? 我从这段代码开始,但后来我陷入了如何绘制三维直方图的困境。谢谢你宝贵的时间
本文向大家介绍python matplotlib绘制三维图的示例,包括了python matplotlib绘制三维图的示例的使用技巧和注意事项,需要的朋友参考一下 作者:catmelo 本文版权归作者所有 链接:https://www.cnblogs.com/catmelo/p/4162101.html 本文参考官方文档:http://matplotlib.org/mpl_toolkits/mpl
本文向大家介绍matplotlib 三维图表绘制方法简介,包括了matplotlib 三维图表绘制方法简介的使用技巧和注意事项,需要的朋友参考一下 1. python三维图表绘制方法简介 python三维图表的绘制算是二维图表的一个进阶版本,本质上和二维图表的绘制并无差别,唯一的区别在于使用的库略有差异。 相较于二维图表使用的pyplot库,三维图表的绘制使用的是Axes3D库。 库引入语句为:
通过WebGL可以渲染出来各种各样酷炫的3D效果,但是考虑到WebGL复杂性,为了大家降低初学难度,下面的代码仅仅在Canvas画布上绘制了一个点,对WebGL的整个绘图渲染流程进行了完整的演示,麻雀虽小,五脏俱全。 学习建议 本节课你不需要刻意去记忆具体知识,对于暂时不理解的小细节可以跳过,先有个整体印象即可,可以把全部代码复制到编辑器中,根据课程对相关知识模块的介绍,尝试更改几个参数,体验一下
本文向大家介绍Python绘图之二维图与三维图详解,包括了Python绘图之二维图与三维图详解的使用技巧和注意事项,需要的朋友参考一下 各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"持久男" 1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. 2.操纵坐标轴和增加网格及标签的函数 3.plt.xlim 和 plt.ylim 设置每个坐标轴的
本文向大家介绍Python三维绘图之Matplotlib库的使用方法,包括了Python三维绘图之Matplotlib库的使用方法的使用技巧和注意事项,需要的朋友参考一下 前言 在遇到三维数据时,三维图像能给我们对数据带来更加深入地理解。python的matplotlib库就包含了丰富的三维绘图工具。 1.创建三维坐标轴对象Axes3D 创建Axes3D主要有两种方式,一种是利用关键字projec
上一节课绘制的一个案例是线框立方体,不知大家是否注意到,立方体有8个顶点,但是数组列举顶点的时候,因为绘制直线的时候一个点是三条直线公用, 如果绘制函数gl.drawArrays()绘制模式mode使用gl.LINES模式,每绘制一条直线就需要定义两个顶点。在这种情况下一个点可能在顶点数组中多次列举出来,造成数据重复, 这时候要解决数据的复用,大家应该会想到数据库、索引等概念,也就是说把立方体的8
本节课通过绘制一个矩形边框效果,对WebGL整个渲染流程有一个简单认知。 学习建议 学习本节课,建议先结合注释看看案例源码,对于不熟悉的WebGL API可以在MDN搜索文档,不过刚开始学习,没必要去掌握每一个WebGL API,把主要精力放在理解WebGL的整个渲染流程上面,如果你能建立渲染管线的概念,自然对WebGL系统会有一个基本的认知。 源码体验测试 //类型数组构造函数Float32Ar