From 92422ba4525dedfc1687dfff14e11ee805a30c23 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Thu, 26 Aug 2010 06:58:32 +0000 Subject: Patch [#23389] Add authorship information to exported COLLADA files Contributed by Imran Syed (freakabcd). This adds basic authoring tool and author info ("Blender User" for now). NOTE: Linux and OSX users need now to update their OpenCOLLADA libs - Blender should now compile fine with their latest revision. Made some changes to the original patch to ensure linking is done correctly. Some small cleanups for scons too. --- SConstruct | 4 ++-- build_files/scons/tools/Blender.py | 3 +-- source/blender/collada/CMakeLists.txt | 6 +++++- source/blender/collada/DocumentExporter.cpp | 20 ++++++++++++++------ source/blender/collada/SConscript | 5 ++++- 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/SConstruct b/SConstruct index 4715a955d7f..811298cc851 100644 --- a/SConstruct +++ b/SConstruct @@ -406,12 +406,12 @@ thestatlibs, thelibincs = B.setup_staticlibs(env) thesyslibs = B.setup_syslibs(env) if 'blender' in B.targets or not env['WITH_BF_NOBLENDER']: - env.BlenderProg(B.root_build_dir, "blender", dobj + mainlist + thestatlibs, [], thesyslibs, [B.root_build_dir+'/lib'] + thelibincs, 'blender') + env.BlenderProg(B.root_build_dir, "blender", mainlist + thestatlibs + dobj, thesyslibs, [B.root_build_dir+'/lib'] + thelibincs, 'blender') if env['WITH_BF_PLAYER']: playerlist = B.create_blender_liblist(env, 'player') playerlist += B.create_blender_liblist(env, 'intern') playerlist += B.create_blender_liblist(env, 'extern') - env.BlenderProg(B.root_build_dir, "blenderplayer", dobj + playerlist, [], thestatlibs + thesyslibs, [B.root_build_dir+'/lib'] + thelibincs, 'blenderplayer') + env.BlenderProg(B.root_build_dir, "blenderplayer", playerlist, thestatlibs + dobj + thesyslibs, [B.root_build_dir+'/lib'] + thelibincs, 'blenderplayer') ##### Now define some targets diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py index e16c550cc72..496b169eda7 100644 --- a/build_files/scons/tools/Blender.py +++ b/build_files/scons/tools/Blender.py @@ -724,7 +724,7 @@ class BlenderEnvironment(SConsEnvironment): # note: libs is a global add_lib_to_dict(self, libs, libtype, libname, priority) - def BlenderProg(self=None, builddir=None, progname=None, sources=None, includes=None, libs=None, libpath=None, binarykind=''): + def BlenderProg(self=None, builddir=None, progname=None, sources=None, libs=None, libpath=None, binarykind=''): global vcp print bc.HEADER+'Configuring program '+bc.ENDC+bc.OKGREEN+progname+bc.ENDC lenv = self.Clone() @@ -750,7 +750,6 @@ class BlenderEnvironment(SConsEnvironment): lenv.Append(LINKFLAGS = lenv['BF_OPENGL_LINKFLAGS']) if lenv['BF_PROFILE']: lenv.Append(LINKFLAGS = lenv['BF_PROFILE_LINKFLAGS']) - lenv.Append(CPPPATH=includes) if root_build_dir[0]==os.sep or root_build_dir[1]==':': lenv.Append(LIBPATH=root_build_dir + '/lib') lenv.Append(LIBPATH=libpath) diff --git a/source/blender/collada/CMakeLists.txt b/source/blender/collada/CMakeLists.txt index 420650a6ff7..fa582673746 100644 --- a/source/blender/collada/CMakeLists.txt +++ b/source/blender/collada/CMakeLists.txt @@ -61,4 +61,8 @@ SET(INC ENDIF(APPLE) -BLENDERLIB(bf_collada "${SRC}" "${INC}") +IF(WITH_BUILDINFO) + ADD_DEFINITIONS(-DNAN_BUILDINFO) +ENDIF(WITH_BUILDINFO) + +BLENDERLIB(bf_collada "${SRC}" "${INC}") \ No newline at end of file diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp index ca3aada80c0..72f280d7ce2 100644 --- a/source/blender/collada/DocumentExporter.cpp +++ b/source/blender/collada/DocumentExporter.cpp @@ -48,10 +48,14 @@ extern "C" #include "BLI_path_util.h" #include "BLI_fileops.h" #include "ED_keyframing.h" +#ifdef NAN_BUILDINFO +extern char build_rev[]; +#endif } #include "MEM_guardedalloc.h" +#include "BKE_blender.h" // version info #include "BKE_scene.h" #include "BKE_global.h" #include "BKE_main.h" @@ -1296,7 +1300,7 @@ private: int offset = 0; input.push_back(COLLADASW::Input(COLLADASW::JOINT, // constant declared in COLLADASWInputList.h COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, joints_source_id), offset++)); - input.push_back(COLLADASW::Input(COLLADASW::WEIGHT, + input.push_back(COLLADASW::Input(COLLADASW::WEIGHT, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, weights_source_id), offset++)); weights.setCount(me->totvert); @@ -1719,11 +1723,7 @@ public: // most widespread de-facto standard. texture.setProfileName("FCOLLADA"); texture.setChildElementName("bump"); -#ifdef WIN32 // currently, Windows builds are using revision 746 of OpenCollada while Linux and Mac are using an older revision 721 ep.addExtraTechniqueColorOrTexture(COLLADASW::ColorOrTexture(texture)); -#else - ep.setExtraTechniqueColorOrTexture(COLLADASW::ColorOrTexture(texture)); -#endif } } // performs the actual writing @@ -2536,6 +2536,15 @@ void DocumentExporter::exportCurrentScene(Scene *sce, const char* filename) // XXX ask blender devs about this? asset.setUnit("decimetre", 0.1); asset.setUpAxisType(COLLADASW::Asset::Z_UP); + // TODO: need an Author field in userpref + asset.getContributor().mAuthor = "Blender User"; +#ifdef NAN_BUILDINFO + char version_buf[128]; + sprintf(version_buf, "Blender %d.%02d.%d r%s", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION, build_rev); + asset.getContributor().mAuthoringTool = version_buf; +#else + asset.getContributor().mAuthoringTool = "Blender 2.5x"; +#endif asset.add(); // @@ -2596,4 +2605,3 @@ NOTES: * AnimationExporter::sample_animation enables all curves on armature, this is undesirable for a user */ - diff --git a/source/blender/collada/SConscript b/source/blender/collada/SConscript index 91c3a381272..09402dcda64 100644 --- a/source/blender/collada/SConscript +++ b/source/blender/collada/SConscript @@ -28,6 +28,7 @@ Import ('env') sources = env.Glob('*.cpp') +defs = [] # relative paths to include dirs, space-separated, string if env['OURPLATFORM']=='darwin': @@ -35,5 +36,7 @@ if env['OURPLATFORM']=='darwin': else: incs = '../blenlib ../blenkernel ../windowmanager ../makesdna ../makesrna ../editors/include ../../../intern/guardedalloc [OPENCOLLADA]/COLLADAStreamWriter/include [OPENCOLLADA]/COLLADABaseUtils/include [OPENCOLLADA]/COLLADAFramework/include [OPENCOLLADA]/COLLADASaxFrameworkLoader/include '.replace('[OPENCOLLADA]', env['BF_OPENCOLLADA_INC']) -env.BlenderLib ('bf_collada', sources, Split(incs), [], libtype='core', priority=200 ) +if env['BF_BUILDINFO']: + defs.append('NAN_BUILDINFO') +env.BlenderLib ('bf_collada', sources, Split(incs), defs, libtype='core', priority=200 ) -- cgit v1.2.3