提交 0e2957d4 编写于 作者: A acgessler

Merge branch 'dev' of github.com:mrdoob/three.js into dev

...@@ -9041,6 +9041,17 @@ THREE.BufferGeometry.prototype = { ...@@ -9041,6 +9041,17 @@ THREE.BufferGeometry.prototype = {
constructor: THREE.BufferGeometry, constructor: THREE.BufferGeometry,
addAttribute: function( name, type, numItems, itemSize ) {
this.attributes[ name ] = {
itemSize: itemSize,
array: new type( numItems * itemSize )
};
},
applyMatrix: function ( matrix ) { applyMatrix: function ( matrix ) {
var positionArray; var positionArray;
......
此差异已折叠。
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
var camera, scene, renderer; var camera, scene, renderer;
var sphere, plane; var light;
init(); init();
animate(); animate();
...@@ -35,10 +35,12 @@ ...@@ -35,10 +35,12 @@
container = document.createElement( 'div' ); container = document.createElement( 'div' );
document.body.appendChild( container ); document.body.appendChild( container );
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 10000 ); camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 10000 );
camera.position.set( 0, 1000, 1000 ); camera.position.set( 0, 1000, 1000 );
camera.lookAt( scene.position );
scene = new THREE.Scene();
// Grid // Grid
...@@ -69,7 +71,7 @@ ...@@ -69,7 +71,7 @@
for ( var i = 0; i < 20; i ++ ) { for ( var i = 0; i < 20; i ++ ) {
sphere = new THREE.Mesh( geometry, material ); var sphere = new THREE.Mesh( geometry, material );
sphere.position.x = ( i % 5 ) * 200 - 400; sphere.position.x = ( i % 5 ) * 200 - 400;
sphere.position.z = Math.floor( i / 5 ) * 200 - 400; sphere.position.z = Math.floor( i / 5 ) * 200 - 400;
...@@ -87,12 +89,11 @@ ...@@ -87,12 +89,11 @@
directionalLight.position.set( 0, 1, 0 ); directionalLight.position.set( 0, 1, 0 );
scene.add( directionalLight ); scene.add( directionalLight );
var pointLight = new THREE.PointLight( 0xff0000, 1, 500 ); light = new THREE.PointLight( 0xff0000, 1, 500 );
scene.add( pointLight ); scene.add( light );
renderer = new THREE.CanvasRenderer(); renderer = new THREE.CanvasRenderer();
renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement ); container.appendChild( renderer.domElement );
stats = new Stats(); stats = new Stats();
...@@ -128,7 +129,11 @@ ...@@ -128,7 +129,11 @@
function render() { function render() {
camera.lookAt( scene.position ); var timer = Date.now() * 0.001;
light.position.x = Math.cos( timer ) * 1000;
light.position.y = 500;
light.position.z = Math.sin( timer ) * 1000;
renderer.render( scene, camera ); renderer.render( scene, camera );
......
...@@ -81,24 +81,11 @@ ...@@ -81,24 +81,11 @@
var triangles = 160000; var triangles = 160000;
var geometry = new THREE.BufferGeometry(); var geometry = new THREE.BufferGeometry();
geometry.attributes = {
index: { geometry.addAttribute( 'index', Uint16Array, triangles * 3, 1 );
itemSize: 1, geometry.addAttribute( 'position', Float32Array, triangles * 3, 3 );
array: new Uint16Array( triangles * 3 ) geometry.addAttribute( 'normal', Float32Array, triangles * 3, 3 );
}, geometry.addAttribute( 'color', Float32Array, triangles * 3, 3 );
position: {
itemSize: 3,
array: new Float32Array( triangles * 3 * 3 )
},
normal: {
itemSize: 3,
array: new Float32Array( triangles * 3 * 3 )
},
color: {
itemSize: 3,
array: new Float32Array( triangles * 3 * 3 )
}
}
// break geometry into // break geometry into
// chunks of 21,845 triangles (3 unique vertices per triangle) // chunks of 21,845 triangles (3 unique vertices per triangle)
......
...@@ -137,24 +137,11 @@ ...@@ -137,24 +137,11 @@
geometry = new THREE.BufferGeometry(); geometry = new THREE.BufferGeometry();
// geometry.dynamic = true; // geometry.dynamic = true;
geometry.attributes = {
position: {
itemSize: 3,
array: new Float32Array( particles * 3 )
},
customColor: {
itemSize: 3,
array: new Float32Array( particles * 3 )
},
size: {
itemSize: 1,
array: new Float32Array( particles ),
dynamic: true
},
}
geometry.addAttribute( 'position', Float32Array, particles, 3 );
geometry.addAttribute( 'customColor', Float32Array, particles, 3 );
geometry.addAttribute( 'size', Float32Array, particles, 1 );
geometry.attributes.size.dynamic = true;
values_size = geometry.attributes.size.array; values_size = geometry.attributes.size.array;
var positions = geometry.attributes.position.array; var positions = geometry.attributes.position.array;
......
...@@ -69,16 +69,8 @@ ...@@ -69,16 +69,8 @@
var geometry = new THREE.BufferGeometry(); var geometry = new THREE.BufferGeometry();
var material = new THREE.LineBasicMaterial({ vertexColors: true }); var material = new THREE.LineBasicMaterial({ vertexColors: true });
geometry.attributes = { geometry.addAttribute( 'position', Float32Array, segments, 3 );
position: { geometry.addAttribute( 'color', Float32Array, segments, 3 );
itemSize: 3,
array: new Float32Array(segments * 3)
},
color: {
itemSize: 3,
array: new Float32Array(segments * 3)
}
};
var positions = geometry.attributes.position.array; var positions = geometry.attributes.position.array;
var colors = geometry.attributes.color.array; var colors = geometry.attributes.color.array;
......
...@@ -68,19 +68,9 @@ ...@@ -68,19 +68,9 @@
var particles = 500000; var particles = 500000;
var geometry = new THREE.BufferGeometry(); var geometry = new THREE.BufferGeometry();
geometry.attributes = {
position: {
itemSize: 3,
array: new Float32Array( particles * 3 )
},
color: {
itemSize: 3,
array: new Float32Array( particles * 3 )
}
}
geometry.addAttribute( 'position', Float32Array, particles, 3 );
geometry.addAttribute( 'color', Float32Array, particles, 3 );
var positions = geometry.attributes.position.array; var positions = geometry.attributes.position.array;
var colors = geometry.attributes.color.array; var colors = geometry.attributes.color.array;
......
...@@ -38,6 +38,17 @@ THREE.BufferGeometry.prototype = { ...@@ -38,6 +38,17 @@ THREE.BufferGeometry.prototype = {
constructor: THREE.BufferGeometry, constructor: THREE.BufferGeometry,
addAttribute: function( name, type, numItems, itemSize ) {
this.attributes[ name ] = {
itemSize: itemSize,
array: new type( numItems * itemSize )
};
},
applyMatrix: function ( matrix ) { applyMatrix: function ( matrix ) {
var positionArray; var positionArray;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册