~siretart/ubuntu/utopic/blender/libav10

« back to all changes in this revision

Viewing changes to extern/eltopo/eltopo3d/broadphase_blenderbvh.cpp

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2012-07-23 08:54:18 UTC
  • mfrom: (14.2.16 sid)
  • mto: (14.2.19 sid)
  • mto: This revision was merged to the branch mainline in revision 42.
  • Revision ID: package-import@ubuntu.com-20120723085418-9foz30v6afaf5ffs
Tags: 2.63a-2
* debian/: Cycles support added (Closes: #658075)
  For now, this top feature has been enabled only
  on [any-amd64 any-i386] architectures because
  of OpenImageIO failing on all others
* debian/: scripts installation path changed
  from /usr/lib to /usr/share:
  + debian/patches/: patchset re-worked for path changing
  + debian/control: "Breaks" field added on yafaray-exporter

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#if 0
 
2
// ---------------------------------------------------------
 
3
//
 
4
//  broadphase_blenderbvh.cpp
 
5
//  Joseph Eagar 2010
 
6
//  
 
7
//  Broad phase collision detection culling using blender's kdop bvh.
 
8
//
 
9
// ---------------------------------------------------------
 
10
 
 
11
// ---------------------------------------------------------
 
12
// Includes
 
13
// ---------------------------------------------------------
 
14
 
 
15
#include <broadphasegrid.h>
 
16
#include <dynamicsurface.h>
 
17
 
 
18
// ---------------------------------------------------------
 
19
// Global externs
 
20
// ---------------------------------------------------------
 
21
 
 
22
// ---------------------------------------------------------
 
23
// Local constants, typedefs, macros
 
24
// ---------------------------------------------------------
 
25
 
 
26
// ---------------------------------------------------------
 
27
// Static function definitions
 
28
// ---------------------------------------------------------
 
29
 
 
30
// ---------------------------------------------------------
 
31
// Member function definitions
 
32
// ---------------------------------------------------------
 
33
 
 
34
 
 
35
// --------------------------------------------------------
 
36
///
 
37
/// Rebuild acceleration grids according to the given triangle mesh
 
38
///
 
39
// --------------------------------------------------------
 
40
 
 
41
static void build_bvh_tree
 
42
void BroadPhaseGrid::update_broad_phase_static( const DynamicSurface& surface )
 
43
{
 
44
   double grid_scale = surface.get_average_edge_length();
 
45
   
 
46
   {
 
47
      unsigned int num_vertices = surface.m_positions.size();
 
48
      std::vector<Vec3d> vertex_xmins(num_vertices), vertex_xmaxs(num_vertices);
 
49
      for(unsigned int i = 0; i < num_vertices; i++)
 
50
      {
 
51
         surface.vertex_static_bounds(i, vertex_xmins[i], vertex_xmaxs[i]);
 
52
      }      
 
53
      build_acceleration_grid( m_vertex_grid, vertex_xmins, vertex_xmaxs, grid_scale, surface.m_proximity_epsilon );
 
54
   }
 
55
   
 
56
   {
 
57
      unsigned int num_edges = surface.m_mesh.m_edges.size();
 
58
      std::vector<Vec3d> edge_xmins(num_edges), edge_xmaxs(num_edges);
 
59
      for(unsigned int i = 0; i < num_edges; i++)
 
60
      {
 
61
         surface.edge_static_bounds(i, edge_xmins[i], edge_xmaxs[i]);
 
62
      }      
 
63
      if (num_edges)
 
64
                  build_acceleration_grid( m_edge_grid, edge_xmins, edge_xmaxs, grid_scale, surface.m_proximity_epsilon );
 
65
   }
 
66
   
 
67
   {
 
68
      unsigned int num_triangles = surface.m_mesh.m_tris.size();
 
69
      std::vector<Vec3d> tri_xmins(num_triangles), tri_xmaxs(num_triangles);
 
70
      for(unsigned int i = 0; i < num_triangles; i++)
 
71
      {
 
72
         surface.triangle_static_bounds(i, tri_xmins[i], tri_xmaxs[i]);
 
73
      }   
 
74
          
 
75
      if (num_triangles)
 
76
                  build_acceleration_grid( m_triangle_grid, tri_xmins, tri_xmaxs, grid_scale, surface.m_proximity_epsilon );  
 
77
   }
 
78
   
 
79
}
 
80
 
 
81
 
 
82
 
 
83
// --------------------------------------------------------
 
84
///
 
85
/// Rebuild acceleration grids according to the given triangle mesh
 
86
///
 
87
// --------------------------------------------------------
 
88
 
 
89
void BroadPhaseGrid::update_broad_phase_continuous( const DynamicSurface& surface )
 
90
{
 
91
   double grid_scale = surface.get_average_edge_length();
 
92
   
 
93
   {
 
94
      unsigned int num_vertices = surface.m_positions.size();
 
95
      std::vector<Vec3d> vertex_xmins(num_vertices), vertex_xmaxs(num_vertices);
 
96
      for(unsigned int i = 0; i < num_vertices; i++)
 
97
      {           
 
98
         surface.vertex_continuous_bounds(i, vertex_xmins[i], vertex_xmaxs[i]);
 
99
      }
 
100
          
 
101
      build_acceleration_grid( m_vertex_grid, vertex_xmins, vertex_xmaxs, grid_scale, surface.m_proximity_epsilon );
 
102
   }
 
103
   
 
104
   {
 
105
      unsigned int num_edges = surface.m_mesh.m_edges.size();
 
106
      std::vector<Vec3d> edge_xmins(num_edges), edge_xmaxs(num_edges);
 
107
      for(unsigned int i = 0; i < num_edges; i++)
 
108
      {
 
109
         surface.edge_continuous_bounds(i, edge_xmins[i], edge_xmaxs[i]);
 
110
      }
 
111
      if (num_edges)
 
112
                  build_acceleration_grid( m_edge_grid, edge_xmins, edge_xmaxs, grid_scale, surface.m_proximity_epsilon );
 
113
   }
 
114
   
 
115
   {
 
116
      unsigned int num_triangles = surface.m_mesh.m_tris.size();
 
117
      std::vector<Vec3d> tri_xmins(num_triangles), tri_xmaxs(num_triangles);
 
118
      for(unsigned int i = 0; i < num_triangles; i++)
 
119
      {            
 
120
         surface.triangle_continuous_bounds(i, tri_xmins[i], tri_xmaxs[i]);
 
121
      }
 
122
      if (num_triangles)
 
123
                  build_acceleration_grid( m_triangle_grid, tri_xmins, tri_xmaxs, grid_scale, surface.m_proximity_epsilon );  
 
124
   }
 
125
   
 
126
}
 
127
 
 
128
#endif