質問編集履歴

1

修正

2020/08/09 02:48

投稿

merani-
merani-

スコア0

test CHANGED
File without changes
test CHANGED
@@ -48,6 +48,208 @@
48
48
 
49
49
  ### 該当のソースコード
50
50
 
51
+ エラー部分に「エラー箇所です」のコメントを入れています。
52
+
53
+ 「VRMExportSettings.cs」については、文字数制限のため一部のみ記載してます。
54
+
55
+ C#(VRMExportSettings.cs)
56
+
57
+ /// <summary>
58
+
59
+ /// エクスポート可能か検証する
60
+
61
+ /// </summary>
62
+
63
+ /// <returns></returns>
64
+
65
+ ~中略~
66
+
67
+ ///エラー箇所です
68
+
69
+ var vertexColor = Source.GetComponentsInChildren<SkinnedMeshRenderer>().Any(x => x.sharedMesh.colors.Length > 0);
70
+
71
+ if (vertexColor)
72
+
73
+ {
74
+
75
+ yield return Validation.Warning("This model contains vertex color");
76
+
77
+ }
78
+
79
+
80
+
81
+ var renderers = Source.GetComponentsInChildren<Renderer>();
82
+
83
+ if (renderers.All(x => !x.gameObject.activeInHierarchy))
84
+
85
+ {
86
+
87
+ yield return Validation.Error("No active mesh");
88
+
89
+ }
90
+
91
+
92
+
93
+ var materials = renderers.SelectMany(x => x.sharedMaterials).Distinct();
94
+
95
+ foreach (var material in materials)
96
+
97
+ {
98
+
99
+ if (material.shader.name == "Standard")
100
+
101
+ {
102
+
103
+ // standard
104
+
105
+ continue;
106
+
107
+ }
108
+
109
+
110
+
111
+ if (MaterialExporter.UseUnlit(material.shader.name))
112
+
113
+ {
114
+
115
+ // unlit
116
+
117
+ continue;
118
+
119
+ }
120
+
121
+
122
+
123
+ if (VRMMaterialExporter.VRMExtensionShaders.Contains(material.shader.name))
124
+
125
+ {
126
+
127
+ // VRM supported
128
+
129
+ continue;
130
+
131
+ }
132
+
133
+
134
+
135
+ yield return Validation.Warning(string.Format("unknown material '{0}' is used. this will export as `Standard` fallback", material.shader.name));
136
+
137
+ }
138
+
139
+
140
+
141
+ foreach (var material in materials)
142
+
143
+ {
144
+
145
+ if (IsFileNameLengthTooLong(material.name))
146
+
147
+ yield return Validation.Error(string.Format("FileName '{0}' is too long. ", material.name));
148
+
149
+ }
150
+
151
+
152
+
153
+ var textureNameList = new List<string>();
154
+
155
+ foreach (var material in materials)
156
+
157
+ {
158
+
159
+ var shader = material.shader;
160
+
161
+ int propertyCount = ShaderUtil.GetPropertyCount(shader);
162
+
163
+ for (int i = 0; i < propertyCount; i++)
164
+
165
+ {
166
+
167
+ if (ShaderUtil.GetPropertyType(shader, i) == ShaderUtil.ShaderPropertyType.TexEnv)
168
+
169
+ {
170
+
171
+ if ((material.GetTexture(ShaderUtil.GetPropertyName(shader, i)) != null))
172
+
173
+ {
174
+
175
+ var textureName = material.GetTexture(ShaderUtil.GetPropertyName(shader, i)).name;
176
+
177
+ if (!textureNameList.Contains(textureName))
178
+
179
+ textureNameList.Add(textureName);
180
+
181
+ }
182
+
183
+ }
184
+
185
+ }
186
+
187
+ }
188
+
189
+
190
+
191
+ foreach (var textureName in textureNameList)
192
+
193
+ {
194
+
195
+ if (IsFileNameLengthTooLong(textureName))
196
+
197
+ yield return Validation.Error(string.Format("FileName '{0}' is too long. ", textureName));
198
+
199
+ }
200
+
201
+
202
+
203
+ var vrmMeta = Source.GetComponent<VRMMeta>();
204
+
205
+ if (vrmMeta != null && vrmMeta.Meta != null && vrmMeta.Meta.Thumbnail != null)
206
+
207
+ {
208
+
209
+ var thumbnailName = vrmMeta.Meta.Thumbnail.name;
210
+
211
+ if (IsFileNameLengthTooLong(thumbnailName))
212
+
213
+ yield return Validation.Error(string.Format("FileName '{0}' is too long. ", thumbnailName));
214
+
215
+ }
216
+
217
+
218
+
219
+ var meshFilters = Source.GetComponentsInChildren<MeshFilter>();
220
+
221
+ var meshesName = meshFilters.Select(x => x.sharedMesh.name).Distinct();
222
+
223
+ foreach (var meshName in meshesName)
224
+
225
+ {
226
+
227
+ if (IsFileNameLengthTooLong(meshName))
228
+
229
+ yield return Validation.Error(string.Format("FileName '{0}' is too long. ", meshName));
230
+
231
+ }
232
+
233
+
234
+
235
+ var skinnedmeshRenderers = Source.GetComponentsInChildren<SkinnedMeshRenderer>();
236
+
237
+ var skinnedmeshesName = skinnedmeshRenderers.Select(x => x.sharedMesh.name).Distinct();
238
+
239
+ foreach (var skinnedmeshName in skinnedmeshesName)
240
+
241
+ {
242
+
243
+ if (IsFileNameLengthTooLong(skinnedmeshName))
244
+
245
+ yield return Validation.Error(string.Format("FileName '{0}' is too long. ", skinnedmeshName));
246
+
247
+ }
248
+
249
+ }
250
+
251
+ ```
252
+
51
253
 
52
254
 
53
255
  ```C#(VRMExporterWizard.cs)
@@ -104,7 +306,7 @@
104
306
 
105
307
  wiz.m_settings.InitializeFrom(go);
106
308
 
107
-
309
+ ///エラー箇所です
108
310
 
109
311
  wiz.OnWizardUpdate();
110
312
 
@@ -194,7 +396,7 @@
194
396
 
195
397
  var errorBuilder = new StringBuilder();
196
398
 
197
-
399
+ ///エラー箇所です
198
400
 
199
401
  foreach (var validation in m_settings.Validate())
200
402
 
@@ -300,6 +502,8 @@
300
502
 
301
503
  {
302
504
 
505
+ ///エラー箇所です
506
+
303
507
  VRMExporterWizard.CreateWizard();
304
508
 
305
509
  }