微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Three.js学习之几何形状

1.立方体

  虽然这一形状的名字叫立方体(CubeGeometry),但它其实是长方体,也就是长宽高可以设置为不同的值。其构造函数是:

THREE.CubeGeometry(width,height,depth,widthSegments,heightSegments,depthSegments)

  

width:

x方向上的长度

  

height:

y方向上的长度

  

depth:

z方向上的长度

  

widthSegments:

x方向上的分段数(可选,缺省值1)

  

heightSegments:

y方向上的分段数(同上)

  

depthSegments:

z方向上的分段数(同上)

  

未分段:

rush:js;"> var material = new THREE.MeshBasicMaterial({

  color: 0xffff00,  wireframe: true

});

drawCube(scene,material);

function drawCube(scene,material) {

  var cube = new THREE.Mesh(new THREE.CubeGeometry(1,2,3),material);

  scene.add(cube);

}

  物体的认位置是原点,对于立方体而言,是其几何中心在原点的位置。

  

分段:

rush:js;"> var cube = new THREE.Mesh(new THREE.CubeGeometry(1,3,material);

  为什么会有这么多邪线呢?版本问题。R73版本:

  注意这个

分段是对六个面进行分段

,而不是对立方体的体素分段,因此在立方体的中间是不分段的,只有六个侧面被分段。

2.平面

  这里的平面(PlaneGeometry)其实是一个长方形,而不是数学意义上无限大小的平面。其构造函数为:

THREE.PlaneGeometry(width,heightSegments)

  

width:

x方向上的长度

  

height:

y方向上的长度

  

widthSegments:

x方向上的分段数(可选,缺省值1)

  

heightSegments:

y方向上的分段数(同上)

  

new THREE.PlaneGeometry(2,4);

创建的平面在x轴和y轴所在平面内,效果如下:

3.球体

  球体(SphereGeometry)的构造函数是:

rush:js;"> THREE.SphereGeometry(radius,segmentsWidth,segmentsHeight,phiStart,phiLength,thetaStart,thetaLength)

// radius:半径

// segmentsWidth:经度上的分段数

// segmentsHeight:纬度上的分段数

// phiStart:经度开始的弧度

// phiLength:经度跨过的弧度

// thetaStart:纬度开始的弧度

// thetaLength:纬度跨过的弧度

  

3.1 经纬度分段数

  首先,我们来理解下segmentsWidth和segmentsHeight。使用var sphere = new THREE.SphereGeometry(3,8,6)可以创建一个半径为3,经度划分成8份,纬度划分成6份的球体,如下图所示。

  segmentsWidth相当于经度被切成了几瓣,而segmentsHeight相当于纬度被切成了几层。

  new THREE.SphereGeometry(3,5,4)的效果

  new THREE.SphereGeometry(3,6)的效果

  new THREE.SphereGeometry(3,18,12)的效果

  在图形底层的实现中,并没有曲线的概念,曲线都是由多个折线近似构成的。对于球体而言,当这两个值较大的时候,形成的多面体就可以近似看做是球体了。

  

3.2 经度弧度

  new THREE.SphereGeometry(3,6,Math.PI / 6,Math.PI / 3)表示起始经度为Math.PI / 6,经度跨度为Math.PI / 3。

效果如下:

  注意,这里segmentsWidth为8意味着对于经度从Math.PI / 6跨过Math.PI / 3的区域内划分为8块,而不是整个球体的经度划分成8块后再判断在此经度范围内的部分。

  

3.3 纬度弧度

  纬度弧度同理。new THREE.SphereGeometry(3,Math.PI * 2,Math.PI / 3)表示纬度从Math.PI / 6跨过Math.PI / 3。

效果如下:

  new THREE.SphereGeometry(3,Math.PI / 2,Math.PI,Math.PI / 2)效果

4.源码

rush:xhtml;"> <Meta charset="UTF-8"> 3.js测试四

以上就是Three.js学习之几何形状的全部内容,小编陆续还会更新关于Three.js的文章,请大家继续关注编程之家。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐