39 _minEdgeSize = DBL_MAX;
53 cout <<
"\n=== Importing triangular meshes into Blender ===" << endl;
107 #define CLIPPED_BY_NEAR -1
108 #define NOT_CLIPPED 0
109 #define CLIPPED_BY_FAR 1
116 int numClipped,
sum, numTris = 0;
121 numClipped =
sum = 0;
122 for (
int i = 0; i < 3; i++) {
143 switch (numClipped) {
187 for (
int i = 0; i < 3; i++) {
190 double t = (
z - p[2]) / d[2];
191 c[0] = p[0] +
t * d[0];
192 c[1] = p[1] +
t * d[1];
200 float triCoords[][3],
204 float triNormals[][3],
228 for (i = 0; i < 3; i++) {
233 edgeMarks[k] = em[i];
238 edgeMarks[k] =
false;
242 else if (clip[i] != clip[j]) {
246 edgeMarks[k] = em[i];
252 edgeMarks[k] = em[i];
256 edgeMarks[k] =
false;
277 float *fv[3], *fn[3];
296 for (i = 0; i < 3; i++) {
302 for (j = 0; j < 3; j++) {
314 if (_minEdgeSize >
len) {
353 const float eps = 1.0e-6;
354 const float eps_sq =
eps *
eps;
364 printf(
"BlenderFileLoader::testDegenerateTriangle = 1\n");
374 printf(
"BlenderFileLoader::testDegenerateTriangle = 2\n");
381 printf(
"BlenderFileLoader::testDegenerateTriangle = 0\n");
393 if (!
ELEM(mloop_next->
v, medge->
v1, medge->
v2)) {
403 char *name = ob->
id.
name + 2;
412 float(*lnors)[3] =
nullptr;
427 float viewinv[4][4], viewmat[4][4];
432 float obmat[4][4], nmat[4][4];
439 unsigned numFaces = 0;
440 float v1[3],
v2[3], v3[3];
441 float n1[3], n2[3], n3[3], facenormal[3];
443 for (
int a = 0;
a < tottri;
a++) {
462 cout <<
"numFaces " << numFaces << endl;
474 unsigned vSize = 3 * 3 * numFaces;
475 float *vertices =
new float[vSize];
476 unsigned nSize = vSize;
477 float *
normals =
new float[nSize];
478 unsigned *numVertexPerFaces =
new unsigned[numFaces];
479 vector<Material *> meshMaterials;
480 vector<FrsMaterial> meshFrsMaterials;
484 for (i = 0; i < numFaces; i++) {
486 numVertexPerFaces[i] = 3;
491 unsigned viSize = 3 * numFaces;
492 unsigned *VIndices =
new unsigned[viSize];
493 unsigned niSize = viSize;
494 unsigned *NIndices =
new unsigned[niSize];
495 unsigned *MIndices =
new unsigned[viSize];
500 ls.
pm = faceEdgeMarks;
511 for (
int a = 0;
a < tottri;
a++) {
555 bool em1 =
false, em2 =
false, em3 =
false;
571 if (meshMaterials.empty()) {
572 meshMaterials.push_back(mat);
573 meshFrsMaterials.push_back(tmpMat);
581 for (vector<Material *>::iterator it = meshMaterials.begin(), itend = meshMaterials.end();
592 meshMaterials.push_back(mat);
593 meshFrsMaterials.push_back(tmpMat);
598 float triCoords[5][3], triNormals[5][3];
602 numTris, triCoords,
v1,
v2, v3, triNormals, n1, n2, n3, edgeMarks, em1, em2, em3, clip);
603 for (i = 0; i < numTris; i++) {
612 (i == 0) ? edgeMarks[0] :
false,
614 (i == numTris - 1) ? edgeMarks[i + 2] :
false);
623 float *cleanVertices =
nullptr;
625 unsigned int *cleanVIndices =
nullptr;
628 vertices, vSize, VIndices, viSize, &cleanVertices, &cvSize, &cleanVIndices);
630 float *cleanNormals =
nullptr;
632 unsigned int *cleanNIndices =
nullptr;
635 normals, nSize, NIndices, niSize, &cleanNormals, &cnSize, &cleanNIndices);
639 unsigned int mindex = 0;
640 for (vector<FrsMaterial>::iterator m = meshFrsMaterials.begin(), mend = meshFrsMaterials.end();
660 vector<detri_t> detriList;
661 Vec3r zero(0.0, 0.0, 0.0);
662 unsigned vi0, vi1, vi2;
663 for (i = 0; i < viSize; i += 3) {
665 vi0 = cleanVIndices[i];
666 vi1 = cleanVIndices[i + 1];
667 vi2 = cleanVIndices[i + 2];
668 Vec3r v0(cleanVertices[vi0], cleanVertices[vi0 + 1], cleanVertices[vi0 + 2]);
669 Vec3r v1(cleanVertices[vi1], cleanVertices[vi1 + 1], cleanVertices[vi1 + 2]);
670 Vec3r v2(cleanVertices[vi2], cleanVertices[vi2 + 1], cleanVertices[vi2 + 2]);
671 if (v0 ==
v1 || v0 ==
v2 ||
v1 ==
v2) {
674 if (GeomUtils::distPointSegment<Vec3r>(v0,
v1,
v2) < 1.0e-6) {
679 else if (GeomUtils::distPointSegment<Vec3r>(
v1, v0,
v2) < 1.0e-6) {
684 else if (GeomUtils::distPointSegment<Vec3r>(
v2, v0,
v1) < 1.0e-6) {
695 for (
unsigned int j = 0; j < viSize; j += 3) {
699 vi0 = cleanVIndices[j];
700 vi1 = cleanVIndices[j + 1];
701 vi2 = cleanVIndices[j + 2];
702 Vec3r v0(cleanVertices[vi0], cleanVertices[vi0 + 1], cleanVertices[vi0 + 2]);
703 Vec3r v1(cleanVertices[vi1], cleanVertices[vi1 + 1], cleanVertices[vi1 + 2]);
704 Vec3r v2(cleanVertices[vi2], cleanVertices[vi2 + 1], cleanVertices[vi2 + 2]);
705 if (detri.
viP == vi0 && (detri.
viA == vi1 || detri.
viB == vi1)) {
706 detri.
v += (
v2 - v0);
709 else if (detri.
viP == vi0 && (detri.
viA == vi2 || detri.
viB == vi2)) {
710 detri.
v += (
v1 - v0);
713 else if (detri.
viP == vi1 && (detri.
viA == vi0 || detri.
viB == vi0)) {
714 detri.
v += (
v2 -
v1);
717 else if (detri.
viP == vi1 && (detri.
viA == vi2 || detri.
viB == vi2)) {
718 detri.
v += (v0 -
v1);
721 else if (detri.
viP == vi2 && (detri.
viA == vi0 || detri.
viB == vi0)) {
722 detri.
v += (
v1 -
v2);
725 else if (detri.
viP == vi2 && (detri.
viA == vi1 || detri.
viB == vi1)) {
726 detri.
v += (v0 -
v2);
733 detriList.push_back(detri);
736 if (!detriList.empty()) {
737 vector<detri_t>::iterator
v;
738 for (
v = detriList.begin();
v != detriList.end();
v++) {
741 cleanVertices[detri.
viP] = cleanVertices[detri.
viA];
742 cleanVertices[detri.
viP + 1] = cleanVertices[detri.
viA + 1];
743 cleanVertices[detri.
viP + 2] = cleanVertices[detri.
viA + 2];
745 else if (detri.
v.
norm() > 0.0) {
746 cleanVertices[detri.
viP] += 1.0e-5 * detri.
v.
x();
747 cleanVertices[detri.
viP + 1] += 1.0e-5 * detri.
v.
y();
748 cleanVertices[detri.
viP + 2] += 1.0e-5 * detri.
v.
z();
752 printf(
"Warning: Object %s contains %lu degenerated triangle%s (strokes may be incorrect)\n",
754 (
long unsigned int)detriList.size(),
755 (detriList.size() > 1) ?
"s" :
"");
766 meshFrsMaterials.size(),
typedef float(TangentPoint)[2]
bool CustomData_has_layer(const struct CustomData *data, int type)
void * CustomData_get_layer(const struct CustomData *data, int type)
struct Material * BKE_object_material_get(struct Object *ob, short act)
void BKE_mesh_recalc_looptri(const struct MLoop *mloop, const struct MPoly *mpoly, const struct MVert *mvert, int totloop, int totpoly, struct MLoopTri *mlooptri)
void BKE_mesh_calc_normals_split(struct Mesh *mesh)
General operations, lookup, etc. for blender objects.
void BKE_object_to_mesh_clear(struct Object *object)
struct Mesh * BKE_object_to_mesh(struct Depsgraph *depsgraph, struct Object *object, bool preserve_all_data_layers)
int BKE_object_visibility(const struct Object *ob, const int dag_eval_mode)
float dist_squared_to_line_segment_v3(const float p[3], const float l1[3], const float l2[3])
MINLINE int poly_to_tri_count(const int poly_count, const int corner_count)
float area_tri_v3(const float v1[3], const float v2[3], const float v3[3])
float normal_tri_v3(float n[3], const float v1[3], const float v2[3], const float v3[3])
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void mul_mat3_m4_v3(const float M[4][4], float r[3])
bool invert_m4_m4(float R[4][4], const float A[4][4])
void mul_m4_v3(const float M[4][4], float r[3])
void transpose_m4(float R[4][4])
MINLINE float len_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE float normalize_v3(float r[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE bool equals_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
struct Depsgraph Depsgraph
#define DEG_OBJECT_ITER_END
eEvaluationMode DEG_get_mode(const Depsgraph *graph)
#define DEG_OBJECT_ITER_BEGIN(graph_, instance_, flag_)
@ DEG_ITER_OBJECT_FLAG_LINKED_DIRECTLY
@ DEG_ITER_OBJECT_FLAG_VISIBLE
@ DEG_ITER_OBJECT_FLAG_DUPLI
@ DEG_ITER_OBJECT_FLAG_LINKED_VIA_SET
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
@ FREESTYLE_FACE_SMOOTHNESS_FLAG
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble z
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert * v
static T sum(const btAlignedObjectArray< T > &items)
BlenderFileLoader(Render *re, ViewLayer *view_layer, Depsgraph *depsgraph)
RenderMonitor * _pRenderMonitor
void clipLine(float v1[3], float v2[3], float c[3], float z)
void addTriangle(struct LoaderState *ls, float v1[3], float v2[3], float v3[3], float n1[3], float n2[3], float n3[3], bool fm, bool em1, bool em2, bool em3)
int testDegenerateTriangle(float v1[3], float v2[3], float v3[3])
void insertShapeNode(Object *ob, Mesh *mesh, int id)
void clipTriangle(int numTris, float triCoords[][3], float v1[3], float v2[3], float v3[3], float triNormals[][3], float n1[3], float n2[3], float n3[3], bool edgeMarks[5], bool em1, bool em2, bool em3, const int clip[3])
virtual ~BlenderFileLoader()
int countClippedFaces(float v1[3], float v2[3], float v3[3], int clip[3])
void setSpecular(const float r, const float g, const float b, const float a)
void setDiffuse(const float r, const float g, const float b, const float a)
void setShininess(const float s)
void setLine(const float r, const float g, const float b, const float a)
void setPriority(const int priority)
static void CleanIndexedVertexArray(const float *iVertices, unsigned iVSize, const unsigned *iIndices, unsigned iISize, float **oVertices, unsigned *oVSize, unsigned **oIndices)
static const FaceEdgeMark EDGE_MARK_V2V3
unsigned char FaceEdgeMark
static const FaceEdgeMark EDGE_MARK_V1V2
static const FaceEdgeMark FACE_MARK
static const FaceEdgeMark EDGE_MARK_V3V1
virtual void AddChild(Node *iChild)
virtual void AddRep(Rep *iRep)
void setFrsMaterial(const FrsMaterial &iMaterial)
void setLibraryPath(const string &path)
virtual void setBBox(const BBox< Vec3f > &iBox)
void setName(const string &name)
Vec< T, N > & normalizeSafe()
const Depsgraph * depsgraph
static float normals[][3]
void RE_GetCameraModelMatrix(Render *re, struct Object *camera, float r_modelmat[4][4])
struct Object * RE_GetCamera(Render *re)
void *(* MEM_malloc_arrayN)(size_t len, size_t size, const char *str)
void(* MEM_freeN)(void *vmemh)
VecMat::Vec3< real > Vec3r
static bool testEdgeMark(Mesh *me, FreestyleEdge *fed, const MLoopTri *lt, int i)
static void area(int d1, int d2, int e1, int e2, float weights[2])
IndexedFaceSet::FaceEdgeMark * pm
struct CustomData pdata ldata
struct FreestyleConfig freestyle_config