Changeset 536
- Timestamp:
- 03/05/08 17:10:34 (10 months ago)
- Files:
-
- branches/morph-targets/libx42make/include/x42make-modelbuilder.h (modified) (6 diffs)
- branches/morph-targets/libx42make/modelbuilder-batch.cpp (modified) (12 diffs)
- branches/morph-targets/libx42make/modelbuilder-geometry.cpp (modified) (1 diff)
- branches/morph-targets/libx42pp/include/x42types.h (modified) (1 diff)
- branches/morph-targets/maya2q3.sln (modified) (2 diffs)
- branches/morph-targets/maya2q3/maya2q3.vcproj (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/morph-targets/libx42make/include/x42make-modelbuilder.h
r523 r536 60 60 void intrusive_ptr_add_ref( const ref_obj *r ); 61 61 void intrusive_ptr_release( const ref_obj *r ); 62 63 class group_split_target;64 class group_split_context;65 66 class model_data_builder;67 62 }; 68 63 … … 119 114 typedef ::boost::intrusive_ptr< model_builder > model_builder_ptr; 120 115 typedef ::boost::intrusive_ptr< const model_builder > const_model_builder_ptr; 116 117 namespace _impl 118 { 119 class group_split_target; 120 class group_split_context; 121 122 class model_data_builder; 123 124 morph_target_ptr clone_morph_target( const_morph_target_ptr src ); 125 group_ptr merge_groups( group_ptr a, group_ptr b ); 126 }; 121 127 122 128 template< typename T > … … 391 397 ::x42::math::vec3 tangent; 392 398 ::x42::math::vec3 bitangent; 399 400 bool operator == ( const vertex_geometry &other ) const; 401 bool operator != ( const vertex_geometry &other ) const 402 { 403 return !operator == ( other ); 404 } 393 405 }; 394 406 … … 397 409 ::x42::math::vec2 texture_coord; 398 410 ::x42::rgba color; 411 412 bool operator == ( const vertex_attributes &other ) const; 413 bool operator != ( const vertex_attributes &other ) const 414 { 415 return !operator == ( other ); 416 } 399 417 }; 400 418 … … 415 433 416 434 friend class geometry; 435 friend morph_target_ptr _impl::clone_morph_target( const_morph_target_ptr src ); 417 436 }; 418 437 … … 497 516 friend class _impl::group_split_target; 498 517 friend class _impl::group_split_context; 518 friend group_ptr _impl::merge_groups( group_ptr a, group_ptr b ); 499 519 }; 500 520 branches/morph-targets/libx42make/modelbuilder-batch.cpp
r524 r536 33 33 const index invalid_index = index_traits::max_val; 34 34 35 class group_split_target; 36 void swap( group_split_target &a, group_split_target &b ); 37 35 38 class group_split_target : public ref_obj 36 39 { … … 38 41 const_group_ptr source_group; 39 42 group_ptr target_group; 40 std::vector< index > vertex_map; //maps source vertices to the target group 43 std::vector< index > src_to_dst_vert_map; 44 std::vector< index > dst_to_src_vert_map; 41 45 std::vector< influence_ptr > influences; 42 46 size_t prim_count; … … 46 50 index append_vert( index src_idx ); 47 51 48 void compute_append_prim_cost( uint prim_index,52 void compute_append_prim_cost( size_t prim_index, 49 53 size_t &vert_cost, size_t &inf_cost ) const; 50 void append_prim( uint prim_index ); 54 void append_prim( size_t prim_index ); 55 56 void append_index( index src_idx ); 51 57 52 58 private: … … 54 60 55 61 group_split_target( group_split_context *owner ); 62 group_split_target( const group_split_target &src ); 63 group_split_target& operator = ( const group_split_target &src ); 64 65 void init_target_group(); 56 66 57 67 friend class group_split_context; 68 friend void swap( group_split_target &a, group_split_target &b ); 58 69 }; 59 70 … … 75 86 group_split_target_ptr create_target(); 76 87 77 index prim_elem_index( uint prim_index, size_t elem_index ) const88 index prim_elem_index( size_t prim_index, size_t elem_index ) const 78 89 { 79 90 return list_indices[prim_index * elems_per_prim + elem_index]; … … 81 92 82 93 void split_by_weight_count(); 94 void cost_ordered_merge( size_t max_verts, float up_merge_limit_factor ); 95 96 private: 97 group_split_target_ptr internal_merge_groups( group_split_target_ptr a, group_split_target_ptr b ); 83 98 }; 99 100 /* 101 Utility functions. 102 */ 103 104 morph_target_ptr clone_morph_target( const_morph_target_ptr src ) 105 { 106 morph_target_ptr ret( new morph_target( src->name() ) ); 107 ret->user_tag = src->user_tag; 108 ret->vertices = src->vertices; 109 return ret; 110 } 111 112 std::vector< morph_target_ptr > clone_morph_targets( const std::vector< morph_target_ptr > &src ) 113 { 114 std::vector< morph_target_ptr > ret( src.size() ); 115 for( size_t i = 0; i < ret.size(); i++ ) 116 { 117 ret[i] = clone_morph_target( src[i] ); 118 } 119 return ret; 120 } 121 122 bool verts_equal( const geometry &ga, size_t ia, const geometry &gb, size_t ib ) 123 { 124 if( ga.base_shape[ia] != gb.base_shape[ib] ) 125 return false; 126 127 if( ga.weights[ia] != gb.weights[ib] ) 128 return false; 129 130 if( ga.attributes[ia] != gb.attributes[ib] ) 131 return false; 132 133 for( size_t i = 0; i < ga.morph_targets.size(); i++ ) 134 { 135 if( ga.morph_targets[i]->vertices[ia] != 136 gb.morph_targets[i]->vertices[ib] ) 137 return false; 138 } 139 140 return true; 141 } 142 143 bool have_similar_morph_targets( const geometry &ga, const geometry &gb ) 144 { 145 if( ga.morph_targets.size() != gb.morph_targets.size() ) 146 return false; 147 148 for( size_t i = 0; i < ga.morph_targets.size(); i++ ) 149 { 150 if( ga.morph_targets[i]->name() != gb.morph_targets[i]->name() ) 151 return false; 152 } 153 154 return true; 155 } 156 157 index append_vertex( geometry &dst, const geometry &src, size_t src_idx ) 158 { 159 index dst_idx = (index)dst.vertex_count(); 160 161 dst.base_shape.push_back( src.base_shape[src_idx] ); 162 dst.weights.push_back( src.weights[src_idx] ); 163 dst.attributes.push_back( src.attributes[src_idx] ); 164 165 for( size_t i = 0; i < src.morph_targets.size(); i++ ) 166 { 167 dst.morph_targets[i]->vertices.push_back( 168 src.morph_targets[i]->vertices[src_idx] ); 169 } 170 171 return dst_idx; 172 } 173 174 index find_vertex( const geometry &geom, const geometry &src_geom, size_t src_idx ) 175 { 176 for( size_t i = 0; i < geom.vertex_count(); i++ ) 177 { 178 if( verts_equal( geom, i, src_geom, src_idx ) ) 179 return checked_int_cast< index >( i ); 180 } 181 182 return invalid_index; 183 } 184 185 group_ptr merge_groups( group_ptr a, group_ptr b ) 186 { 187 group_ptr ret( new group() ); 188 189 if( a == b ) 190 { 191 *ret = *a; 192 return ret; 193 } 194 195 const geometry &ag = a->geometry; 196 const geometry &bg = b->geometry; 197 198 if( ag.prim_type.to_list_type() != bg.prim_type.to_list_type() ) 199 throw error( "Cannot merge groups with dissimilar primitive types." ); 200 201 if( !have_similar_morph_targets( ag, bg ) ) 202 throw error( "Cannot merge groups with dissimilar morph targets." ); 203 204 std::vector< index > a_list_indices = ag.get_list_indices(); 205 std::vector< index > b_list_indices = bg.get_list_indices(); 206 207 ret->material_name = a->material_name; 208 ret->surface_name = a->surface_name; 209 ret->user_tag = a->user_tag; 210 211 geometry &rg = ret->geometry; 212 213 rg.user_tag = ag.user_tag; 214 rg.prim_type = ag.prim_type.to_list_type(); 215 216 rg.base_shape = ag.base_shape; 217 rg.morph_targets = clone_morph_targets( ag.morph_targets ); 218 rg.weights = ag.weights; 219 rg.attributes = ag.attributes; 220 221 rg.indices.insert( rg.indices.end(), a_list_indices.begin(), 222 a_list_indices.end() ); 223 224 size_t base_vert = rg.base_shape.size(); 225 226 std::vector< index > remap( bg.vertex_count(), invalid_index ); 227 for( size_t i = 0; i < bg.vertex_count(); i++ ) 228 { 229 index idx = find_vertex( rg, bg, i ); 230 if( idx == invalid_index ) 231 idx = append_vertex( rg, bg, i ); 232 233 remap[i] = checked_int_cast< index >( base_vert + idx ); 234 } 235 236 for( size_t i = 0; i < b_list_indices.size(); i++ ) 237 { 238 rg.indices.push_back( remap[b_list_indices[i]] ); 239 } 240 241 return ret; 242 } 84 243 85 244 /* … … 90 249 : owner( owner ), 91 250 source_group( owner->source ), target_group( new group() ), 92 vertex_map( owner->source->geometry.vertex_count(), invalid_index ),251 src_to_dst_vert_map( owner->source->geometry.vertex_count(), invalid_index ), 93 252 prim_count( 0 ), max_infs_per_vert( 0 ) 253 { 254 init_target_group(); 255 } 256 257 group_split_target::group_split_target( const group_split_target &src ) 258 : owner( src.owner ), 259 source_group( src.source_group ), target_group( new group() ), 260 src_to_dst_vert_map( src.src_to_dst_vert_map ), dst_to_src_vert_map( src.dst_to_src_vert_map ),\ 261 influences( src.influences ), prim_count( src.prim_count ), 262 max_infs_per_vert( src.max_infs_per_vert ) 263 { 264 init_target_group(); 265 266 const geometry &sg = src.source_group->geometry; 267 geometry &dg = target_group->geometry; 268 269 dg.prim_type = sg.prim_type; 270 dg.base_shape = sg.base_shape; 271 dg.weights = sg.weights; 272 dg.attributes = sg.attributes; 273 dg.morph_targets = clone_morph_targets( sg.morph_targets ); 274 dg.indices = sg.indices; 275 dg.user_tag = sg.user_tag; 276 } 277 278 group_split_target& group_split_target::operator = ( const group_split_target &src ) 279 { 280 group_split_target cp( src ); 281 swap( *this, cp ); 282 return *this; 283 } 284 285 void swap( group_split_target &a, group_split_target &b ) 286 { 287 std::swap( a.owner, b.owner ); 288 std::swap( a.source_group, b.source_group ); 289 std::swap( a.target_group, b.target_group ); 290 std::swap( a.src_to_dst_vert_map, b.src_to_dst_vert_map ); 291 std::swap( a.dst_to_src_vert_map, b.dst_to_src_vert_map ); 292 std::swap( a.influences, b.influences ); 293 std::swap( a.prim_count, b.prim_count ); 294 std::swap( a.max_infs_per_vert, b.max_infs_per_vert ); 295 } 296 297 void group_split_target::init_target_group() 94 298 { 95 299 target_group->material_name = source_group->material_name; … … 129 333 geometry &dst = target_group->geometry; 130 334 131 index dst_idx = (index)dst.vertex_count(); 132 133 dst.base_shape.push_back( src.base_shape[src_idx] ); 134 dst.weights.push_back( src.weights[src_idx] ); 135 dst.attributes.push_back( src.attributes[src_idx] ); 136 137 for( size_t i = 0; i < src.morph_targets.size(); i++ ) 138 { 139 dst.morph_targets[i]->vertices.push_back( 140 src.morph_targets[i]->vertices[src_idx] ); 141 } 335 index dst_idx = src_to_dst_vert_map[src_idx]; 336 if( dst_idx != invalid_index ) 337 return dst_idx; 338 339 dst_idx = append_vertex( dst, src, src_idx ); 340 dst_to_src_vert_map.push_back( src_idx ); 341 src_to_dst_vert_map[src_idx] = dst_idx; 142 342 143 343 const vertex_weights &wts = src.weights[src_idx]; … … 160 360 } 161 361 162 void group_split_target::compute_append_prim_cost( uint prim_index,362 void group_split_target::compute_append_prim_cost( size_t prim_index, 163 363 size_t &vert_cost, size_t &inf_cost ) const 164 364 { … … 170 370 index src_idx = owner->prim_elem_index( prim_index, i ); 171 371 172 if( vertex_map[src_idx] != invalid_index )372 if( src_to_dst_vert_map[src_idx] != invalid_index ) 173 373 //already contains this one 174 374 continue; … … 182 382 } 183 383 184 void group_split_target::append_prim( uint prim_index )384 void group_split_target::append_prim( size_t prim_index ) 185 385 { 186 386 for( size_t i = 0; i < owner->elems_per_prim; i++ ) 187 387 { 188 388 index src_idx = owner->prim_elem_index( prim_index, i ); 189 index dst_idx = vertex_map[src_idx]; 190 191 if( dst_idx == invalid_index ) 192 { 193 dst_idx = append_vert( src_idx ); 194 vertex_map[src_idx] = dst_idx; 195 } 196 197 target_group->geometry.indices.push_back( dst_idx ); 198 } 389 append_index( src_idx ); 390 } 391 392 prim_count++; 393 } 394 395 void group_split_target::append_index( index src_idx ) 396 { 397 index dst_idx = src_to_dst_vert_map[src_idx]; 398 399 if( dst_idx == invalid_index ) 400 dst_idx = append_vert( src_idx ); 401 402 target_group->geometry.indices.push_back( dst_idx ); 199 403 } 200 404 … … 249 453 } 250 454 455 group_split_target_ptr group_split_context::internal_merge_groups( 456 group_split_target_ptr a, group_split_target_ptr b ) 457 { 458 group_split_target_ptr ret( new group_split_target( *a ) ); 459 460 const geometry &gb = b->target_group->geometry; 461 for( size_t i = 0; i < gb.index_count(); i++ ) 462 ret->append_index( b->dst_to_src_vert_map[gb.indices[i]] ); 463 464 //this wasn't updated since I was pushing with append_index 465 ret->prim_count = ret->target_group->geometry.primitive_count(); 466 467 return ret; 468 } 469 470 void group_split_context::cost_ordered_merge( size_t max_verts, float up_merge_limit_factor ) 471 { 472 std::vector< group_split_target_ptr > src( target_groups ); 473 std::vector< group_split_target_ptr > dst; 474 475 while( src.size() > 1 ) 476 { 477 group_split_target_ptr ga = src[0]; 478 group_split_target_ptr gb = src[1]; 479 480 const geometry &ag = ga->target_group->geometry; 481 const geometry &bg = gb->target_group->geometry; 482 483 if( !ag.vertex_count() ) 484 { 485 src.erase( src.begin() ); 486 continue; 487 } 488 489 if( !bg.vertex_count() ) 490 { 491 src.erase( src.begin() + 1 ); 492 continue; 493 } 494 495 size_t size_sum = ag.vertex_count() + bg.vertex_count(); 496 497 if( size_sum < max_verts && 498 ag.vertex_count() < (size_t)(bg.vertex_count() * up_merge_limit_factor) ) 499 { 500 //merge a into b 501 group_split_target_ptr merged = merge_groups( ga, gb ); 502 } 503 else 504 { 505 dst.push_back( ga ); 506 src.erase( src.begin() ); 507 } 508 } 509 510 for( size_t i = 0; i < src.size(); i++ ) 511 { 512 const geometry &g = src[i]->target_group->geometry; 513 514 if( g.vertex_count() && g.primitive_count() ) 515 dst.push_back( src[i] ); 516 } 517 518 std::swap( target_groups, dst ); 519 } 520 251 521 }; 252 522 branches/morph-targets/libx42make/modelbuilder-geometry.cpp
r523 r536 196 196 197 197 /* 198 struct vertex_geometry 199 */ 200 201 bool vertex_geometry::operator == ( const vertex_geometry &other ) const 202 { 203 return position == other.position && 204 normal == other.normal && 205 tangent == other.tangent && 206 bitangent == other.bitangent; 207 } 208 209 /* 210 struct vertex_attributes 211 */ 212 213 bool vertex_attributes::operator == ( const vertex_attributes &other ) const 214 { 215 return texture_coord == other.texture_coord && 216 color == other.color; 217 } 218 219 /* 198 220 class geometry 199 221 */ branches/morph-targets/libx42pp/include/x42types.h
r508 r536 242 242 set_value( (byte)ur, (byte)ug, (byte)ub, (byte)ua ); 243 243 } 244 245 bool operator == ( const rgba &other ) const 246 { 247 return v[0] == other.v[0] && 248 v[1] == other.v[1] && 249 v[2] == other.v[2] && 250 v[3] == other.v[3]; 251 } 252 bool operator != ( const rgba &other ) const 253 { 254 return !operator == ( other ); 255 } 244 256 }; 245 257 branches/morph-targets/maya2q3.sln
r179 r536 7 7 Debug (6.0)|Win32 = Debug (6.0)|Win32 8 8 Debug (7.0)|Win32 = Debug (7.0)|Win32 9 Debug (8.5)|Win32 = Debug (8.5)|Win32 9 10 Release (6.0)|Win32 = Release (6.0)|Win32 10 11 Release (7.0)|Win32 = Release (7.0)|Win32 12 Release (8.5)|Win32 = Release (8.5)|Win32 11 13 EndGlobalSection 12 14 GlobalSection(ProjectConfigurationPlatforms) = postSolution … … 15 17 {43311ADD-F418-4972-B3D9-3117F04D1B6C}.Debug (7.0)|Win32.ActiveCfg = Debug (7.0)|Win32 16 18 {43311ADD-F418-4972-B3D9-3117F04D1B6C}.Debug (7.0)|Win32.Build.0 = Debug (7.0)|Win32 19 {43311ADD-F418-4972-B3D9-3117F04D1B6C}.Debug (8.5)|Win32.ActiveCfg = Debug (8.5)|Win32 20 {43311ADD-F418-4972-B3D9-3117F04D1B6C}.Debug (8.5)|Win32.Build.0 = Debug (8.5)|Win32 17 21 {43311ADD-F418-4972-B3D9-3117F04D1B6C}.Release (6.0)|Win32.ActiveCfg = Release (6.0)|Win32 18 22 {43311ADD-F418-4972-B3D9-3117F04D1B6C}.Release (6.0)|Win32.Build.0 = Release (6.0)|Win32 19 23 {43311ADD-F418-4972-B3D9-3117F04D1B6C}.Release (7.0)|Win32.ActiveCfg = Release (7.0)|Win32 20 24 {43311ADD-F418-4972-B3D9-3117F04D1B6C}.Release (7.0)|Win32.Build.0 = Release (7.0)|Win32 25 {43311ADD-F418-4972-B3D9-3117F04D1B6C}.Release (8.5)|Win32.ActiveCfg = Release (8.5)|Win32 26 {43311ADD-F418-4972-B3D9-3117F04D1B6C}.Release (8.5)|Win32.Build.0 = Release (8.5)|Win32 21 27 EndGlobalSection 22 28 GlobalSection(SolutionProperties) = preSolution branches/morph-targets/maya2q3/maya2q3.vcproj
r495 r536 376 376 /> 377 377 </Configuration> 378 <Configuration 379 Name="Debug (8.5)|Win32" 380 OutputDirectory="$(SolutionDir)$(ConfigurationName)" 381 IntermediateDirectory="$(ConfigurationName)" 382 ConfigurationType="2" 383 InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" 384 CharacterSet="2" 385 > 386 <Tool 387 Name="VCPreBuildEventTool" 388 /> 389 <Tool 390 Name="VCCustomBuildTool" 391 /> 392 <Tool 393 Name="VCXMLDataGeneratorTool" 394 /> 395 <Tool 396 Name="VCWebServiceProxyGeneratorTool" 397 /> 398 <Tool 399 Name="VCMIDLTool" 400 /> 401 <Tool 402 Name="VCCLCompilerTool" 403 Optimization="0" 404 AdditionalIncludeDirectories=""C:\Program Files (x86)\Autodesk\Maya8.5\include"" 405 PreprocessorDefinitions="NT_PLUGIN;GLEW_STATIC" 406 MinimalRebuild="true" 407 BasicRuntimeChecks="3" 408 RuntimeLibrary="0" 409 DefaultCharIsUnsigned="true" 410 TreatWChar_tAsBuiltInType="true" 411 ForceConformanceInForLoopScope="true" 412 UsePrecompiledHeader="2" 413 PrecompiledHeaderThrough="common.h" 414 PrecompiledHeaderFile="$(IntDir)\common.pch" 415 WarningLevel="4" 416 WarnAsError="true" 417 Detect64BitPortabilityProblems="false" 418 DebugInformationFormat="4" 419 /> 420 <Tool 421 Name="VCManagedResourceCompilerTool" 422 /> 423 <Tool 424 Name="VCResourceCompilerTool" 425 /> 426 <Tool 427 Name="VCPreLinkEventTool" 428 /> 429 <Tool 430 Name="VCLinkerTool" 431 AdditionalDependencies="Foundation.lib OpenMaya.lib OpenMayaAnim.lib OpenMayaUI.lib OpenMayaRender.lib opengl32.lib glew_static.lib physfs_static.lib" 432 OutputFile="$(OutDir)\$(ProjectName).mll" 433 LinkIncremental="2" 434 AdditionalLibraryDirectories=""C:\Program Files (x86)\Autodesk\Maya8.5\lib";"$(SolutionDir)libs\$(PlatformName)"" 435 IgnoreDefaultLibraryNames="" 436 GenerateDebugInformation="true" 437 ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" 438 SubSystem="2" 439 ImportLibrary="$(OutDir)/maya2q3.lib" 440 TargetMachine="1" 441 /> 442 <Tool 443 Name="VCALinkTool" 444 /> 445 <Tool 446 Name="VCManifestTool" 447 /> 448 <Tool 449 Name="VCXDCMakeTool" 450 /> 451 <Tool 452 Name="VCBscMakeTool" 453 /> 454 <Tool 455 Name="VCFxCopTool" 456 /> 457 <Tool 458 Name="VCAppVerifierTool" 459 /> 460 <Tool 461 Name="VCWebDeploymentTool" 462 /> 463 <Tool 464 Name="VCPostBuildEventTool" 465 Description="Copying to Maya plugins directory." 466 CommandLine="copy "$(OutDir)\$(ProjectName).mll" "$(ProgramFiles)\Alias\Maya7.0\bin\plug-ins"
copy "$(ProjectDir)\AEQ3ShaderTemplate.mel" "$(ProgramFiles)\Alias\Maya7.0\scripts\AETemplates"
copy "$(ProjectDir)\maya2q3.mel" "$(ProgramFiles)\Alias\Maya7.0\scripts\others"
" 467 /> 468 </Configuration> 469 <Configuration 470 Name="Release (8.5)|Win32" 471 OutputDirectory="$(SolutionDir)$(ConfigurationName)" 472 IntermediateDirectory="$(ConfigurationName)" 473 ConfigurationType="2" 474 InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" 475 CharacterSet="2" 476 > 477 <Tool 478 Name="VCPreBuildEventTool" 479 /> 480 <Tool 481 Name="VCCustomBuildTool" 482 /> 483 <Tool 484 Name="VCXMLDataGeneratorTool" 485 /> 486 <Tool 487 Name="VCWebServiceProxyGeneratorTool" 488 /> 489 <Tool 490 Name="VCMIDLTool" 491 /> 492 <Tool 493 Name="VCCLCompilerTool" 494 AdditionalIncludeDirectories=""C:\Program Files (x86)\Autodesk\Maya8.5\include"" 495 PreprocessorDefinitions="NT_PLUGIN;GLEW_STATIC" 496 RuntimeLibrary="0" 497 DefaultCharIsUnsigned="true" 498 TreatWChar_tAsBuiltInType="true" 499 ForceConformanceInForLoopScope="true" 500 UsePrecompiledHeader="2" 501 PrecompiledHeaderThrough="common.h" 502 PrecompiledHeaderFile="$(IntDir)\common.pch" 503 WarningLevel="3" 504 Detect64BitPortabilityProblems="false" 505 DebugInformationFormat="3" 506 /> 507 <Tool 508 Name="VCManagedResourceCompilerTool" 509 /> 510 <Tool 511 Name="VCResourceCompilerTool" 512 /> 513 <Tool 514 Name="VCPreLinkEventTool" 515 /> 516 <Tool 517 Name="VCLinkerTool" 518 AdditionalDependencies="Foundation.lib OpenMaya.lib OpenMayaAnim.lib OpenMayaUI.lib OpenMayaRender.lib opengl32.lib glew_static.lib physfs_static.lib" 519 OutputFile="$(OutDir)\$(ProjectName).mll" 520 LinkIncremental="1" 521 AdditionalLibraryDirectories=""C:\Program Files (x86)\Autodesk\Maya8.5\lib";"$(SolutionDir)libs\$(PlatformName)"" 522 IgnoreDefaultLibraryNames="" 523 GenerateDebugInformation="true" 524 ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" 525 SubSystem="2" 526 OptimizeReferences="2" 527 EnableCOMDATFolding="2" 528 ImportLibrary="$(OutDir)/maya2q3.lib" 529 TargetMachine="1" 530 /> 531 <Tool 532 Name="VCALinkTool" 533 /> 534 <Tool 535 Name="VCManifestTool" 536 /> 537 <Tool 538 Name="VCXDCMakeTool" 539 /> 540 <Tool 541 Name="VCBscMakeTool" 542 /> 543 <Tool 544 Name="VCFxCopTool" 545 /> 546 <Tool 547 Name="VCAppVerifierTool" 548 /> 549 <Tool 550 Name="VCWebDeploymentTool" 551 /> 552 <Tool 553 Name="VCPostBuildEventTool" 554 Description="Copying to Maya plugins directory." 555 CommandLine="copy "$(OutDir)\$(ProjectName).mll" "$(ProgramFiles)\Alias\Maya7.0\bin\plug-ins"
copy "$(ProjectDir)\AEQ3ShaderTemplate.mel" "$(ProgramFiles)\Alias\Maya7.0\scripts\AETemplates"
copy "$(ProjectDir)\maya2q3.mel" "$(ProgramFiles)\Alias\Maya7.0\scripts\others"
" 556 /> 557 </Configuration> 378 558 </Configurations> 379 559 <References> … … 478 658 /> 479 659 </FileConfiguration> 660 <FileConfiguration 661 Name="Debug (8.5)|Win32" 662 > 663 <Tool 664 Name="VCCLCompilerTool" 665 UsePrecompiledHeader="1" 666 /> 667 </FileConfiguration> 668 <FileConfiguration 669 Name="Release (8.5)|Win32" 670 > 671 <Tool 672 Name="VCCLCompilerTool" 673 UsePrecompiledHeader="1" 674 /> 675 </FileConfiguration> 480 676 </File> 481 677 <File … … 568 764 /> 569 765 </FileConfiguration> 766 <FileConfiguration 767 Name="Debug (8.5)|Win32" 768 > 769 <Tool 770 Name="VCCLCompilerTool" 771 WarnAsError="false" 772 DisableSpecificWarnings="4100;4244;4389;4127;4189;4701;4702" 773 /> 774 </FileConfiguration> 775 <FileConfiguration 776 Name="Release (8.5)|Win32" 777 > 778 <Tool 779 Name="VCCLCompilerTool" 780 WarnAsError="false" 781 DisableSpecificWarnings="4100;4244;4389;4127;4189;4701;4702" 782 /> 783 </FileConfiguration> 570 784 </File> 571 785 <File … … 612 826 /> 613 827 </FileConfiguration> 828 <FileConfiguration 829 Name="Debug (8.5)|Win32" 830 > 831 <Tool 832 Name="VCCLCompilerTool" 833 WarnAsError="false" 834 DisableSpecificWarnings="4100;4244;4389;4127;4189;4701;4702" 835 /> 836 </FileConfiguration> 837 <FileConfiguration 838 Name="Release (8.5)|Win32" 839 > 840 <Tool 841 Name="VCCLCompilerTool" 842 WarnAsError="false" 843 DisableSpecificWarnings="4100;4244;4389;4127;4189;4701;4702" 844 /> 845 </FileConfiguration> 614 846 </File> 615 847 <File … … 649 881 <FileConfiguration 650 882 Name="Release (7.0)|Win32" 883 > 884 <Tool 885 Name="VCCLCompilerTool" 886 &nbs
