1、在Threejs中定义一个点
三维空间中的某一个点可以用一个坐标点来表示。一个坐标点由x,y,z三个分量构成。在three.js中,点可以在右手坐标系中表示:
空间几何中,点可以用一个向量来表示,在Three.js中也是用一个向量来表示的,代码如下所示:
THREE.Vector3 = function ( x, y, z ) {
this.x = x || 0;
this.y = y || 0;
this.z = z || 0;
};
2、操作点(设置点的坐标)
var point1 = new THREE.Vecotr3(4,8,9);
var point1 = new THREE.Vector3();
point1.set(4,8,9);
3、画条线(LineBasicMaterial)
老路子,先定义场景、相机、渲染器,再定义实体,最后将实体添加到场景中
<body onload="threeStart();">
<div id="canvas-frame"></div>
</body>
// 初始化场景
var scene;
function initScene() {
scene = new THREE.Scene();
}
// 初始化相机
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 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 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);
}
renderer.clear();
renderer.render(scene, camera);
LineBasicMaterial( parameters ) parameters = {} | |
---|---|
Parameters是一个定义材质外观的对象,它包含多个属性来定义材质,这些属性是: | |
Color | 线条的颜色,用16进制来表示,默认的颜色是白色。 |
Linewidth | 线条的宽度,默认时候1个单位宽度。 |
Linecap | 线条两端的外观,默认是圆角端点,当线条较粗的时候才看得出效果,如果线条很细,那么你几乎看不出效果了。 |
Linejoin | 两个线条的连接点处的外观,默认是“round”,表示圆角。 |
VertexColors | 定义线条材质是否使用顶点颜色,这是一个boolean值。意思是,线条各部分的颜色会根据顶点的颜色来进行插值。 |
Fog | 定义材质的颜色是否受全局雾效的影响。 |
4、绘制一个网格
var cube;
function initObject() {
var geometry = new THREE.Geometry();
geometry.vertices.push( new THREE.Vector3( - 500, 0, 0 ) );
geometry.vertices.push( new THREE.Vector3( 500, 0, 0 ) );
for ( var i = 0; i <= 20; i ++ ) {
var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: '#FFFFFF', opacity: 0.2 } ) );
line.position.z = ( i * 50 ) - 500;
scene.add( line );
var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: '#FFFFFF', opacity: 0.2 } ) );
line.position.x = ( i * 50 ) - 500;
line.rotation.y = 90 * Math.PI / 180;
scene.add( line );
}
}