提交 7b97f379 编写于 作者: A Arthur Silber

Merge remote-tracking branch 'remotes/mrdoob/dev' into feature/typefaceNodeError

{
"project": {
"vr": false
},
"camera": {
"metadata": {
"version": 4.3,
"version": 4.4,
"type": "Object",
"generator": "ObjectExporter"
"generator": "Object3D.toJSON"
},
"object": {
"uuid": "8EFB9C06-6312-4975-B04A-C9E4549BE348",
"uuid": "E41E9F54-8B31-4D1F-8D09-AF5E802E9A22",
"type": "PerspectiveCamera",
"name": "Camera",
"matrix": [0.9392361044883728,-2.8092810300250903e-9,-0.3432718515396118,0,-0.14778217673301697,0.902585506439209,-0.404351145029068,0,0.3098321855068207,0.43051064014434814,0.847740888595581,0,142.32125854492188,202.75485229492188,389.40936279296875,1],
"fov": 50,
"aspect": 1.536388140161725,
"near": 0.1,
"far": 100000,
"matrix": [0.9392361044883728,-1.2050817232989175e-8,-0.34327182173728943,0,-0.15080472826957703,0.8983326554298401,-0.41262128949165344,0,0.30837228894233704,0.4393158257007599,0.8437464833259583,0,142.32125854492188,202.75485229492188,389.40936279296875,1]
"far": 100000
}
},
"scene": {
"metadata": {
"version": 4.3,
"version": 4.4,
"type": "Object",
"generator": "ObjectExporter"
"generator": "Object3D.toJSON"
},
"geometries": [
{
......@@ -31,6 +34,16 @@
"widthSegments": 1,
"heightSegments": 1
},
{
"uuid": "EEDF0A9A-D174-44E4-9C2F-A2F5BB8BE7F5",
"type": "CylinderGeometry",
"radiusTop": 5,
"radiusBottom": 5,
"height": 20,
"radialSegments": 32,
"heightSegments": 1,
"openEnded": false
},
{
"uuid": "7149652B-DBD7-4CB7-A600-27A9AC005C95",
"type": "BoxGeometry",
......@@ -53,9 +66,9 @@
"thetaLength": 3.14
},
{
"uuid": "A1D8B049-74DD-4B08-B5BC-8DCEC9AF0222",
"uuid": "EFBF641D-F092-462E-B7FB-0BFAD1591EFC",
"type": "BoxGeometry",
"width": 40,
"width": 20,
"height": 10,
"depth": 10,
"widthSegments": 1,
......@@ -72,13 +85,19 @@
"shininess": 30
},
{
"uuid": "CFBEAD4C-6695-4A99-887B-8161E2947225",
"uuid": "3B9DE64D-E1C8-4C24-9F73-3A9E10E3E655",
"type": "MeshPhongMaterial",
"color": 16777215,
"emissive": 0,
"specular": 1118481,
"shininess": 30
},
{
"uuid": "D98FC4D1-169E-420A-92EA-20E55009A46D",
"type": "MeshBasicMaterial",
"wireframe": true,
"color": 63744
},
{
"uuid": "043B208C-1F83-42C6-802C-E0E35621C27C",
"type": "MeshPhongMaterial",
......@@ -89,11 +108,9 @@
},
{
"uuid": "40EC9BDA-91C0-4671-937A-2BCB6DA7EEBB",
"type": "MeshPhongMaterial",
"color": 13486790,
"emissive": 0,
"specular": 1118481,
"shininess": 30
"type": "MeshBasicMaterial",
"wireframe": true,
"color": 63744
}],
"object": {
"uuid": "31517222-A9A7-4EAF-B5F6-60751C0BABA3",
......@@ -105,51 +122,69 @@
"uuid": "EBBB1E63-6318-4752-AE2E-440A4E0B3EF3",
"type": "Mesh",
"name": "Ground",
"matrix": [1,0,0,0,0,0.0007960614748299122,-0.9999997019767761,0,0,0.9999997019767761,0.0007960614748299122,0,0,0,0,1],
"geometry": "8F05A1F2-3877-478B-8DFC-F572AC61AB3A",
"material": "2F69AF3A-DDF5-4BBA-87B5-80159F90DDBF",
"matrix": [1,0,0,0,0,0.000796250649727881,-0.9999997019767761,0,0,0.9999997019767761,0.000796250649727881,0,0,0,0,1]
"material": "2F69AF3A-DDF5-4BBA-87B5-80159F90DDBF"
},
{
"uuid": "6EE2E764-43E0-48E0-85F2-E0C8823C20DC",
"type": "DirectionalLight",
"name": "DirectionalLight 1",
"matrix": [1,0,0,0,0,1,0,0,0,0,1,0,100,200,150,1],
"color": 16777215,
"intensity": 1,
"matrix": [1,0,0,0,0,1,0,0,0,0,1,0,100,200,150,1]
"intensity": 1
},
{
"uuid": "38219749-1E67-45F2-AB15-E64BA0940CAD",
"type": "Mesh",
"name": "Brick",
"matrix": [1,0,0,0,0,1,0,0,0,0,1,0,0,5,0,1],
"children": [
{
"uuid": "711A5955-8F17-4A8B-991A-7604D27E6FA0",
"type": "Mesh",
"name": "Cylinder",
"matrix": [0.0007962009985931218,0.0007962677045725286,0.9999995231628418,0,-0.9999997615814209,3.462185702574061e-7,0.0007962677045725286,0,2.210134084634774e-7,-0.9999997615814209,0.0007962008821777999,0,0,0,0,1],
"geometry": "EEDF0A9A-D174-44E4-9C2F-A2F5BB8BE7F5",
"material": "3B9DE64D-E1C8-4C24-9F73-3A9E10E3E655"
}],
"geometry": "7149652B-DBD7-4CB7-A600-27A9AC005C95",
"material": "CFBEAD4C-6695-4A99-887B-8161E2947225",
"matrix": [1,0,0,0,0,1,0,0,0,0,1,0,0,5,0,1]
"material": "D98FC4D1-169E-420A-92EA-20E55009A46D"
},
{
"uuid": "18FFA67C-F893-4E7A-8A76-8D996DEBE0C6",
"type": "Mesh",
"name": "Ball",
"matrix": [1,0,0,0,0,1,0,0,0,0,1,0,0,5,35.54999923706055,1],
"geometry": "CABCC711-1331-4D4C-9FF6-409299F10C68",
"material": "043B208C-1F83-42C6-802C-E0E35621C27C",
"matrix": [1,0,0,0,0,1,0,0,0,0,1,0,0,5,35.54999923706055,1]
"material": "043B208C-1F83-42C6-802C-E0E35621C27C"
},
{
"uuid": "6D660D49-39B8-40C3-95F6-E4E007AA8D79",
"type": "Mesh",
"name": "Paddle",
"geometry": "A1D8B049-74DD-4B08-B5BC-8DCEC9AF0222",
"material": "40EC9BDA-91C0-4671-937A-2BCB6DA7EEBB",
"matrix": [1,0,0,0,0,1,0,0,0,0,1,0,0,5,159.54217529296875,1]
"matrix": [2,0,0,0,0,1,0,0,0,0,1,0,0,5,159.5399932861328,1],
"children": [
{
"uuid": "4F5F884C-9E1B-45E6-8F1E-4D538A46D8CB",
"type": "Mesh",
"name": "Cylinder",
"matrix": [0.0007962009985931218,0.0007962677045725286,0.9999995231628418,0,-0.9999997615814209,3.462185702574061e-7,0.0007962677045725286,0,2.210134084634774e-7,-0.9999997615814209,0.0007962008821777999,0,0,0,0,1],
"geometry": "EEDF0A9A-D174-44E4-9C2F-A2F5BB8BE7F5",
"material": "3B9DE64D-E1C8-4C24-9F73-3A9E10E3E655"
}],
"geometry": "EFBF641D-F092-462E-B7FB-0BFAD1591EFC",
"material": "40EC9BDA-91C0-4671-937A-2BCB6DA7EEBB"
},
{
"uuid": "B0BEAF69-8B5D-4D87-ADCA-FDE83A02762D",
"type": "PointLight",
"name": "PointLight 2",
"matrix": [1,0,0,0,0,1,0,0,0,0,1,0,-116.54356384277344,69.48957061767578,-206.8248291015625,1],
"color": 16777215,
"intensity": 1,
"distance": 0,
"decay": 1,
"matrix": [1,0,0,0,0,1,0,0,0,0,1,0,-116.54356384277344,69.48957061767578,-206.8248291015625,1]
"decay": 1
}]
}
},
......@@ -162,7 +197,7 @@
"31517222-A9A7-4EAF-B5F6-60751C0BABA3": [
{
"name": "Game Logic",
"source": "var ball = this.getObjectByName( 'Ball' );\n\nvar direction = new THREE.Vector3();\ndirection.x = Math.random() - 0.5;\ndirection.z = - 0.5;\ndirection.normalize();\n\nvar speed = new THREE.Vector3();\n\n//\n\nvar group = new THREE.Group();\nthis.add( group );\n\nvar paddle = this.getObjectByName( 'Paddle' );\ngroup.add( paddle );\n\nvar brick = this.getObjectByName( 'Brick' );\n\nfor ( var j = 0; j < 8; j ++ ) {\n\n\tvar material = new THREE.MeshPhongMaterial( { color: Math.random() * 0xffffff } );\n\n\tfor ( var i = 0; i < 12; i ++ ) {\n\t\t\n\t\tvar object = brick.clone();\n\t\tobject.material = material;\n\t\tobject.position.x = i * 22 - 120;\n\t\tobject.position.z = j * 14 - 120;\n\t\tgroup.add( object );\n\t\t\n\t}\n\t\n}\n\nbrick.visible = false;\n\n//\n\nvar raycaster = new THREE.Raycaster();\n\nfunction update( event ) {\n\t\n\tif ( ball.position.x < - 150 || ball.position.x > 150 ) direction.x = - direction.x;\n\tif ( ball.position.z < - 200 || ball.position.z > 200 ) direction.z = - direction.z;\n\n\tball.position.x = Math.max( - 150, Math.min( 150, ball.position.x ) );\n\tball.position.z = Math.max( - 200, Math.min( 200, ball.position.z ) );\n\t\n\tball.position.add( speed.copy( direction ).multiplyScalar( event.delta / 4 ) );\n\t\n\traycaster.set( ball.position, direction );\n\t\n\tvar intersections = raycaster.intersectObjects( group.children );\n\t\n\tif ( intersections.length > 0 ) {\n\t\n\t\tvar intersection = intersections[ 0 ];\n\t\t\n\t\tif ( intersection.distance < 5 ) {\n\t\t\t\n\t\t\tif ( intersection.object !== paddle ) {\n\n\t\t\t\tgroup.remove( intersection.object );\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tdirection.reflect( intersection.face.normal );\n\t\t\t\n\t\t}\n\t\t\n\t}\n\n}"
"source": "var ball = this.getObjectByName( 'Ball' );\n\nvar direction = new THREE.Vector3();\ndirection.x = Math.random() - 0.5;\ndirection.z = - 0.5;\ndirection.normalize();\n\nvar speed = new THREE.Vector3();\n\n//\n\nvar group = new THREE.Group();\nthis.add( group );\n\nvar paddle = this.getObjectByName( 'Paddle' );\npaddle.material.visible = false;\ngroup.add( paddle );\n\nvar brick = this.getObjectByName( 'Brick' );\n\nfor ( var j = 0; j < 8; j ++ ) {\n\n\tvar material = new THREE.MeshPhongMaterial( { color: Math.random() * 0xffffff } );\n\n\tfor ( var i = 0; i < 12; i ++ ) {\n\t\t\n\t\tvar object = brick.clone();\n\t\tobject.position.x = i * 22 - 120;\n\t\tobject.position.z = j * 14 - 120;\n\t\tgroup.add( object );\n\n\t\tvar cylinder = object.getObjectByName( 'Cylinder' );\n\t\tcylinder.material = material;\n\n\t}\n\t\n}\n\nbrick.visible = false;\nbrick.material.visible = false;\n\n//\n\nvar raycaster = new THREE.Raycaster();\n\nfunction update( event ) {\n\t\n\tif ( ball.position.x < - 150 || ball.position.x > 150 ) direction.x = - direction.x;\n\tif ( ball.position.z < - 200 || ball.position.z > 200 ) direction.z = - direction.z;\n\n\tball.position.x = Math.max( - 150, Math.min( 150, ball.position.x ) );\n\tball.position.z = Math.max( - 200, Math.min( 200, ball.position.z ) );\n\t\n\tball.position.add( speed.copy( direction ).multiplyScalar( event.delta / 4 ) );\n\t\n\traycaster.set( ball.position, direction );\n\t\n\tvar intersections = raycaster.intersectObjects( group.children );\n\t\n\tif ( intersections.length > 0 ) {\n\t\n\t\tvar intersection = intersections[ 0 ];\n\t\t\n\t\tif ( intersection.distance < 5 ) {\n\t\t\t\n\t\t\tif ( intersection.object !== paddle ) {\n\n\t\t\t\tgroup.remove( intersection.object );\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tdirection.reflect( intersection.face.normal );\n\t\t\t\n\t\t}\n\t\t\n\t}\n\n}"
}]
}
}
\ No newline at end of file
......@@ -146,42 +146,16 @@ Sidebar.Geometry = function ( editor ) {
parameters.clear();
if ( geometry instanceof THREE.BoxGeometry ) {
if ( Sidebar.Geometry[ geometry.type ] !== undefined ) {
parameters.add( new Sidebar.Geometry.BoxGeometry( signals, object ) );
parameters.add( new Sidebar.Geometry[ geometry.type ]( signals, object ) );
} else if ( geometry instanceof THREE.CircleGeometry ) {
} else {
parameters.add( new Sidebar.Geometry.CircleGeometry( signals, object ) );
} else if ( geometry instanceof THREE.CylinderGeometry ) {
parameters.add( new Sidebar.Geometry.CylinderGeometry( signals, object ) );
} else if ( geometry instanceof THREE.SphereGeometry ) {
parameters.add( new Sidebar.Geometry.SphereGeometry( signals, object ) );
} else if ( geometry instanceof THREE.IcosahedronGeometry ) {
parameters.add( new Sidebar.Geometry.IcosahedronGeometry( signals, object ) );
} else if ( geometry instanceof THREE.PlaneGeometry ) {
parameters.add( new Sidebar.Geometry.PlaneGeometry( signals, object ) );
} else if ( geometry instanceof THREE.TorusGeometry ) {
parameters.add( new Sidebar.Geometry.TorusGeometry( signals, object ) );
} else if ( geometry instanceof THREE.TorusKnotGeometry ) {
parameters.add( new Sidebar.Geometry.TorusKnotGeometry( signals, object ) );
parameters.add( new Sidebar.Geometry.Modifiers( signals, object ) );
}
parameters.add( new Sidebar.Geometry.Modifiers( signals, object ) );
} else {
container.setDisplay( 'none' );
......
......@@ -291,7 +291,7 @@
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.shadowMapEnabled = true;
renderer.shadowMap.enabled = true;
//
......
......@@ -144,7 +144,7 @@
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.shadowMapEnabled = true;
renderer.shadowMap.enabled = true;
// STATS
......
......@@ -112,8 +112,8 @@
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.sortObjects = false;
renderer.shadowMapEnabled = true;
renderer.shadowMapType = THREE.PCFShadowMap;
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFShadowMap;
container.appendChild( renderer.domElement );
......
......@@ -116,12 +116,7 @@
// lights
var ambient = new THREE.AmbientLight( 0xffffff );
ambient.color.setHSL( 0.1, 0.3, 0.2 );
scene.add( ambient );
var dirLight = new THREE.DirectionalLight( 0xffffff, 0.125 );
var dirLight = new THREE.DirectionalLight( 0xffffff, 0.05 );
dirLight.position.set( 0, -1, 0 ).normalize();
scene.add( dirLight );
......@@ -139,7 +134,7 @@
function addLight( h, s, l, x, y, z ) {
var light = new THREE.PointLight( 0xffffff, 1.5, 4500 );
var light = new THREE.PointLight( 0xffffff, 1.5, 2000 );
light.color.setHSL( h, s, l );
light.position.set( x, y, z );
scene.add( light );
......
......@@ -233,8 +233,8 @@
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.shadowMapEnabled = true;
renderer.shadowMapCullFace = THREE.CullFaceBack;
renderer.shadowMap.enabled = true;
renderer.shadowMap.cullFace = THREE.CullFaceBack;
// STATS
......
......@@ -125,7 +125,7 @@
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.shadowMapEnabled = true;
renderer.shadowMap.enabled = true;
// STATS
......
此差异已折叠。
......@@ -125,8 +125,8 @@
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.shadowMapEnabled = true;
renderer.shadowMapCullFace = THREE.CullFaceBack;
renderer.shadowMap.enabled = true;
renderer.shadowMap.cullFace = THREE.CullFaceBack;
container.appendChild( renderer.domElement );
......
......@@ -180,8 +180,8 @@
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.shadowMapEnabled = true;
renderer.shadowMapCullFace = THREE.CullFaceBack;
renderer.shadowMap.enabled = true;
renderer.shadowMap.cullFace = THREE.CullFaceBack;
container.appendChild( renderer.domElement );
......
......@@ -126,8 +126,8 @@
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.shadowMapEnabled = true;
renderer.shadowMapType = THREE.PCFShadowMap;
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFShadowMap;
// STATS
......
......@@ -182,8 +182,8 @@
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );
renderer.shadowMapEnabled = true;
renderer.shadowMapCullFace = THREE.CullFaceBack;
renderer.shadowMap.enabled = true;
renderer.shadowMap.cullFace = THREE.CullFaceBack;
//
......
......@@ -185,8 +185,8 @@
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );
renderer.shadowMapEnabled = true;
renderer.shadowMapCullFace = THREE.CullFaceBack;
renderer.shadowMap.enabled = true;
renderer.shadowMap.cullFace = THREE.CullFaceBack;
renderer.autoClear = false;
......
......@@ -194,8 +194,8 @@
// SHADOW
renderer.shadowMapCullFace = THREE.CullFaceBack;
renderer.shadowMapEnabled = true;
renderer.shadowMap.cullFace = THREE.CullFaceBack;
renderer.shadowMap.enabled = true;
// STATS
......@@ -982,7 +982,7 @@
// render scene
renderer.autoClear = false;
renderer.shadowMapEnabled = true;
renderer.shadowMap.enabled = true;
camera.lookAt( cameraTarget );
......@@ -991,7 +991,7 @@
renderer.clear();
composer.render( 0.1 );
renderer.shadowMapEnabled = false;
renderer.shadowMap.enabled = false;
}
......
......@@ -220,8 +220,8 @@
//
renderer.shadowMapEnabled = true;
renderer.shadowMapType = THREE.PCFShadowMap;
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFShadowMap;
//
......
......@@ -146,7 +146,7 @@
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.shadowMapEnabled = true;
renderer.shadowMap.enabled = true;
// STATS
......
......@@ -157,11 +157,11 @@
renderer.gammaInput = true;
renderer.gammaOutput = true;
renderer.shadowMapEnabled = true;
renderer.shadowMap.enabled = true;
//renderer.shadowMapCascade = true;
//renderer.shadowMapType = THREE.PCFSoftShadowMap;
//renderer.shadowMapDebug = true;
//renderer.shadowMap.cascade = true;
//renderer.shadowMap.type = THREE.PCFSoftShadowMap;
//renderer.shadowMap.debug = true;
// STATS
......
......@@ -339,8 +339,8 @@
//
renderer.shadowMapEnabled = true;
renderer.shadowMapType = THREE.PCFSoftShadowMap;
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
//
......
......@@ -142,8 +142,8 @@
//
renderer.shadowMapEnabled = true;
renderer.shadowMapType = THREE.PCFShadowMap;
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFShadowMap;
// STATS
......
......@@ -134,8 +134,8 @@
//
renderer.shadowMapEnabled = true;
renderer.shadowMapType = THREE.PCFSoftShadowMap;
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
// STATS
......
......@@ -163,8 +163,8 @@
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.setClearColor( 0x000000 );
renderer.shadowMapEnabled = true;
renderer.shadowMapType = THREE.BasicShadowMap;
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.BasicShadowMap;
// Mouse control
controls = new THREE.OrbitControls( camera, renderer.domElement );
......
......@@ -47,6 +47,8 @@ THREE.CubeCamera = function ( near, far, cubeResolution ) {
this.updateCubeMap = function ( renderer, scene ) {
if ( this.parent === undefined ) this.updateMatrixWorld();
var renderTarget = this.renderTarget;
var generateMipmaps = renderTarget.generateMipmaps;
......
......@@ -146,59 +146,59 @@ THREE.BufferAttribute.prototype = {
},
setX: function ( index, x ) {
this.array[ index * this.itemSize ] = x;
getX: function ( index ) {
return this;
return this.array[ index * this.itemSize ];
},
setY: function ( index, y ) {
setX: function ( index, x ) {
this.array[ index * this.itemSize + 1 ] = y;
this.array[ index * this.itemSize ] = x;
return this;
},
setZ: function ( index, z ) {
this.array[ index * this.itemSize + 2 ] = z;
getY: function ( index ) {
return this;
return this.array[ index * this.itemSize + 1 ];
},
setW: function ( index, w ) {
setY: function ( index, y ) {
this.array[ index * this.itemSize + 3 ] = w;
this.array[ index * this.itemSize + 1 ] = y;
return this;
},
getX: function ( index ) {
getZ: function ( index ) {
return this.array[ index * this.itemSize ];
return this.array[ index * this.itemSize + 2 ];
},
getY: function ( index ) {
setZ: function ( index, z ) {
return this.array[ index * this.itemSize + 1 ];
this.array[ index * this.itemSize + 2 ] = z;
return this;
},
getZ: function ( index ) {
getW: function ( index ) {
return this.array[ index * this.itemSize + 2 ];
return this.array[ index * this.itemSize + 3 ];
},
getW: function ( index ) {
setW: function ( index, w ) {
return this.array[ index * this.itemSize + 3 ];
this.array[ index * this.itemSize + 3 ] = w;
return this;
},
......
......@@ -68,7 +68,7 @@ THREE.BufferGeometry.prototype = {
if ( position !== undefined ) {
matrix.applyToBuffer( position );
matrix.applyToVector3Array( position.array );
position.needsUpdate = true;
}
......@@ -79,7 +79,7 @@ THREE.BufferGeometry.prototype = {
var normalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );
normalMatrix.applyToBuffer( normal );
normalMatrix.applyToVector3Array( normal.array );
normal.needsUpdate = true;
}
......@@ -265,10 +265,10 @@ THREE.BufferGeometry.prototype = {
var faceVertexUvs = geometry.faceVertexUvs;
var vertexColors = material.vertexColors;
var hasFaceVertexUv = faceVertexUvs[ 0 ].length > 0;
var hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;
var hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;
var hasFaceVertexNormals = faces[ 0 ].vertexNormals.length == 3;
var hasFaceVertexNormals = faces[ 0 ] && faces[ 0 ].vertexNormals.length == 3;
var positions = new Float32Array( faces.length * 3 * 3 );
this.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
......@@ -391,35 +391,55 @@ THREE.BufferGeometry.prototype = {
if ( hasFaceVertexUv === true ) {
var uva = faceVertexUvs[ 0 ][ i ][ 0 ];
var uvb = faceVertexUvs[ 0 ][ i ][ 1 ];
var uvc = faceVertexUvs[ 0 ][ i ][ 2 ];
var vertexUvs = faceVertexUvs[ 0 ][ i ];
uvs[ i2 ] = uva.x;
uvs[ i2 + 1 ] = uva.y;
if ( vertexUvs !== undefined ) {
uvs[ i2 + 2 ] = uvb.x;
uvs[ i2 + 3 ] = uvb.y;
var uva = vertexUvs[ 0 ];
var uvb = vertexUvs[ 1 ];
var uvc = vertexUvs[ 2 ];
uvs[ i2 + 4 ] = uvc.x;
uvs[ i2 + 5 ] = uvc.y;
uvs[ i2 ] = uva.x;
uvs[ i2 + 1 ] = uva.y;
uvs[ i2 + 2 ] = uvb.x;
uvs[ i2 + 3 ] = uvb.y;
uvs[ i2 + 4 ] = uvc.x;
uvs[ i2 + 5 ] = uvc.y;
} else {
THREE.warn( 'THREE.BufferGeometry.fromGeometry(): Undefined vertexUv', i )
}
}
if ( hasFaceVertexUv2 === true ) {
var uva = faceVertexUvs[ 1 ][ i ][ 0 ];
var uvb = faceVertexUvs[ 1 ][ i ][ 1 ];
var uvc = faceVertexUvs[ 1 ][ i ][ 2 ];
var vertexUvs = faceVertexUvs[ 1 ][ i ];
uvs2[ i2 ] = uva.x;
uvs2[ i2 + 1 ] = uva.y;
if ( vertexUvs !== undefined ) {
var uva = vertexUvs[ 0 ];
var uvb = vertexUvs[ 1 ];
var uvc = vertexUvs[ 2 ];
uvs2[ i2 ] = uva.x;
uvs2[ i2 + 1 ] = uva.y;
uvs2[ i2 + 2 ] = uvb.x;
uvs2[ i2 + 3 ] = uvb.y;
uvs2[ i2 + 4 ] = uvc.x;
uvs2[ i2 + 5 ] = uvc.y;
} else {
uvs2[ i2 + 2 ] = uvb.x;
uvs2[ i2 + 3 ] = uvb.y;
THREE.warn( 'THREE.BufferGeometry.fromGeometry(): Undefined vertexUv2', i )
uvs2[ i2 + 4 ] = uvc.x;
uvs2[ i2 + 5 ] = uvc.y;
}
}
......@@ -466,16 +486,16 @@ THREE.BufferGeometry.prototype = {
}
var positions = this.attributes.position;
var positions = this.attributes.position.array;
if ( positions ) {
var bb = this.boundingBox;
bb.makeEmpty();
for ( var i = 0, il = positions.length / positions.itemSize; i < il; i ++ ) {
for ( var i = 0, il = positions.length; i < il; i += 3 ) {
vector.set( positions.getX( i ), positions.getY( i ), positions.getZ( i ) );
vector.fromArray( positions, i );
bb.expandByPoint( vector );
}
......@@ -491,7 +511,7 @@ THREE.BufferGeometry.prototype = {
if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {
THREE.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.' );
THREE.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this );
}
......@@ -512,7 +532,7 @@ THREE.BufferGeometry.prototype = {
}
var positions = this.attributes.position;
var positions = this.attributes.position.array;
if ( positions ) {
......@@ -520,9 +540,9 @@ THREE.BufferGeometry.prototype = {
var center = this.boundingSphere.center;
for ( var i = 0, il = positions.length / positions.itemSize; i < il; i ++ ) {
for ( var i = 0, il = positions.length; i < il; i += 3 ) {
vector.set( positions.getX( i ), positions.getY( i ), positions.getZ( i ) );
vector.fromArray( positions, i );
box.expandByPoint( vector );
}
......@@ -534,9 +554,9 @@ THREE.BufferGeometry.prototype = {
var maxRadiusSq = 0;
for ( var i = 0, il = positions.length / positions.itemSize; i < il; i ++ ) {
for ( var i = 0, il = positions.length; i < il; i += 3 ) {
vector.set( positions.getX( i ), positions.getY( i ), positions.getZ( i ) );
vector.fromArray( positions, i );
maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );
}
......@@ -545,7 +565,7 @@ THREE.BufferGeometry.prototype = {
if ( isNaN( this.boundingSphere.radius ) ) {
THREE.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.' );
THREE.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this );
}
......@@ -1087,11 +1107,25 @@ THREE.BufferGeometry.prototype = {
// standard BufferGeometry serialization
data.type = this.type;
data.uuid = this.uuid;
data.type = this.type;
if ( this.name !== '' ) data.name = this.name;
data.data = {};
data.data.attributes = {};
if ( this.parameters !== undefined ) {
var parameters = this.parameters;
for ( var key in parameters ) {
if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];
}
return data;
}
data.data = { attributes: {} };
var attributes = this.attributes;
var offsets = this.offsets;
......
......@@ -803,8 +803,8 @@ THREE.Geometry.prototype = {
// standard Geometry serialization
data.type = this.type;
data.uuid = this.uuid;
data.type = this.type;
if ( this.name !== '' ) data.name = this.name;
if ( this.parameters !== undefined ) {
......
......@@ -597,8 +597,8 @@ THREE.Object3D.prototype = {
// standard Object3D serialization
data.type = this.type;
data.uuid = this.uuid;
data.type = this.type;
if ( this.name !== '' ) data.name = this.name;
if ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;
if ( this.visible !== true ) data.visible = this.visible;
......@@ -619,23 +619,22 @@ THREE.Object3D.prototype = {
// wrap serialized object with additional data
var output;
var output = {};
if ( isRootObject ) {
output = {
metadata: metadata,
geometries: extractFromCache(meta.geometries),
materials: extractFromCache(meta.materials),
object: data
};
output.metadata = metadata;
} else {
var geometries = extractFromCache( meta.geometries );
var materials = extractFromCache( meta.materials );
output = { object: data };
if ( geometries.length > 0 ) output.geometries = geometries;
if ( materials.length > 0 ) output.materials = materials;
}
output.object = data;
return output;
// extract data from the cache hash
......
......@@ -40,7 +40,7 @@ THREE.SphereBufferGeometry = function ( radius, widthSegments, heightSegments, p
var uvs = new THREE.InterleavedBufferAttribute( vertexBuffer, 2, 6 );
this.addAttribute( 'uv', uvs );
var x, y, u, v, px, py, px, index = 0, vertices = [], normal = new THREE.Vector3();
var x, y, u, v, px, py, pz, index = 0, vertices = [], normal = new THREE.Vector3();
for ( y = 0; y <= heightSegments; y ++ ) {
......@@ -73,7 +73,7 @@ THREE.SphereBufferGeometry = function ( radius, widthSegments, heightSegments, p
}
var indices = [];
var ul;
for ( y = 0, ul = heightSegments - 1; y < ul; y++ ) {
for ( x = 0; x < widthSegments; x++ ) {
......
......@@ -121,8 +121,8 @@ THREE.Material.prototype = {
};
// standard Material serialization
data.type = this.type;
data.uuid = this.uuid;
data.type = this.type;
if ( this.name !== '' ) data.name = this.name;
if ( this.opacity < 1 ) data.opacity = this.opacity;
......
......@@ -86,7 +86,7 @@ THREE.Matrix3.prototype = {
var v1;
return function applyToVector3Array( array, offset, length ) {
return function ( array, offset, length ) {
if ( v1 === undefined ) v1 = new THREE.Vector3();
if ( offset === undefined ) offset = 0;
......@@ -94,15 +94,9 @@ THREE.Matrix3.prototype = {
for ( var i = 0, j = offset; i < length; i += 3, j += 3 ) {
v1.x = array[ j ];
v1.y = array[ j + 1 ];
v1.z = array[ j + 2 ];
v1.fromArray( array, j );
v1.applyMatrix3( this );
array[ j ] = v1.x;
array[ j + 1 ] = v1.y;
array[ j + 2 ] = v1.z;
v1.toArray( array, j );
}
......@@ -134,7 +128,7 @@ THREE.Matrix3.prototype = {
}
return array;
return buffer;
};
......
......@@ -101,7 +101,7 @@ THREE.Matrix4.prototype = {
return this;
},
makeBasis: function ( xAxis, yAxis, zAxis ) {
this.set(
......@@ -469,7 +469,7 @@ THREE.Matrix4.prototype = {
var v1;
return function applyToVector3Array( array, offset, length ) {
return function ( array, offset, length ) {
if ( v1 === undefined ) v1 = new THREE.Vector3();
if ( offset === undefined ) offset = 0;
......@@ -477,15 +477,9 @@ THREE.Matrix4.prototype = {
for ( var i = 0, j = offset; i < length; i += 3, j += 3 ) {
v1.x = array[ j ];
v1.y = array[ j + 1 ];
v1.z = array[ j + 2 ];
v1.fromArray( array, j );
v1.applyMatrix4( this );
array[ j ] = v1.x;
array[ j + 1 ] = v1.y;
array[ j + 2 ] = v1.z;
v1.toArray( array, j );
}
......@@ -517,7 +511,7 @@ THREE.Matrix4.prototype = {
}
return array;
return buffer;
};
......
......@@ -963,13 +963,17 @@ THREE.WebGLRenderer = function ( parameters ) {
} else if ( material.defaultAttributeValues !== undefined ) {
if ( material.defaultAttributeValues[ key ].length === 2 ) {
if ( material.defaultAttributeValues[ key ] !== undefined ) {
_gl.vertexAttrib2fv( programAttribute, material.defaultAttributeValues[ key ] );
if ( material.defaultAttributeValues[ key ].length === 2 ) {
} else if ( material.defaultAttributeValues[ key ].length === 3 ) {
_gl.vertexAttrib2fv( programAttribute, material.defaultAttributeValues[ key ] );
_gl.vertexAttrib3fv( programAttribute, material.defaultAttributeValues[ key ] );
} else if ( material.defaultAttributeValues[ key ].length === 3 ) {
_gl.vertexAttrib3fv( programAttribute, material.defaultAttributeValues[ key ] );
}
}
......
......@@ -274,7 +274,7 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
webglObject = _renderList[ j ];
object = webglObject.object;
buffer = webglObject.buffer;
buffer = _objects.geometries.get( object );
// culling is overriden globally for all objects
// while rendering depth map
......@@ -309,16 +309,7 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
}
_renderer.setMaterialFaces( objectMaterial );
if ( buffer instanceof THREE.BufferGeometry ) {
_renderer.renderBufferDirect( shadowCamera, _lights, fog, material, buffer, object );
} else {
_renderer.renderBuffer( shadowCamera, _lights, fog, material, buffer, object );
}
_renderer.renderBufferDirect( shadowCamera, _lights, fog, material, buffer, object );
}
......@@ -363,18 +354,12 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
if ( object.visible ) {
var webglObjects = _webglObjects[ object.id ];
if ( webglObjects && object.castShadow && (object.frustumCulled === false || _frustum.intersectsObject( object ) === true) ) {
for ( var i = 0, l = webglObjects.length; i < l; i ++ ) {
var webglObject = _objects.objects[ object.id ];
var webglObject = webglObjects[ i ];
if ( webglObject && object.castShadow && (object.frustumCulled === false || _frustum.intersectsObject( object ) === true) ) {
object._modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );
_renderList.push( webglObject );
}
object._modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );
_renderList.push( webglObject );
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册