点:可以用THREE.Vector3D来表示

现在来看看怎么定义个点,假设有一个点x=4,y=8,z=9。你可以这样定义它:

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

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

var point1 = new THREE.Vector3();

point1.set(4,8,9);
1、首先,我们声明了一个几何体geometry,如下:
var geometry = new THREE.Geometry();

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

2、定义一种线条的材质,使用THREE.LineBasicMaterial类型来定义,它接受一个集合作为参数,其原型如下:
LineBasicMaterial( parameters )

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

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

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

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

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

VertexColors:定义线条材质是否使用顶点颜色,这是一个boolean值。意思是,线条各部分的颜色会根据顶点的颜色来进行插值。

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

我们这里使用了顶点颜色vertexColors: THREE.VertexColors,就是线条的颜色会根据顶点来计算。

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

3、接下来,定义两种颜色,分别表示线条两个端点的颜色,如下所示:
var color1 = new THREE.Color( 0x444444 ),

color2 = new THREE.Color( 0xFF0000 );

4、定义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);

5、为4中定义的2个顶点,设置不同的颜色,代码如下所示:
geometry.colors.push( color1, color2 );

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

6、定义一条线
定义线条,使用THREE.Line类,代码如下所示:

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

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

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

scene.add(line);
个人代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Three框架</title>
<script src="js/Three.js"></script>
<style type="text/css">
div#canvas-frame {
border: none;
cursor: pointer;
width: 100%;
height: 600px;
background-color: #EEEEEE;
}

</style>
<script>
var renderer;
function initThree() {
width = document.getElementById('canvas-frame').clientWidth;
height = document.getElementById('canvas-frame').clientHeight;
renderer = new THREE.WebGLRenderer({
antialias : true
});
renderer.setSize(width, height);
document.getElementById('canvas-frame').appendChild(renderer.domElement);
renderer.setClearColor(0xFFFFFF, 1.0);
}

var camera;
function initCamera() {
camera = new THREE.PerspectiveCamera(45, width / height, 1, 10000);
camera.position.x = 0;
camera.position.y = 1000;
camera.position.z = 0;
camera.up.x = 0;
camera.up.y = 0;
camera.up.z = 1;
camera.lookAt({
x : 0,
y : 0,
z : 0
});
}

var scene;
function initScene() {
scene = new THREE.Scene();
}

var light;
function initLight() {
light = new THREE.DirectionalLight(0xFF0000, 1.0, 0);
light.position.set(100, 100, 200);
scene.add(light);
}

var cube;
function initObject() {

var geometry = new THREE.Geometry();
var material = new THREE.LineBasicMaterial( { vertexColors: true } );
var color1 = new THREE.Color( 0x444444 ), color2 = new THREE.Color( 0xFF0000 );

// 线的材质可以由2点的颜色决定
var p1 = new THREE.Vector3( -100, 0, 100 );
var p2 = new THREE.Vector3( 100, 0, -100 );
geometry.vertices.push(p1);
geometry.vertices.push(p2);
geometry.colors.push( color1, color2 );

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

function threeStart() {
initThree();
initCamera();
initScene();
initLight();
initObject();
renderer.clear();
renderer.render(scene, camera);
}

</script>
</head>

<body onload="threeStart();">
<div id="canvas-frame"></div>
</body>
</html>

最新文章

  1. safari浏览器在window下 打开控制台
  2. Android -- 自定义控件(ImageButton)
  3. Java泛型中的? super T语法
  4. ( 转 ) Android自绘字体大小paint.settextsize随分辨率大小变化
  5. win7任务栏还原为xp样式
  6. Comparing randomized search and grid search for hyperparameter estimation
  7. 从win7到mac os再到win10,体验总结
  8. arry()数组的理解及api的使用(二)
  9. Linux/Unix
  10. [原创*精华]一键发布ASP.NET Web安装程序,搞WebForm的童鞋看过来...
  11. php秒杀
  12. [Zabbix3.0 ]添加Nginx监控
  13. Linux使用wget、安装Python
  14. Dapper简易教程(翻译自Github上StackExchange/Dapper)
  15. canvas画多边形
  16. Md5混淆因子
  17. 你也可以自己写一个可爱 &amp; 小资风格的Android加载等待自定义View - 转
  18. 在android中使用logback-android日志框架配置 slf4j + logback
  19. mysql操作类
  20. PyCharm首次使用(Hell world!)

热门文章

  1. ostringstream的用法
  2. [转载]PHP 连接 Rabbitmq 实例代码
  3. Windows环境下搭建Nginx和多版本PHP共存
  4. MySQL--修改表字段
  5. 转 微软Sysinternals Suite工具13年12月版下载
  6. GridControl 之 BandedGridView
  7. 序列化效率比拼——谁是最后的赢家avaScriptSerializer方式、DataContract方式、Newtonsoft.Json
  8. 充电 IC 对 0V 电池充电问题
  9. jquery操作select大全详解
  10. 用Qstring给char[]数组赋值(转)