Changeset 427 for trunk/src/gfx
- Timestamp:
- 07/20/15 13:25:20 (10 years ago)
- Location:
- trunk/src/gfx
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gfx/keyframed_mesh.cc
r424 r427 42 42 if ( m_tag_map && m_tag_map->get_count() > 0 ) 43 43 { 44 m_interpolation_key = m_tag_map->get_node( 0 )->data->get_interpolation_key();44 m_interpolation_key = (*m_tag_map)[ 0 ]->get_interpolation_key(); 45 45 } 46 46 } … … 55 55 if ( !m_tag_map ) return transform(); 56 56 NV_ASSERT( node_id < m_tag_map->get_count(), "TAGMAP FAIL" ); 57 const data_channel_set* data = m_tag_map->get_node( node_id )->data; 58 NV_ASSERT( data && data->size() > 0, "TAG FAIL" ); 59 raw_channel_interpolator interpolator( data, m_interpolation_key ); 57 NV_ASSERT( (*m_tag_map)[node_id]->size() > 0, "TAG FAIL" ); 58 raw_channel_interpolator interpolator( ( *m_tag_map )[node_id], m_interpolation_key ); 60 59 return interpolator.get< transform >( m_last_frame, m_next_frame, m_interpolation ); 61 60 } -
trunk/src/gfx/mesh_creator.cc
r424 r427 18 18 for ( size_t i = 0; i < m_data->get_count(); ++i ) 19 19 { 20 sint16 parent_id = m_data->m_nodes[i].data->get_parent_id();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 );20 data_channel_set* keys = m_data->m_data[i]; 21 sint16 parent_id = keys->get_parent_id(); 22 data_channel_set* pkeys = ( parent_id != -1 ? m_data->m_data[parent_id] : 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 ); … … 51 51 for ( size_t i = 0; i < m_data->get_count(); ++i ) 52 52 { 53 data_channel_set* old_keys = m_data->m_ nodes[i].data;53 data_channel_set* old_keys = m_data->m_data[i]; 54 54 if ( old_keys && old_keys->size() > 0 ) 55 55 { … … 89 89 90 90 delete old_keys; 91 m_data->m_ nodes[i].data= new_keys;91 m_data->m_data[i] = new_keys; 92 92 } 93 93 } … … 102 102 for ( size_t i = 0; i < m_data->get_count(); ++i ) 103 103 { 104 mesh_node_data& node = m_data->m_nodes[i]; 105 node.data->m_transform = pre_transform * node.data->m_transform * post_transform; 106 if ( node.data ) 107 { 108 data_channel_set* kdata = node.data; 109 for ( size_t c = 0; c < kdata->size(); ++c ) 110 { 111 raw_data_channel_access channel( kdata, c ); 112 size_t key_size = channel.element_size(); 113 for ( size_t n = 0; n < channel.size(); ++n ) 114 { 115 transform_key_raw( kdata->get_channel( c )->descriptor(), channel.raw_data() + n * key_size, scale, r33, ri33 ); 116 } 104 data_channel_set* node = m_data->m_data[i]; 105 node->m_transform = pre_transform * node->m_transform * post_transform; 106 107 for ( size_t c = 0; c < node->size(); ++c ) 108 { 109 raw_data_channel_access channel( node, c ); 110 size_t key_size = channel.element_size(); 111 for ( size_t n = 0; n < channel.size(); ++n ) 112 { 113 transform_key_raw( node->get_channel( c )->descriptor(), channel.raw_data() + n * key_size, scale, r33, ri33 ); 117 114 } 118 115 } … … 458 455 if ( index < m_pack->get_count() ) 459 456 { 460 data_channel_set_creator( &m_pack->m_meshes[m_pack->m_count - 1] ).move_to( m_pack->m_meshes[index] ); 457 458 m_pack->m_meshes[index] = move( m_pack->m_meshes[m_pack->m_count - 1] ); 461 459 m_pack->m_count--; 462 460 } -
trunk/src/gfx/skeletal_mesh.cc
r424 r427 23 23 for ( uint32 i = 0; i < bones->get_count(); ++i ) 24 24 { 25 m_bone_offset[i] = transform( bones->get_node(i)->data->get_transform() );25 m_bone_offset[i] = transform( (*bones)[i]->get_transform() ); 26 26 } 27 27 … … 93 93 void nv::skeletal_animation_entry_cpu::initialize() 94 94 { 95 for ( size_t i = 0; i < m_node_data->get_count(); ++i)96 { 97 if ( m_node_data->is_animated( i ))98 { 99 m_interpolation_key = m_node_data->get_node( i )->data->get_interpolation_key();95 for ( auto bone : *m_node_data ) 96 { 97 if ( bone->size() > 0 ) 98 { 99 m_interpolation_key = bone->get_interpolation_key(); 100 100 break; 101 101 } … … 112 112 for ( size_t i = 0; i < m_node_data->get_count(); ++i ) 113 113 { 114 raw_channel_interpolator interpolator( m_node_data->get_node( i )->data, m_interpolation_key );114 raw_channel_interpolator interpolator( (*m_node_data)[i], m_interpolation_key ); 115 115 skeleton[i] = interpolator.get< transform >( frame_num ); 116 116 } … … 132 132 for ( uint32 n = 0; n < node_count; ++n ) 133 133 { 134 const mesh_node_data* node = m_node_data->get_node(n);135 if ( node-> data->get_parent_id() != -1 )136 { 137 m_children[ node-> data->get_parent_id()].push_back( n );134 const data_channel_set* node = (*m_node_data)[n]; 135 if ( node->get_parent_id() != -1 ) 136 { 137 m_children[ node->get_parent_id()].push_back( n ); 138 138 } 139 139 } … … 156 156 if ( m_bone_ids[n] >= 0 ) 157 157 { 158 const mesh_node_data* node = m_node_data->get_node(n);159 nv::mat4 node_mat( node-> data->get_transform() );160 161 if ( node-> data && node->data->size() > 0 )162 { 163 raw_channel_interpolator interpolator( node ->data, m_interpolation_key );158 const data_channel_set* node = m_node_data->get_node(n); 159 nv::mat4 node_mat( node->get_transform() ); 160 161 if ( node->size() > 0 ) 162 { 163 raw_channel_interpolator interpolator( node, m_interpolation_key ); 164 164 node_mat = interpolator.get< mat4 >( anim_time ); 165 165 } … … 177 177 for ( nv::uint16 bi = 0; bi < bones->get_count(); ++bi ) 178 178 { 179 const mesh_node_data* bone = bones->get_node(bi);180 bone_names[ bone-> data->get_name() ] = bi;181 m_offsets[bi] = bone-> data->get_transform();179 const data_channel_set* bone = bones->get_node( bi ); 180 bone_names[ bone->get_name() ] = bi; 181 m_offsets[bi] = bone->get_transform(); 182 182 } 183 183 184 184 for ( uint32 n = 0; n < m_node_data->get_count(); ++n ) 185 185 { 186 const mesh_node_data* node = m_node_data->get_node(n);186 const data_channel_set* node = m_node_data->get_node( n ); 187 187 sint16 bone_id = -1; 188 188 189 auto bi = bone_names.find( node-> data->get_name() );189 auto bi = bone_names.find( node->get_name() ); 190 190 if ( bi != bone_names.end() ) 191 191 { … … 194 194 m_bone_ids[n] = bone_id; 195 195 196 if ( m_interpolation_key.size() == 0 && node-> data->size() > 0 )197 m_interpolation_key = node-> data->get_interpolation_key();196 if ( m_interpolation_key.size() == 0 && node->size() > 0 ) 197 m_interpolation_key = node->get_interpolation_key(); 198 198 199 199 } … … 205 205 // TODO: fix transforms, which are now embedded, 206 206 // see note in assimp_loader.cc:load_node 207 const mesh_node_data* node = m_node_data->get_node( node_id );208 mat4 node_mat( node-> data->get_transform() );209 210 if ( node-> data && node->data->size() > 0 )211 { 212 raw_channel_interpolator interpolator( node ->data, m_interpolation_key );207 const data_channel_set* node = m_node_data->get_node( node_id ); 208 mat4 node_mat( node->get_transform() ); 209 210 if ( node->size() > 0 ) 211 { 212 raw_channel_interpolator interpolator( node, m_interpolation_key ); 213 213 node_mat = interpolator.get< mat4 >( time ); 214 214 }
Note: See TracChangeset
for help on using the changeset viewer.