private static void AddTextureToMaterial(FDatasmithFacadeUEPbrMaterial DSMaterial, RhinoTextureInfo TextureInfo, Color DiffuseColor) { if (!TextureInfo.IsSupported()) { return; } Texture RhinoTexture = TextureInfo.RhinoTexture; // Extract texture mapping info double BlendConstant, BlendA0, BlendA1, BlendA2, BlendA3; RhinoTexture.GetAlphaBlendValues(out BlendConstant, out BlendA0, out BlendA1, out BlendA2, out BlendA3); FDatasmithFacadeMaterialsUtils.FWeightedMaterialExpressionParameters WeightedExpressionParameters = new FDatasmithFacadeMaterialsUtils.FWeightedMaterialExpressionParameters((float)BlendConstant); FDatasmithFacadeMaterialsUtils.FUVEditParameters UVParameters = GetUVParameter(RhinoTexture); switch (RhinoTexture.TextureType) { case TextureType.Bitmap: { FDatasmithFacadeMaterialExpression TextureExpression = FDatasmithFacadeMaterialsUtils.CreateTextureExpression(DSMaterial, "Diffuse Map", TextureInfo.Name, UVParameters); WeightedExpressionParameters.SetColorsRGB(DiffuseColor.R, DiffuseColor.G, DiffuseColor.B, DiffuseColor.A); WeightedExpressionParameters.SetExpression(TextureExpression); FDatasmithFacadeMaterialExpression Expression = FDatasmithFacadeMaterialsUtils.CreateWeightedMaterialExpression(DSMaterial, "Diffuse Color", WeightedExpressionParameters); DSMaterial.GetBaseColor().SetExpression(Expression); } break; case TextureType.Bump: { FDatasmithFacadeMaterialExpression TextureExpression = FDatasmithFacadeMaterialsUtils.CreateTextureExpression(DSMaterial, "Bump Map", TextureInfo.Name, UVParameters); WeightedExpressionParameters.SetExpression(TextureExpression); WeightedExpressionParameters.SetTextureMode(FDatasmithFacadeTexture.ETextureMode.Bump); FDatasmithFacadeMaterialExpression Expression = FDatasmithFacadeMaterialsUtils.CreateWeightedMaterialExpression(DSMaterial, "Bump Height", WeightedExpressionParameters); DSMaterial.GetNormal().SetExpression(Expression); } break; case TextureType.Transparency: { FDatasmithFacadeMaterialExpression TextureExpression = FDatasmithFacadeMaterialsUtils.CreateTextureExpression(DSMaterial, "Opacity Map", TextureInfo.Name, UVParameters); Color BlendColor = Color.White; WeightedExpressionParameters.SetColorsRGB(BlendColor.R, BlendColor.G, BlendColor.B, BlendColor.A); WeightedExpressionParameters.SetExpression(TextureExpression); FDatasmithFacadeMaterialExpression Expression = FDatasmithFacadeMaterialsUtils.CreateWeightedMaterialExpression(DSMaterial, "White", WeightedExpressionParameters); DSMaterial.GetOpacity().SetExpression(Expression); if (Math.Abs(BlendConstant) > float.Epsilon) { DSMaterial.SetBlendMode(/*EBlendMode::BLEND_Translucent*/ 2); } } break; } }
internal static global::System.Runtime.InteropServices.HandleRef getCPtr(FDatasmithFacadeMaterialsUtils obj) { return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr); }