public static UniVRM10.MaterialColorBinding?Build10(this MaterialColorBind bind, IReadOnlyList <VRMShaders.MaterialFactory.MaterialLoadInfo> materials) { var value = new Vector4(bind.TargetValue[0], bind.TargetValue[1], bind.TargetValue[2], bind.TargetValue[3]); var material = materials[bind.Material.Value].Asset; var binding = default(UniVRM10.MaterialColorBinding?); if (material != null) { try { binding = new UniVRM10.MaterialColorBinding { MaterialName = material.name, // 名前で持つべき? BindType = bind.Type, TargetValue = value, // BaseValue = material.GetColor(kv.Key), }; } catch (Exception) { // do nothing } } return(binding); }
public static UniGLTF.Extensions.VRMC_vrm.MaterialColorBind ToGltf(this MaterialColorBind self, List <VrmLib.Material> materials) { var m = new UniGLTF.Extensions.VRMC_vrm.MaterialColorBind { Material = materials.IndexOfThrow(self.Material), Type = EnumUtil.Cast <UniGLTF.Extensions.VRMC_vrm.MaterialColorType>(self.BindType), TargetValue = self.Property.Value.ToFloat4() }; return(m); }
public static VrmLib.Expression FromGltf(this UniGLTF.Extensions.VRMC_vrm.Expression x, List <VrmLib.Node> nodes, List <VrmLib.Material> materials) { var expression = new VrmLib.Expression((VrmLib.ExpressionPreset)x.Preset, x.Name, x.IsBinary.HasValue && x.IsBinary.Value) { IgnoreBlink = x.IgnoreBlink.GetValueOrDefault(), IgnoreLookAt = x.IgnoreLookAt.GetValueOrDefault(), IgnoreMouth = x.IgnoreMouth.GetValueOrDefault(), }; if (x.MorphTargetBinds != null) { foreach (var y in x.MorphTargetBinds) { var node = nodes[y.Node.Value]; var blendShapeName = node.Mesh.MorphTargets[y.Index.Value].Name; var blendShapeBind = new MorphTargetBind(node, blendShapeName, y.Weight.Value); expression.MorphTargetBinds.Add(blendShapeBind); } } if (x.MaterialColorBinds != null) { foreach (var y in x.MaterialColorBinds) { var material = materials[y.Material.Value]; var materialColorBind = new MaterialColorBind(material, EnumUtil.Cast <MaterialBindType>(y.Type), y.TargetValue.ToVector4(Vector4.Zero)); expression.MaterialColorBinds.Add(materialColorBind); } } if (x.TextureTransformBinds != null) { foreach (var y in x.TextureTransformBinds) { var material = materials[y.Material.Value]; var materialUVBind = new TextureTransformBind(material, y.Scaling.ToVector2(Vector2.One), y.Offset.ToVector2(Vector2.Zero)); expression.TextureTransformBinds.Add(materialUVBind); } } return(expression); }