|
@@ -1073,7 +1073,7 @@ Object.assign( Texture.prototype, EventDispatcher.prototype, {
|
|
|
|
|
|
var canvas;
|
|
|
|
|
|
- if ( image.toDataURL !== undefined ) {
|
|
|
+ if ( image instanceof HTMLCanvasElement ) {
|
|
|
|
|
|
canvas = image;
|
|
|
|
|
@@ -4873,7 +4873,7 @@ var ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0
|
|
|
'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,
|
|
|
'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,
|
|
|
'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,
|
|
|
- 'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,
|
|
|
+ 'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,
|
|
|
'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,
|
|
|
'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,
|
|
|
'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,
|
|
@@ -7225,6 +7225,8 @@ function Material() {
|
|
|
|
|
|
this.visible = true;
|
|
|
|
|
|
+ this.userData = {};
|
|
|
+
|
|
|
this.needsUpdate = true;
|
|
|
|
|
|
}
|
|
@@ -7385,17 +7387,21 @@ Object.assign( Material.prototype, EventDispatcher.prototype, {
|
|
|
data.depthTest = this.depthTest;
|
|
|
data.depthWrite = this.depthWrite;
|
|
|
|
|
|
+ if ( this.dithering === true ) data.dithering = true;
|
|
|
+
|
|
|
if ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;
|
|
|
if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;
|
|
|
+
|
|
|
if ( this.wireframe === true ) data.wireframe = this.wireframe;
|
|
|
if ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;
|
|
|
if ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;
|
|
|
if ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;
|
|
|
|
|
|
- data.skinning = this.skinning;
|
|
|
- data.morphTargets = this.morphTargets;
|
|
|
+ if ( this.morphTargets === true ) data.morphTargets = true;
|
|
|
+ if ( this.skinning === true ) data.skinning = true;
|
|
|
|
|
|
- data.dithering = this.dithering;
|
|
|
+ if ( this.visible === false ) data.visible = false;
|
|
|
+ if ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;
|
|
|
|
|
|
// TODO: Copied from Object3D.toJSON
|
|
|
|
|
@@ -7472,12 +7478,13 @@ Object.assign( Material.prototype, EventDispatcher.prototype, {
|
|
|
this.dithering = source.dithering;
|
|
|
|
|
|
this.alphaTest = source.alphaTest;
|
|
|
-
|
|
|
this.premultipliedAlpha = source.premultipliedAlpha;
|
|
|
|
|
|
this.overdraw = source.overdraw;
|
|
|
|
|
|
this.visible = source.visible;
|
|
|
+ this.userData = JSON.parse( JSON.stringify( source.userData ) );
|
|
|
+
|
|
|
this.clipShadows = source.clipShadows;
|
|
|
this.clipIntersection = source.clipIntersection;
|
|
|
|
|
@@ -10524,7 +10531,7 @@ Object.assign( Object3D.prototype, EventDispatcher.prototype, {
|
|
|
}
|
|
|
|
|
|
return this;
|
|
|
-
|
|
|
+
|
|
|
},
|
|
|
|
|
|
getObjectById: function ( id ) {
|
|
@@ -10764,10 +10771,10 @@ Object.assign( Object3D.prototype, EventDispatcher.prototype, {
|
|
|
object.type = this.type;
|
|
|
|
|
|
if ( this.name !== '' ) object.name = this.name;
|
|
|
- if ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;
|
|
|
if ( this.castShadow === true ) object.castShadow = true;
|
|
|
if ( this.receiveShadow === true ) object.receiveShadow = true;
|
|
|
if ( this.visible === false ) object.visible = false;
|
|
|
+ if ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;
|
|
|
|
|
|
object.matrix = this.matrix.toArray();
|
|
|
|
|
@@ -20370,7 +20377,7 @@ function WebVRManager( renderer ) {
|
|
|
|
|
|
function onVRDisplayPresentChange() {
|
|
|
|
|
|
- if ( device.isPresenting ) {
|
|
|
+ if ( device !== null && device.isPresenting ) {
|
|
|
|
|
|
var eyeParameters = device.getEyeParameters( 'left' );
|
|
|
var renderWidth = eyeParameters.renderWidth;
|
|
@@ -21875,22 +21882,34 @@ function WebGLRenderer( parameters ) {
|
|
|
|
|
|
};
|
|
|
|
|
|
- // Rendering
|
|
|
+ // Animation Loop
|
|
|
|
|
|
- this.animate = function ( callback ) {
|
|
|
+ var isAnimating = false;
|
|
|
+ var onAnimationFrame = null;
|
|
|
|
|
|
- function onFrame() {
|
|
|
+ function start() {
|
|
|
|
|
|
- callback();
|
|
|
+ if ( isAnimating ) return;
|
|
|
+ ( vr.getDevice() || window ).requestAnimationFrame( loop );
|
|
|
|
|
|
- ( vr.getDevice() || window ).requestAnimationFrame( onFrame );
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ function loop( time ) {
|
|
|
+
|
|
|
+ if ( onAnimationFrame !== null ) onAnimationFrame( time );
|
|
|
+ ( vr.getDevice() || window ).requestAnimationFrame( loop );
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
- ( vr.getDevice() || window ).requestAnimationFrame( onFrame );
|
|
|
+ this.animate = function ( callback ) {
|
|
|
+
|
|
|
+ onAnimationFrame = callback;
|
|
|
+ start();
|
|
|
|
|
|
};
|
|
|
|
|
|
+ // Rendering
|
|
|
+
|
|
|
this.render = function ( scene, camera, renderTarget, forceClear ) {
|
|
|
|
|
|
if ( ! ( camera && camera.isCamera ) ) {
|
|
@@ -32882,12 +32901,17 @@ Object.assign( MaterialLoader.prototype, {
|
|
|
if ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;
|
|
|
if ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;
|
|
|
if ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;
|
|
|
+
|
|
|
if ( json.skinning !== undefined ) material.skinning = json.skinning;
|
|
|
if ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;
|
|
|
+ if ( json.dithering !== undefined ) material.dithering = json.dithering;
|
|
|
+
|
|
|
+ if ( json.visible !== undefined ) material.visible = json.visible;
|
|
|
+ if ( json.userData !== undefined ) material.userData = json.userData;
|
|
|
|
|
|
// Deprecated
|
|
|
|
|
|
- if ( json.shading !== undefined ) material.shading = json.shading;
|
|
|
+ if ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading
|
|
|
|
|
|
// for PointsMaterial
|
|
|
|