Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/freestyle')
-rw-r--r--source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp23
-rw-r--r--source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp27
2 files changed, 27 insertions, 23 deletions
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
index 53c2b1d235b..c37beba2b6f 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
+++ b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
@@ -14,6 +14,7 @@
#include <sstream>
+using blender::float3;
using blender::Span;
namespace Freestyle {
@@ -401,15 +402,19 @@ void BlenderFileLoader::insertShapeNode(Object *ob, Mesh *me, int id)
{
char *name = ob->id.name + 2;
- const Span<MVert> mesh_verts = me->verts();
+ const Span<float3> mesh_positions = me->positions();
const Span<MPoly> mesh_polys = me->polys();
const Span<MLoop> mesh_loops = me->loops();
// Compute loop triangles
int tottri = poly_to_tri_count(me->totpoly, me->totloop);
MLoopTri *mlooptri = (MLoopTri *)MEM_malloc_arrayN(tottri, sizeof(*mlooptri), __func__);
- BKE_mesh_recalc_looptri(
- mesh_loops.data(), mesh_polys.data(), mesh_verts.data(), me->totloop, me->totpoly, mlooptri);
+ BKE_mesh_recalc_looptri(mesh_loops.data(),
+ mesh_polys.data(),
+ reinterpret_cast<const float(*)[3]>(mesh_positions.data()),
+ me->totloop,
+ me->totpoly,
+ mlooptri);
// Compute loop normals
BKE_mesh_calc_normals_split(me);
@@ -444,9 +449,9 @@ void BlenderFileLoader::insertShapeNode(Object *ob, Mesh *me, int id)
for (int a = 0; a < tottri; a++) {
const MLoopTri *lt = &mlooptri[a];
- copy_v3_v3(v1, mesh_verts[mesh_loops[lt->tri[0]].v].co);
- copy_v3_v3(v2, mesh_verts[mesh_loops[lt->tri[1]].v].co);
- copy_v3_v3(v3, mesh_verts[mesh_loops[lt->tri[2]].v].co);
+ copy_v3_v3(v1, mesh_positions[mesh_loops[lt->tri[0]].v]);
+ copy_v3_v3(v2, mesh_positions[mesh_loops[lt->tri[1]].v]);
+ copy_v3_v3(v3, mesh_positions[mesh_loops[lt->tri[2]].v]);
mul_m4_v3(obmat, v1);
mul_m4_v3(obmat, v2);
@@ -517,9 +522,9 @@ void BlenderFileLoader::insertShapeNode(Object *ob, Mesh *me, int id)
const MPoly *mp = &mesh_polys[lt->poly];
Material *mat = BKE_object_material_get(ob, material_indices[lt->poly] + 1);
- copy_v3_v3(v1, mesh_verts[mesh_loops[lt->tri[0]].v].co);
- copy_v3_v3(v2, mesh_verts[mesh_loops[lt->tri[1]].v].co);
- copy_v3_v3(v3, mesh_verts[mesh_loops[lt->tri[2]].v].co);
+ copy_v3_v3(v1, mesh_positions[mesh_loops[lt->tri[0]].v]);
+ copy_v3_v3(v2, mesh_positions[mesh_loops[lt->tri[1]].v]);
+ copy_v3_v3(v3, mesh_positions[mesh_loops[lt->tri[2]].v]);
mul_m4_v3(obmat, v1);
mul_m4_v3(obmat, v2);
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
index 64e7be5169c..ee3731ca07c 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
+++ b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
@@ -55,6 +55,8 @@
#include <climits>
+using blender::float3;
+
namespace Freestyle {
const char *BlenderStrokeRenderer::uvNames[] = {"along_stroke", "along_stroke_tips"};
@@ -577,8 +579,8 @@ void BlenderStrokeRenderer::GenerateStrokeMesh(StrokeGroup *group, bool hasTex)
mesh->totloop = group->totloop;
mesh->totcol = group->materials.size();
- MVert *verts = (MVert *)CustomData_add_layer(
- &mesh->vdata, CD_MVERT, CD_SET_DEFAULT, nullptr, mesh->totvert);
+ float3 *mesh_positions = (float3 *)CustomData_add_layer_named(
+ &mesh->vdata, CD_PROP_FLOAT3, CD_SET_DEFAULT, nullptr, mesh->totvert, "position");
MEdge *edges = (MEdge *)CustomData_add_layer(
&mesh->edata, CD_MEDGE, CD_SET_DEFAULT, nullptr, mesh->totedge);
MPoly *polys = (MPoly *)CustomData_add_layer(
@@ -664,19 +666,17 @@ void BlenderStrokeRenderer::GenerateStrokeMesh(StrokeGroup *group, bool hasTex)
else {
if (!visible) {
// first vertex
- verts->co[0] = svRep[0]->point2d()[0];
- verts->co[1] = svRep[0]->point2d()[1];
- verts->co[2] = get_stroke_vertex_z();
+ mesh_positions[vertex_index][0] = svRep[0]->point2d()[0];
+ mesh_positions[vertex_index][1] = svRep[0]->point2d()[1];
+ mesh_positions[vertex_index][2] = get_stroke_vertex_z();
- ++verts;
++vertex_index;
// second vertex
- verts->co[0] = svRep[1]->point2d()[0];
- verts->co[1] = svRep[1]->point2d()[1];
- verts->co[2] = get_stroke_vertex_z();
+ mesh_positions[vertex_index][0] = svRep[1]->point2d()[0];
+ mesh_positions[vertex_index][1] = svRep[1]->point2d()[1];
+ mesh_positions[vertex_index][2] = get_stroke_vertex_z();
- ++verts;
++vertex_index;
// first edge
@@ -688,10 +688,9 @@ void BlenderStrokeRenderer::GenerateStrokeMesh(StrokeGroup *group, bool hasTex)
visible = true;
// vertex
- verts->co[0] = svRep[2]->point2d()[0];
- verts->co[1] = svRep[2]->point2d()[1];
- verts->co[2] = get_stroke_vertex_z();
- ++verts;
+ mesh_positions[vertex_index][0] = svRep[2]->point2d()[0];
+ mesh_positions[vertex_index][1] = svRep[2]->point2d()[1];
+ mesh_positions[vertex_index][2] = get_stroke_vertex_z();
++vertex_index;
// edges