Jelajahi Sumber

VRMLLoader: Support Brackground with just skyColor. Fixes #5433.

Mr.doob 10 tahun lalu
induk
melakukan
b0ffb51462
1 mengubah file dengan 20 tambahan dan 16 penghapusan
  1. 20 16
      examples/js/loaders/VRMLLoader.js

+ 20 - 16
examples/js/loaders/VRMLLoader.js

@@ -600,40 +600,44 @@ THREE.VRMLLoader.prototype = {
 					var radius = 2e4;
 
 					var skyGeometry = new THREE.SphereGeometry( radius, segments, segments );
+					var skyMaterial = new THREE.MeshBasicMaterial( { color: 0xffffff, fog: false, side: THREE.BackSide } );
 
-					var skyMaterial = new THREE.MeshBasicMaterial( { color: 'white', vertexColors: THREE.VertexColors, shading: THREE.NoShading } );
+					if ( data.skyColor.length > 1 ) {
 
-					skyMaterial.side = THREE.BackSide;
+						paintFaces( skyGeometry, radius, data.skyAngle, data.skyColor, true );
 
-					skyMaterial.fog = false;
+						skyMaterial.vertexColors = THREE.VertexColors
 
-					skyMaterial.color = new THREE.Color();
+					} else {
 
-					paintFaces( skyGeometry, radius, data.skyAngle, data.skyColor, true );
+						var color = data.skyColor[ 0 ];
+						skyMaterial.color.setRGB( color.r, color.b, color.g );
 
-					var sky = new THREE.Mesh( skyGeometry, skyMaterial );
+					}
 
-					scene.add( sky );
+					scene.add( new THREE.Mesh( skyGeometry, skyMaterial ) );
 
 					// ground (half sphere):
 
-					radius = 1.2e4;
+					if ( data.groundColor !== undefined ) {
+
+						radius = 1.2e4;
 
-					var groundGeometry = new THREE.SphereGeometry( radius, segments, segments, 0, 2 * Math.PI, 0.5 * Math.PI, 1.5 * Math.PI );
+						var groundGeometry = new THREE.SphereGeometry( radius, segments, segments, 0, 2 * Math.PI, 0.5 * Math.PI, 1.5 * Math.PI );
 
-					var groundMaterial = new THREE.MeshBasicMaterial( { color: 'white', vertexColors: THREE.VertexColors, shading: THREE.NoShading } );
+						var groundMaterial = new THREE.MeshBasicMaterial( { color: 'white', vertexColors: THREE.VertexColors } );
 
-					groundMaterial.side = THREE.BackSide;
+						groundMaterial.side = THREE.BackSide;
 
-					groundMaterial.fog = false;
+						groundMaterial.fog = false;
 
-					groundMaterial.color = new THREE.Color();
+						groundMaterial.color = new THREE.Color();
 
-					paintFaces( groundGeometry, radius, data.groundAngle, data.groundColor, false );
+						paintFaces( groundGeometry, radius, data.groundAngle, data.groundColor, false );
 
-					var ground = new THREE.Mesh( groundGeometry, groundMaterial );
+						scene.add( new THREE.Mesh( groundGeometry, groundMaterial ) );
 
-					scene.add( ground );
+					}
 
 				} else if ( /geometry/.exec( data.string ) ) {