2.点线面

在Threejs中定义一个点

在三维空间中的某一个点能够用一个坐标点来表示。一个坐标点由x,y,z三个份量构成。在three.js中,点能够在右手坐标系中表示:git

空间几何中,点能够用一个向量来表示,在Three.js中也是用一个向量来表示的,代码以下所示:github

THREE.Vector3 = function ( x, y, z ) {

this.x = x || 0;
this.y = y || 0;
this.z = z || 0;

};

咱们来分析这段代码:前面咱们已经知道了THREE是Three.js引擎的一个全局变量。只要你想用它,就能够在任何地方用它。有点充气娃娃的意思,不须要你赞成,你想用就用吧。浏览器

那么THREE.Vector3呢,就是表示Vector3是定义在THREE下面的一个类。之后要用Vector3,就必需要加THREE前缀。固然Three.js的设计者,也能够不加THREE这个前缀,可是他们预见到,Three.js引擎中会有不少类型,最好给这些类型加一个前缀,以避免与开发者的代码产生冲突。函数

THREE.Vector3被赋值为一个函数。这个函数有3个参数,分别表明x坐标,y坐标和z坐标的份量。函数体内的代码将他们分别赋值给成员变量x,y,z。看看上面的代码,中间使用了一个“||”(或)运算符,就是当x=null或者undefine时,this.x的值应该取0。
三、点的操做学习

在3D世界中点能够用THREE.Vector3D来表示。对应源码为/src/math/Vector3.js(注意:源码所在的位置,可能不一样版本不同,请本身搜索Vector3关键词来肯定)。在您继续学习以前,你能够打开该文件浏览一下,推荐使用WebStorm,若是没有,你也能够用NotePad++。this

如今来看看怎么定义个点,假设有一个点x=4,y=8,z=9。你能够这样定义它:设计

var point1 = new THREE.Vecotr3(4,8,9);code

另外你也可使用set方法,代码以下:orm

var point1 = new THREE.Vector3();对象

point1.set(4,8,9);

咱们这里使用了set方法,为了之后深刻学习的方便,这里将Vector3的经常使用方法列出以下,为了避免影响文章的连贯性,咱们专门列出了一个网页来介绍它。

一、首先,咱们声明了一个几何体geometry,以下:

var geometry = new THREE.Geometry();

几何体里面有一个vertices变量,能够用来存放点。

二、定义一种线条的材质,使用THREE.LineBasicMaterial类型来定义,它接受一个集合做为参数,其原型以下:

LineBasicMaterial( parameters )

Parameters是一个定义材质外观的对象,它包含多个属性来定义材质,这些属性是:

Color:线条的颜色,用16进制来表示,默认的颜色是白色。

Linewidth:线条的宽度,默认时候1个单位宽度。

Linecap:线条两端的外观,默认是圆角端点,当线条较粗的时候才看得出效果,若是线条很细,那么你几乎看不出效果了。

Linejoin:两个线条的链接点处的外观,默认是“round”,表示圆角。

VertexColors:定义线条材质是否使用顶点颜色,这是一个boolean值。意思是,线条各部分的颜色会根据顶点的颜色来进行插值。(若是关于插值不是很明白,能够QQ问我,QQ在前言中你必定可以找到,嘿嘿,虽然没有明确写出)。

Fog:定义材质的颜色是否受全局雾效的影响。

好了,介绍完这些参数,你能够试一试了,在课后,咱们会展现不一样同窗的杰出做品。下面,接着上面的讲,咱们这里使用了顶点颜色vertexColors: THREE.VertexColors,就是线条的颜色会根据顶点来计算。

var material = new THREE.LineBasicMaterial( { vertexColors: THREE.VertexColors } );

三、接下来,定义两种颜色,分别表示线条两个端点的颜色,以下所示:

var color1 = new THREE.Color( 0x444444 ),

color2 = new THREE.Color( 0xFF0000 );

四、定义2个顶点的位置,并放到geometry中,代码以下:

var p1 = new THREE.Vector3( -100, 0, 100 );

var p2 = new THREE.Vector3( 100, 0, -100 );

geometry.vertices.push(p1);

geometry.vertices.push(p2);

五、为4中定义的2个顶点,设置不一样的颜色,代码以下所示:

geometry.colors.push( color1, color2 );

geometry中colors表示顶点的颜色,必须材质中vertexColors等于THREE.VertexColors 时,颜色才有效,若是vertexColors等于THREE.NoColors时,颜色就没有效果了。那么就会去取材质中color的值,这个很重要,你们必定记住。

六、定义一条线

定义线条,使用THREE.Line类,代码以下所示:

var line = new THREE.Line( geometry, material, THREE.LinePieces );

第一个参数是几何体geometry,里面包含了2个顶点和顶点的颜色。第二个参数是线条的材质,或者是线条的属性,表示线条以哪一种方式取色。第三个参数是一组点的链接方式,咱们会在后面详细讲解。

而后,将这条线加入到场景中,代码以下:

scene.add(line);

这样,场景中就会出现刚才的那条线段了。

学习的资料和源码我都共享到个人gitHub仓库中去了,你们有兴趣的能够去下载,欢迎foke,clone,加星星,也算是对个人一个鼓励吧

three学习资料的github地址
或者复制连接地址到浏览器
https://github.com/kingder-c/LearnThree.js

相关文章
相关标签/搜索