diff --git a/src/extras/io/JSONLoader.js b/src/extras/io/JSONLoader.js index b36f5af2..6adcc864 100644 --- a/src/extras/io/JSONLoader.js +++ b/src/extras/io/JSONLoader.js @@ -367,7 +367,7 @@ THREE.JSONLoader.prototype.createModel = function ( json, callback, texture_path for ( c = 0, cl = srcColors.length; c < cl; c += 3 ) { color = new THREE.Color( 0xffaa00 ); - color.setRGB( srcColors[ v ], srcColors[ v + 1 ], srcColors[ v + 2 ] ); + color.setRGB( srcColors[ c ], srcColors[ c + 1 ], srcColors[ c + 2 ] ); dstColors.push( color ); } diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 20e45655..cdf40264 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -665,6 +665,7 @@ THREE.WebGLRenderer = function ( parameters ) { attribute.needsUpdate = true; attribute.array = new Float32Array( nvertices * size ); attribute.buffer = _gl.createBuffer(); + attribute.buffer.belongsToAttribute = a; } @@ -2484,7 +2485,7 @@ THREE.WebGLRenderer = function ( parameters ) { // custom attributes - if ( geometryGroup.__webglCustomAttributes ) { +/* if ( geometryGroup.__webglCustomAttributes ) { for( a in geometryGroup.__webglCustomAttributes ) { @@ -2499,9 +2500,28 @@ THREE.WebGLRenderer = function ( parameters ) { } + }*/ + + + if ( material.attributes ) { + + for( a in material.attributes ) { + + if( attributes[ a ] >= 0 ) { + + attribute = material.attributes[ a ]; + + _gl.bindBuffer( _gl.ARRAY_BUFFER, attribute.buffer ); + _gl.vertexAttribPointer( attributes[ a ], attribute.size, _gl.FLOAT, false, 0, 0 ); + + } + + } + } + // colors if ( attributes.color >= 0 ) {