Changeset 258
- Timestamp:
- 06/15/14 13:07:02 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/formats/md5_loader.cc
r241 r258 10 10 #include "nv/logging.hh" 11 11 #include "nv/io/std_stream.hh" 12 #include "nv/profiler.hh" 12 13 #include <cstring> 13 14 … … 211 212 vtc.tangent = glm::vec3(0); 212 213 214 std::sort( mdata->m_weights.begin() + vdata.start_weight, mdata->m_weights.begin() + vdata.start_weight + vdata.weight_count, [](const md5_weight& a, const md5_weight& b) -> bool { return a.bias > b.bias; } ); 215 216 if ( vdata.weight_count > 4 ) 217 { 218 float sum = 0.0f; 219 for ( size_t j = 0; j < 4; ++j ) 220 { 221 sum += mdata->m_weights[vdata.start_weight + j].bias; 222 } 223 float ratio = 1.0f / sum; 224 for ( size_t j = 0; j < 4; ++j ) 225 { 226 mdata->m_weights[vdata.start_weight + j].bias = 227 ratio * mdata->m_weights[vdata.start_weight + j].bias; 228 } 229 vdata.weight_count = 4; 230 } 231 213 232 for ( size_t j = 0; j < vdata.weight_count; ++j ) 214 233 { … … 517 536 void nv::md5_mesh_instance::apply( const std::vector< transform >& skeleton ) 518 537 { 538 NV_PROFILE("md5::apply"); 539 char* fill_ptr = (char*)&(m_pntdata[0]); 540 std::fill( fill_ptr, fill_ptr + m_size * ( sizeof( md5_vtx_pnt ) ), 0 ); 519 541 for ( unsigned int i = 0; i < m_size; ++i ) 520 542 { … … 522 544 md5_vtx_pnt& result = m_pntdata[i]; 523 545 524 result.position = glm::vec3(0);525 result.normal = glm::vec3(0);526 result.tangent = glm::vec3(0);527 528 546 for ( size_t j = 0; j < vert.weight_count; ++j ) 529 547 {
Note: See TracChangeset
for help on using the changeset viewer.