forked from bartvdbraak/blender
fix for [#18040] FBX writes incorrect relative paths.
http://projects.blender.org/tracker/index.php?func=detail&aid=18040&group_id=9&atid=125
This commit is contained in:
parent
aed82a1863
commit
cefae5e1b4
@ -66,8 +66,6 @@ import BPyMesh
|
|||||||
import BPySys
|
import BPySys
|
||||||
import BPyMessages
|
import BPyMessages
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
## This was used to make V, but faster not to do all that
|
## This was used to make V, but faster not to do all that
|
||||||
##valid = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_,.()[]{}'
|
##valid = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_,.()[]{}'
|
||||||
##v = range(255)
|
##v = range(255)
|
||||||
@ -184,7 +182,19 @@ def sane_texname(data): return sane_name(data, sane_name_mapping_tex)
|
|||||||
def sane_takename(data): return sane_name(data, sane_name_mapping_take)
|
def sane_takename(data): return sane_name(data, sane_name_mapping_take)
|
||||||
def sane_groupname(data): return sane_name(data, sane_name_mapping_group)
|
def sane_groupname(data): return sane_name(data, sane_name_mapping_group)
|
||||||
|
|
||||||
|
def derived_paths(fname_orig, basepath, FORCE_CWD=False):
|
||||||
|
'''
|
||||||
|
fname_orig - blender path, can be relative
|
||||||
|
basepath - fname_rel will be relative to this
|
||||||
|
FORCE_CWD - dont use the basepath, just add a ./ to the filename.
|
||||||
|
use when we know the file will be in the basepath.
|
||||||
|
'''
|
||||||
|
fname = Blender.sys.expandpath(fname_orig)
|
||||||
|
fname_strip = strip_path(fname)
|
||||||
|
if FORCE_CWD: fname_rel = './' + fname_strip
|
||||||
|
else: fname_rel = Blender.sys.relpath(fname, basepath)
|
||||||
|
if fname_rel.startswith('//'): fname_rel = '.' + fname_rel[1:]
|
||||||
|
return fname, fname_strip, fname_rel
|
||||||
|
|
||||||
|
|
||||||
def mat4x4str(mat):
|
def mat4x4str(mat):
|
||||||
@ -342,6 +352,8 @@ def write(filename, batch_objects = None, \
|
|||||||
|
|
||||||
# end batch support
|
# end batch support
|
||||||
|
|
||||||
|
# Use this for working out paths relative to the export location
|
||||||
|
basepath = Blender.sys.dirname(filename)
|
||||||
|
|
||||||
# ----------------------------------------------
|
# ----------------------------------------------
|
||||||
# storage classes
|
# storage classes
|
||||||
@ -1141,10 +1153,9 @@ def write(filename, batch_objects = None, \
|
|||||||
Property: "Width", "int", "",0
|
Property: "Width", "int", "",0
|
||||||
Property: "Height", "int", "",0''')
|
Property: "Height", "int", "",0''')
|
||||||
if tex:
|
if tex:
|
||||||
fname = tex.filename
|
fname, fname_strip, fname_rel = derived_paths(tex.filename, basepath, EXP_IMAGE_COPY)
|
||||||
fname_strip = strip_path(fname)
|
|
||||||
else:
|
else:
|
||||||
fname = fname_strip = ''
|
fname = fname_strip = fname_rel = ''
|
||||||
|
|
||||||
file.write('\n\t\t\tProperty: "Path", "charptr", "", "%s"' % fname_strip)
|
file.write('\n\t\t\tProperty: "Path", "charptr", "", "%s"' % fname_strip)
|
||||||
|
|
||||||
@ -1163,7 +1174,7 @@ def write(filename, batch_objects = None, \
|
|||||||
|
|
||||||
file.write('\n\t\tFilename: "%s"' % fname_strip)
|
file.write('\n\t\tFilename: "%s"' % fname_strip)
|
||||||
if fname_strip: fname_strip = '/' + fname_strip
|
if fname_strip: fname_strip = '/' + fname_strip
|
||||||
file.write('\n\t\tRelativeFilename: "fbx%s"' % fname_strip) # make relative
|
file.write('\n\t\tRelativeFilename: "%s"' % fname_rel) # make relative
|
||||||
file.write('\n\t}')
|
file.write('\n\t}')
|
||||||
|
|
||||||
|
|
||||||
@ -1202,13 +1213,14 @@ def write(filename, batch_objects = None, \
|
|||||||
}''')
|
}''')
|
||||||
|
|
||||||
file.write('\n\t\tMedia: "Video::%s"' % texname)
|
file.write('\n\t\tMedia: "Video::%s"' % texname)
|
||||||
|
|
||||||
if tex:
|
if tex:
|
||||||
fname = tex.filename
|
fname, fname_strip, fname_rel = derived_paths(tex.filename, basepath, EXP_IMAGE_COPY)
|
||||||
file.write('\n\t\tFileName: "%s"' % strip_path(fname))
|
|
||||||
file.write('\n\t\tRelativeFilename: "fbx/%s"' % strip_path(fname)) # need some make relative command
|
|
||||||
else:
|
else:
|
||||||
file.write('\n\t\tFileName: ""')
|
fname = fname_strip = fname_rel = ''
|
||||||
file.write('\n\t\tRelativeFilename: "fbx"')
|
|
||||||
|
file.write('\n\t\tFileName: "%s"' % fname_strip)
|
||||||
|
file.write('\n\t\tRelativeFilename: "%s"' % fname_rel) # need some make relative command
|
||||||
|
|
||||||
file.write('''
|
file.write('''
|
||||||
ModelUVTranslation: 0,0
|
ModelUVTranslation: 0,0
|
||||||
@ -2658,7 +2670,7 @@ Takes: {''')
|
|||||||
|
|
||||||
# copy images if enabled
|
# copy images if enabled
|
||||||
if EXP_IMAGE_COPY:
|
if EXP_IMAGE_COPY:
|
||||||
copy_images( Blender.sys.dirname(filename), [ tex[1] for tex in textures if tex[1] != None ])
|
copy_images( basepath, [ tex[1] for tex in textures if tex[1] != None ])
|
||||||
|
|
||||||
print 'export finished in %.4f sec.' % (Blender.sys.time() - start_time)
|
print 'export finished in %.4f sec.' % (Blender.sys.time() - start_time)
|
||||||
return True
|
return True
|
||||||
|
Loading…
Reference in New Issue
Block a user