var op;
var opView;
function create(div) {
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(45,1, 0.1, 500);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(300, 300);
renderer.setClearColor(Color(255,239 ,213).ox, 1.0);
div.appendChild(renderer.domElement);
var View = {};
View.scene = scene;
View.camera = camera;
View. renderer = renderer;
this.opView = View;
return View;
}
function Color(r,g,b) {
var color = {};
color.r = r;
color.g = g;
color.b = b;
color.ox = (color.r << 16) | (color.g << 8) | color.b;
return color;
}
function Vector3(x,y,z) {
var vector3 = {};
vector3.x = x;
vector3.y = y;
vector3.z = z;
return vector3;
}
function frame() {
if (op!= null){
op();
}
opView.renderer.render(opView.scene,opView.camera);
requestAnimationFrame(frame);
}
2.3 ThreeDemoForDrawLine.js代码:
var vector3List = new Array();
var lineList = new Array();
function addPoint(point) {
vector3List.push(point);
return vector3List;
}
var preLine;
function DrawLine(pointList,Color) {
var geometry = new THREE.Geometry();
var material = new THREE.LineBasicMaterial( { vertexColors: true } );
var line = null;
var color = new THREE.Color(Color.ox );
//geometry.colors.push(color,color);
var index =0;
lineList.length = 0;
for(var i =0;i<pointList.length -1;i++){
geometry = new THREE.Geometry();
var point = new THREE.Vector3( pointList[i].x, pointList[i].y, pointList[i].z );
geometry.vertices.push(point);
geometry.colors.push(color);
point = new THREE.Vector3(pointList[i+1].x, pointList[i+1].y, pointList[i+1].z);
geometry.vertices.push(point);
geometry.colors.push(color);
line = new THREE.LineSegments( geometry, material);
preLine = line;
lineList.push(line);
}
return lineList;
}
function demo(div) {
var View = create(div);
var th = 0;
var r = 0;
View.camera.position.z = 100;
var index = 0;
var up = false;
for(var i =0;i<250;i++){
th += 1;
r += 0.1;
var x = r*Math.cos(th);
var y = r*Math.sin(th);
addPoint(Vector3(x,y,0));
DrawLine(vector3List,Color(120,120,120));
}
op = function(){
View.renderer.render(opView.scene,opView.camera);
if (up == false){
index++;
View.scene.add(lineList[index]);
if(index>=240){
up = true;
}
}else {
View.scene.remove(lineList[index]);
index--;
if(index<=0){
up = false;
}
}
}
frame();
console.info("render over");
}