浏览代码

Editor: Added ClearCoatNormalMap support.

Mr.doob 6 年之前
父节点
当前提交
1062a5b38b
共有 2 个文件被更改,包括 66 次插入0 次删除
  1. 64 0
      editor/js/Sidebar.Material.js
  2. 2 0
      editor/js/Strings.js

+ 64 - 0
editor/js/Sidebar.Material.js

@@ -351,6 +351,22 @@ Sidebar.Material = function ( editor ) {
 
 	container.add( materialNormalMapRow );
 
+	// clearcoat normal map
+
+	var materialClearCoatNormalMapRow = new UI.Row();
+	var materialClearCoatNormalMapEnabled = new UI.Checkbox( false ).onChange( update );
+	var materialClearCoatNormalMap = new UI.Texture().onChange( update );
+	var materialClearCoatNormalScaleX = new UI.Number( 1 ).setWidth( '30px' ).onChange( update );
+	var materialClearCoatNormalScaleY = new UI.Number( 1 ).setWidth( '30px' ).onChange( update );
+
+	materialClearCoatNormalMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/clearcoatnormalmap' ) ).setWidth( '90px' ) );
+	materialClearCoatNormalMapRow.add( materialClearCoatNormalMapEnabled );
+	materialClearCoatNormalMapRow.add( materialClearCoatNormalMap );
+	materialClearCoatNormalMapRow.add( materialClearCoatNormalScaleX );
+	materialClearCoatNormalMapRow.add( materialClearCoatNormalScaleY );
+
+	container.add( materialClearCoatNormalMapRow );
+
 	// displacement map
 
 	var materialDisplacementMapRow = new UI.Row();
@@ -801,6 +817,39 @@ Sidebar.Material = function ( editor ) {
 
 			}
 
+			if ( material.clearCoatNormalMap !== undefined ) {
+
+				var clearCoatNormalMapEnabled = materialClearCoatNormalMapEnabled.getValue() === true;
+
+				if ( objectHasUvs ) {
+
+					var clearCoatNormalMap = clearCoatNormalMapEnabled ? materialClearCoatNormalMap.getValue() : null;
+
+					if ( material.clearCoatNormalMap !== clearCoatNormalMap ) {
+
+						editor.execute( new SetMaterialMapCommand( editor, currentObject, 'clearCoatNormalMap', clearCoatNormalMap, currentMaterialSlot ) );
+
+					}
+
+					if ( material.clearCoatNormalScale.x !== materialClearCoatNormalScaleX.getValue() ||
+						material.clearCoatNormalScale.y !== materialClearCoatNormalScaleY.getValue() ) {
+
+						var value = [
+							materialClearCoatNormalScaleX.getValue(),
+							materialClearCoatNormalScaleY.getValue()
+						];
+						editor.execute( new SetMaterialVectorCommand( editor, currentObject, 'clearCoatNormalScale', value, currentMaterialSlot ) );
+
+					}
+
+				} else {
+
+					if ( clearCoatNormalMapEnabled ) textureWarning = true;
+
+				}
+
+			}
+
 			if ( material.displacementMap !== undefined ) {
 
 				var displacementMapEnabled = materialDisplacementMapEnabled.getValue() === true;
@@ -1333,6 +1382,21 @@ Sidebar.Material = function ( editor ) {
 
 		}
 
+		if ( material.clearCoatNormalMap !== undefined ) {
+
+			materialClearCoatNormalMapEnabled.setValue( material.clearCoatNormalMap !== null );
+
+			if ( material.clearCoatNormalMap !== null || resetTextureSelectors ) {
+
+				materialClearCoatNormalMap.setValue( material.clearCoatNormalMap );
+
+			}
+
+			materialClearCoatNormalScaleX.setValue( material.clearCoatNormalScale.x );
+			materialClearCoatNormalScaleY.setValue( material.clearCoatNormalScale.y );
+
+		}
+
 		if ( material.displacementMap !== undefined ) {
 
 			materialDisplacementMapEnabled.setValue( material.displacementMap !== null );

+ 2 - 0
editor/js/Strings.js

@@ -236,6 +236,7 @@ var Strings = function ( config ) {
 			'sidebar/material/alphamap': 'Alpha Map',
 			'sidebar/material/bumpmap': 'Bump Map',
 			'sidebar/material/normalmap': 'Normal Map',
+			'sidebar/material/clearcoatnormalmap': 'ClearCoat Normal Map',
 			'sidebar/material/displacemap': 'Displace Map',
 			'sidebar/material/roughmap': 'Rough. Map',
 			'sidebar/material/metalmap': 'Metal. Map',
@@ -507,6 +508,7 @@ var Strings = function ( config ) {
 			'sidebar/material/alphamap': '透明贴图',
 			'sidebar/material/bumpmap': '凹凸贴图',
 			'sidebar/material/normalmap': '法线贴图',
+			'sidebar/material/clearcoatnormalmap': 'ClearCoat Normal Map',
 			'sidebar/material/displacemap': '置换贴图',
 			'sidebar/material/roughmap': '粗糙贴图',
 			'sidebar/material/metalmap': '金属贴图',