@@ -688,29 +688,29 @@ boost::python::tuple GetOpenVDBGridInfo(const string &filePathStr, const string
688
688
// ------------------------------------------------------------------------------
689
689
690
690
static bool Scene_DefineBlenderMesh (luxcore::detail::SceneImpl *scene, const string &name,
691
- const size_t loopTriCount, const size_t loopTriPtr,
691
+ const size_t loopTriCount, const size_t loopTriPtr, const size_t loopTriPolyPtr,
692
692
const size_t loopPtr,
693
693
const size_t vertPtr,
694
- const size_t normalPtr,
695
- const size_t polyPtr,
696
- const size_t sharpPtr,
694
+ const size_t normalPtr,
695
+ const size_t sharpPtr,
697
696
const bool sharpAttr,
698
697
const boost::python::object &loopUVsPtrList,
699
698
const boost::python::object &loopColsPtrList,
700
699
const size_t meshPtr,
701
700
const short matIndex,
702
701
const luxrays::Transform *trans,
703
- const boost::python::tuple & blenderVersion,
704
- const boost::python::object & material_indices,
705
- const boost::python::object &loopTriCustomNormals) {
702
+ const boost::python::tuple& blenderVersion,
703
+ const boost::python::object& material_indices,
704
+ const boost::python::object&loopTriCustomNormals) {
706
705
707
706
const MLoopTri *loopTris = reinterpret_cast <const MLoopTri *>(loopTriPtr);
708
- const u_int *loops = reinterpret_cast <const u_int *>(loopPtr);
709
- const MPoly *polygons = reinterpret_cast <const MPoly *>(polyPtr);
707
+ const int * loopTriPolys = reinterpret_cast <const int *>(loopTriPolyPtr);
708
+
709
+ const u_int * loops = reinterpret_cast <const u_int *>(loopPtr);
710
710
const float (*normals)[3 ] = nullptr ;
711
711
normals = reinterpret_cast <const float (*)[3 ]>(normalPtr);
712
712
713
- const bool * sharpList = reinterpret_cast <const bool *>(sharpPtr);
713
+ const bool * sharpList = reinterpret_cast <const bool *>(sharpPtr);
714
714
715
715
extract<boost::python::list> getUVPtrList (loopUVsPtrList);
716
716
extract<boost::python::list> getColPtrList (loopColsPtrList);
@@ -779,21 +779,16 @@ static bool Scene_DefineBlenderMesh(luxcore::detail::SceneImpl *scene, const str
779
779
const float rgbScale = 1 .f / 255 .f ;
780
780
781
781
for (u_int loopTriIndex = 0 ; loopTriIndex < loopTriCount; ++loopTriIndex) {
782
- const MLoopTri &loopTri = loopTris[loopTriIndex];
783
- const MPoly &poly = polygons[loopTri.poly ];
784
-
785
- if (blenderVersionMajor == 3 && blenderVersionMinor >= 4 && !material_indices.is_none ()) {
786
- if (material_indices[loopTri.poly ] != matIndex)
787
- continue ;
788
- } else {
789
- if (poly.mat_nr != matIndex)
790
- continue ;
791
- }
782
+ const MLoopTri &loopTri = loopTris[loopTriIndex];
783
+ const int poly = loopTriPolys[loopTriIndex];
784
+
785
+ if (material_indices[poly] != matIndex)
786
+ continue ;
792
787
793
788
u_int vertIndices[3 ];
794
789
795
790
bool smooth = true ;
796
- if (sharpAttr) smooth = !sharpList[loopTri. poly ];
791
+ if (sharpAttr) smooth = !sharpList[poly];
797
792
798
793
if (smooth) {
799
794
// Smooth shaded, use the Blender vertex normal
@@ -979,9 +974,10 @@ static bool Scene_DefineBlenderMesh(luxcore::detail::SceneImpl *scene, const str
979
974
vertIndices[i] = vertIndex;
980
975
}
981
976
}
977
+
982
978
}
983
979
984
- tmpMeshTris.emplace_back (Triangle (vertIndices[0 ], vertIndices[1 ], vertIndices[2 ]));
980
+ tmpMeshTris.emplace_back (Triangle (vertIndices[0 ], vertIndices[1 ], vertIndices[2 ]));
985
981
}
986
982
987
983
// Check if there wasn't any triangles with matIndex
@@ -1035,21 +1031,20 @@ static bool Scene_DefineBlenderMesh(luxcore::detail::SceneImpl *scene, const str
1035
1031
}
1036
1032
1037
1033
boost::python::list Scene_DefineBlenderMesh1 (luxcore::detail::SceneImpl *scene, const string &name,
1038
- const size_t loopTriCount, const size_t loopTriPtr,
1034
+ const size_t loopTriCount, const size_t loopTriPtr, const size_t loopTriPolyPtr,
1039
1035
const size_t loopPtr,
1040
1036
const size_t vertPtr,
1041
- const size_t normalPtr,
1042
- const size_t polyPtr,
1043
- const size_t sharpPtr,
1037
+ const size_t normalPtr,
1038
+ const size_t sharpPtr,
1044
1039
const bool sharpAttr,
1045
1040
const boost::python::object &loopUVsPtrList,
1046
1041
const boost::python::object &loopColsPtrList,
1047
1042
const size_t meshPtr,
1048
1043
const u_int materialCount,
1049
1044
const boost::python::object &transformation,
1050
- const boost::python::tuple &blenderVersion,
1051
- const boost::python::object& material_indices,
1052
- const boost::python::object& loopTriCustomNormals) {
1045
+ const boost::python::tuple &blenderVersion,
1046
+ const boost::python::object & material_indices,
1047
+ const boost::python::object & loopTriCustomNormals) {
1053
1048
1054
1049
// Get the transformation if required
1055
1050
bool hasTransformation = false ;
@@ -1063,13 +1058,13 @@ boost::python::list Scene_DefineBlenderMesh1(luxcore::detail::SceneImpl *scene,
1063
1058
for (u_int matIndex = 0 ; matIndex < materialCount; ++matIndex) {
1064
1059
const string meshName = (boost::format (name + " %03d" ) % matIndex).str ();
1065
1060
1066
- if (Scene_DefineBlenderMesh (scene, meshName, loopTriCount, loopTriPtr,
1067
- loopPtr, vertPtr, normalPtr, polyPtr, sharpPtr, sharpAttr,
1061
+ if (Scene_DefineBlenderMesh (scene, meshName, loopTriCount, loopTriPtr, loopTriPolyPtr,
1062
+ loopPtr, vertPtr, normalPtr, sharpPtr, sharpAttr,
1068
1063
loopUVsPtrList, loopColsPtrList,
1069
1064
meshPtr,
1070
1065
matIndex,
1071
1066
hasTransformation ? &trans : NULL ,
1072
- blenderVersion,
1067
+ blenderVersion,
1073
1068
material_indices,
1074
1069
loopTriCustomNormals)) {
1075
1070
boost::python::list meshInfo;
@@ -1083,22 +1078,21 @@ boost::python::list Scene_DefineBlenderMesh1(luxcore::detail::SceneImpl *scene,
1083
1078
}
1084
1079
1085
1080
boost::python::list Scene_DefineBlenderMesh2 (luxcore::detail::SceneImpl *scene, const string &name,
1086
- const size_t loopTriCount, const size_t loopTriPtr,
1081
+ const size_t loopTriCount, const size_t loopTriPtr, const size_t loopTriPolyPtr,
1087
1082
const size_t loopPtr,
1088
1083
const size_t vertPtr,
1089
- const size_t normalPtr,
1090
- const size_t polyPtr,
1091
- const size_t sharpPtr,
1084
+ const size_t normalPtr,
1085
+ const size_t sharpPtr,
1092
1086
const bool sharpAttr,
1093
1087
const boost::python::object &loopUVsPtrList,
1094
1088
const boost::python::object &loopColsPtrList,
1095
1089
const size_t meshPtr,
1096
1090
const u_int materialCount,
1097
1091
const boost::python::tuple &blenderVersion,
1098
- const boost::python::object& material_indices,
1092
+ const boost::python::object & material_indices,
1099
1093
const boost::python::object &loopTriCustomNormals) {
1100
- return Scene_DefineBlenderMesh1 (scene, name, loopTriCount, loopTriPtr,
1101
- loopPtr, vertPtr, normalPtr, polyPtr, sharpPtr, sharpAttr, loopUVsPtrList, loopColsPtrList,
1094
+ return Scene_DefineBlenderMesh1 (scene, name, loopTriCount, loopTriPtr, loopTriPolyPtr,
1095
+ loopPtr, vertPtr, normalPtr, sharpPtr, sharpAttr, loopUVsPtrList, loopColsPtrList,
1102
1096
meshPtr, materialCount, boost::python::object (), blenderVersion, material_indices,
1103
1097
loopTriCustomNormals);
1104
1098
}
0 commit comments