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.
This commit is contained in:
Nathan Letwory 2010-08-26 06:58:32 +00:00
parent e7c4a0d53b
commit 92422ba452
5 changed files with 26 additions and 12 deletions

View File

@ -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

View File

@ -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)

View File

@ -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}")

View File

@ -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();
// <library_cameras>
@ -2596,4 +2605,3 @@ NOTES:
* AnimationExporter::sample_animation enables all curves on armature, this is undesirable for a user
*/

View File

@ -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 )