Changeset 419 for trunk/src/gfx
- Timestamp:
- 07/14/15 20:19:52 (10 years ago)
- Location:
- trunk/src/gfx
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gfx/keyframed_mesh.cc
r417 r419 39 39 m_frame_count = pos_size / m_vertex_count; 40 40 m_pbuffer = buffer(); 41 42 if ( m_tag_map && m_tag_map->get_count() > 0 ) 43 { 44 m_interpolation_key = m_tag_map->get_node( 0 )->data->get_interpolation_key(); 45 } 41 46 } 42 47 … … 50 55 if ( !m_tag_map ) return transform(); 51 56 NV_ASSERT( node_id < m_tag_map->get_count(), "TAGMAP FAIL" ); 52 const key_channel_set* data = m_tag_map->get_node( node_id )->data;57 const data_channel_set* data = m_tag_map->get_node( node_id )->data; 53 58 NV_ASSERT( data, "TAG FAIL" ); 54 transform last = data->get_raw_transform( m_last_frame ); 55 transform next = data->get_raw_transform( m_next_frame ); 56 return interpolate( last, next, m_interpolation ); 59 raw_channel_interpolator interpolator( data, m_interpolation_key ); 60 return interpolator.get< transform >( m_last_frame, m_next_frame, m_interpolation ); 57 61 } 58 62 -
trunk/src/gfx/mesh_creator.cc
r418 r419 19 19 { 20 20 sint16 parent_id = m_data->m_nodes[i].parent_id; 21 key_channel_set* keys = m_data->m_nodes[i].data;22 key_channel_set* pkeys = ( parent_id != -1 ? m_data->m_nodes[parent_id].data : nullptr );21 data_channel_set* keys = m_data->m_nodes[i].data; 22 data_channel_set* pkeys = ( parent_id != -1 ? m_data->m_nodes[parent_id].data : nullptr ); 23 23 size_t count = ( keys ? keys->get_channel_size(0) : 0 ); 24 24 size_t pcount = ( pkeys ? pkeys->get_channel_size(0) : 0 ); … … 46 46 } 47 47 48 // TODO: DELETE49 struct assimp_key_p { float time; nv::vec3 position; };50 struct assimp_key_r { float time; nv::quat rotation; };51 52 48 53 49 void nv::mesh_nodes_creator::merge_keys() … … 55 51 for ( size_t i = 0; i < m_data->get_count(); ++i ) 56 52 { 57 key_channel_set* old_keys = m_data->m_nodes[i].data;53 data_channel_set* old_keys = m_data->m_nodes[i].data; 58 54 if ( old_keys && old_keys->size() > 0 ) 59 55 { … … 69 65 } 70 66 71 key_channel_set* new_keys = key_channel_set_creator::create( 1 );72 key_channel_set_creator nk_access( new_keys );67 data_channel_set* new_keys = data_channel_set_creator::create( 1 ); 68 data_channel_set_creator nk_access( new_keys ); 73 69 data_channel_access< nv_key_transform > kt_channel( nk_access.add_channel<nv_key_transform>( max_keys ) ); 74 70 75 data_descriptor final_key = old_keys->get_final_key(); 71 raw_channel_interpolator interpolator( old_keys ); 72 data_descriptor final_key = interpolator.get_interpolation_key(); 76 73 77 74 for ( unsigned n = 0; n < max_keys; ++n ) … … 83 80 { 84 81 size_t idx = nv::min( old_keys->get_channel_size(c) - 1, n ); 85 pkey += old_keys->get_raw( *old_keys->get_channel(c), idx, pkey );86 } 87 kt_channel.data()[n].tform = extract_ transform_raw( final_key, key );82 pkey += raw_channel_interpolator::get_raw( *old_keys->get_channel(c), idx, pkey ); 83 } 84 kt_channel.data()[n].tform = extract_key_raw< nv::transform >( final_key, key ); 88 85 } 89 86 … … 106 103 if ( node.data ) 107 104 { 108 key_channel_set* kdata = node.data;105 data_channel_set* kdata = node.data; 109 106 for ( size_t c = 0; c < kdata->size(); ++c ) 110 107 { … … 332 329 } 333 330 } 334 delete tangents2;331 delete[] tangents2; 335 332 336 333 data_channel_set_creator( m_data ).set_channel( n_channel_index, merge_channels( *n_channel, g_channel ) ); -
trunk/src/gfx/skeletal_mesh.cc
r418 r419 91 91 92 92 93 void nv::skeletal_animation_entry_cpu::initialize() 94 { 95 for ( size_t i = 0; i < m_node_data->get_count(); ++i ) 96 { 97 if ( m_node_data->get_node( i )->data ) 98 { 99 m_interpolation_key = m_node_data->get_node( i )->data->get_interpolation_key(); 100 break; 101 } 102 } 103 } 104 93 105 void nv::skeletal_animation_entry_cpu::update_skeleton( transform* skeleton, float time ) const 94 106 { … … 100 112 for ( size_t i = 0; i < m_node_data->get_count(); ++i ) 101 113 { 102 skeleton[i] = m_node_data->get_node(i)->data->get_transform( frame_num ); 114 raw_channel_interpolator interpolator( m_node_data->get_node( i )->data, m_interpolation_key ); 115 skeleton[i] = interpolator.get< transform >( frame_num ); 103 116 } 104 117 } … … 112 125 m_bone_ids = new sint16[ node_count ]; 113 126 127 NV_ASSERT( m_node_data, "node data empty!" ); 128 114 129 if ( !m_node_data->is_flat() ) 115 130 { … … 146 161 if ( node->data ) 147 162 { 148 node_mat = node->data->get_matrix( anim_time ); 163 raw_channel_interpolator interpolator( node->data, m_interpolation_key ); 164 node_mat = interpolator.get< mat4 >( anim_time ); 149 165 } 150 166 … … 177 193 } 178 194 m_bone_ids[n] = bone_id; 195 196 if ( m_interpolation_key.size() == 0 && node->data ) 197 m_interpolation_key = node->data->get_interpolation_key(); 198 179 199 } 180 200 m_prepared = true; … … 190 210 if ( node->data ) 191 211 { 192 node_mat = node->data->get_matrix( time ); 212 raw_channel_interpolator interpolator( node->data, m_interpolation_key ); 213 node_mat = interpolator.get< mat4 >( time ); 193 214 } 194 215
Note: See TracChangeset
for help on using the changeset viewer.