質問するログイン新規登録

質問編集履歴

1

修正

2020/08/09 02:48

投稿

merani-
merani-

スコア0

title CHANGED
File without changes
body CHANGED
@@ -23,7 +23,108 @@
23
23
  ```
24
24
 
25
25
  ### 該当のソースコード
26
+ エラー部分に「エラー箇所です」のコメントを入れています。
27
+ 「VRMExportSettings.cs」については、文字数制限のため一部のみ記載してます。
28
+ C#(VRMExportSettings.cs)
29
+ /// <summary>
30
+ /// エクスポート可能か検証する
31
+ /// </summary>
32
+ /// <returns></returns>
33
+ ~中略~
34
+ ///エラー箇所です
35
+ var vertexColor = Source.GetComponentsInChildren<SkinnedMeshRenderer>().Any(x => x.sharedMesh.colors.Length > 0);
36
+ if (vertexColor)
37
+ {
38
+ yield return Validation.Warning("This model contains vertex color");
39
+ }
26
40
 
41
+ var renderers = Source.GetComponentsInChildren<Renderer>();
42
+ if (renderers.All(x => !x.gameObject.activeInHierarchy))
43
+ {
44
+ yield return Validation.Error("No active mesh");
45
+ }
46
+
47
+ var materials = renderers.SelectMany(x => x.sharedMaterials).Distinct();
48
+ foreach (var material in materials)
49
+ {
50
+ if (material.shader.name == "Standard")
51
+ {
52
+ // standard
53
+ continue;
54
+ }
55
+
56
+ if (MaterialExporter.UseUnlit(material.shader.name))
57
+ {
58
+ // unlit
59
+ continue;
60
+ }
61
+
62
+ if (VRMMaterialExporter.VRMExtensionShaders.Contains(material.shader.name))
63
+ {
64
+ // VRM supported
65
+ continue;
66
+ }
67
+
68
+ yield return Validation.Warning(string.Format("unknown material '{0}' is used. this will export as `Standard` fallback", material.shader.name));
69
+ }
70
+
71
+ foreach (var material in materials)
72
+ {
73
+ if (IsFileNameLengthTooLong(material.name))
74
+ yield return Validation.Error(string.Format("FileName '{0}' is too long. ", material.name));
75
+ }
76
+
77
+ var textureNameList = new List<string>();
78
+ foreach (var material in materials)
79
+ {
80
+ var shader = material.shader;
81
+ int propertyCount = ShaderUtil.GetPropertyCount(shader);
82
+ for (int i = 0; i < propertyCount; i++)
83
+ {
84
+ if (ShaderUtil.GetPropertyType(shader, i) == ShaderUtil.ShaderPropertyType.TexEnv)
85
+ {
86
+ if ((material.GetTexture(ShaderUtil.GetPropertyName(shader, i)) != null))
87
+ {
88
+ var textureName = material.GetTexture(ShaderUtil.GetPropertyName(shader, i)).name;
89
+ if (!textureNameList.Contains(textureName))
90
+ textureNameList.Add(textureName);
91
+ }
92
+ }
93
+ }
94
+ }
95
+
96
+ foreach (var textureName in textureNameList)
97
+ {
98
+ if (IsFileNameLengthTooLong(textureName))
99
+ yield return Validation.Error(string.Format("FileName '{0}' is too long. ", textureName));
100
+ }
101
+
102
+ var vrmMeta = Source.GetComponent<VRMMeta>();
103
+ if (vrmMeta != null && vrmMeta.Meta != null && vrmMeta.Meta.Thumbnail != null)
104
+ {
105
+ var thumbnailName = vrmMeta.Meta.Thumbnail.name;
106
+ if (IsFileNameLengthTooLong(thumbnailName))
107
+ yield return Validation.Error(string.Format("FileName '{0}' is too long. ", thumbnailName));
108
+ }
109
+
110
+ var meshFilters = Source.GetComponentsInChildren<MeshFilter>();
111
+ var meshesName = meshFilters.Select(x => x.sharedMesh.name).Distinct();
112
+ foreach (var meshName in meshesName)
113
+ {
114
+ if (IsFileNameLengthTooLong(meshName))
115
+ yield return Validation.Error(string.Format("FileName '{0}' is too long. ", meshName));
116
+ }
117
+
118
+ var skinnedmeshRenderers = Source.GetComponentsInChildren<SkinnedMeshRenderer>();
119
+ var skinnedmeshesName = skinnedmeshRenderers.Select(x => x.sharedMesh.name).Distinct();
120
+ foreach (var skinnedmeshName in skinnedmeshesName)
121
+ {
122
+ if (IsFileNameLengthTooLong(skinnedmeshName))
123
+ yield return Validation.Error(string.Format("FileName '{0}' is too long. ", skinnedmeshName));
124
+ }
125
+ }
126
+ ```
127
+
27
128
  ```C#(VRMExporterWizard.cs)
28
129
  using System.IO;
29
130
  using System.Text;
@@ -51,7 +152,7 @@
51
152
 
52
153
  // update checkbox
53
154
  wiz.m_settings.InitializeFrom(go);
54
-
155
+ ///エラー箇所です
55
156
  wiz.OnWizardUpdate();
56
157
  }
57
158
 
@@ -96,7 +197,7 @@
96
197
  isValid = true;
97
198
  var helpBuilder = new StringBuilder();
98
199
  var errorBuilder = new StringBuilder();
99
-
200
+ ///エラー箇所です
100
201
  foreach (var validation in m_settings.Validate())
101
202
  {
102
203
  if (!validation.CanExport)
@@ -149,6 +250,7 @@
149
250
  [MenuItem(CONVERT_HUMANOID_KEY, false, 1)]
150
251
  private static void ExportFromMenu()
151
252
  {
253
+ ///エラー箇所です
152
254
  VRMExporterWizard.CreateWizard();
153
255
  }
154
256
  }