Normand Briere
2019-06-24 c67da2e5d8655704601d6d06e8bc60aabe212253
BoundaryRep.java
....@@ -3857,6 +3857,28 @@
38573857 Trim(true/*wastrim*/,true,crease,wasstrip,false);
38583858 }
38593859
3860
+ void GenerateNormalsMesh()
3861
+ {
3862
+ if (stripified)
3863
+ {
3864
+ Unstripify();
3865
+ }
3866
+
3867
+ if (trimmed)
3868
+ {
3869
+ normals = null;
3870
+ }
3871
+ else
3872
+ {
3873
+ for (int i=VertexCount(); --i>=0;)
3874
+ {
3875
+ Vertex v = GetVertex(i);
3876
+
3877
+ v.norm = null;
3878
+ }
3879
+ }
3880
+ }
3881
+
38603882 void GenNormalsJME()
38613883 {
38623884 assert(false);
....@@ -4013,8 +4035,9 @@
40134035 triangles[i] = i;
40144036 }
40154037
4016
- Untrim();
4017
- MergeNormals();
4038
+// Untrim();
4039
+ if (!trimmed)
4040
+ MergeNormals();
40184041 }
40194042 }
40204043
....@@ -4076,8 +4099,9 @@
40764099 triangles[0] = 3;
40774100 }
40784101
4079
- Untrim();
4080
- MergeNormals();
4102
+ //Untrim();
4103
+ if (!trimmed)
4104
+ MergeNormals();
40814105 }
40824106
40834107 /*
....@@ -4131,6 +4155,8 @@
41314155
41324156 void MergeNormals()
41334157 {
4158
+ assert(!trimmed);
4159
+
41344160 boolean smooth = Grafreed.smoothmode;
41354161 boolean link = Grafreed.linkUV;
41364162 Grafreed.smoothmode = true;
....@@ -4942,9 +4968,18 @@
49424968 v./*pos.*/y = positions[i3 + 1];
49434969 v./*pos.*/z = positions[i3 + 2];
49444970
4945
- v.norm.x = normals[i3];
4946
- v.norm.y = normals[i3 + 1];
4947
- v.norm.z = normals[i3 + 2];
4971
+ if (normals == null)
4972
+ {
4973
+ v.norm.x = 0;
4974
+ v.norm.y = 0;
4975
+ v.norm.z = 0;
4976
+ }
4977
+ else
4978
+ {
4979
+ v.norm.x = normals[i3];
4980
+ v.norm.y = normals[i3 + 1];
4981
+ v.norm.z = normals[i3 + 2];
4982
+ }
49484983
49494984 v.s = uvmap[i2];
49504985 v.t = uvmap[i2 + 1];