[Bf-extensions-cvs] [bda1b8bc] master: io_coat3D: adding many features and fixes
Samuli
noreply at git.blender.org
Fri Jul 17 23:09:06 CEST 2020
Commit: bda1b8bc98bc0315f1090c131fab19a3b282e047
Author: Samuli
Date: Sat Jul 18 00:08:57 2020 +0300
Branches: master
https://developer.blender.org/rBAbda1b8bc98bc0315f1090c131fab19a3b282e047
io_coat3D: adding many features and fixes
===================================================================
M io_coat3D/__init__.py
M io_coat3D/data.json
M io_coat3D/tex.py
A io_coat3D/texVR.py
===================================================================
diff --git a/io_coat3D/__init__.py b/io_coat3D/__init__.py
index 4aebee06..5d74a960 100644
--- a/io_coat3D/__init__.py
+++ b/io_coat3D/__init__.py
@@ -19,7 +19,7 @@
bl_info = {
"name": "3D-Coat Applink",
"author": "Kalle-Samuli Riihikoski (haikalle)",
- "version": (4, 9, 50),
+ "version": (4, 9, 34),
"blender": (2, 80, 0),
"location": "Scene > 3D-Coat Applink",
"description": "Transfer data between 3D-Coat/Blender",
@@ -36,7 +36,7 @@ else:
from bpy.app.handlers import persistent
from io_coat3D import tex
-#from io_coat3D import texVR
+from io_coat3D import texVR
import os
import ntpath
@@ -67,57 +67,6 @@ time_interval = 2.0
global_exchange_folder = ''
-
-
- at persistent
-def every_3_seconds():
- global global_exchange_folder
- global initial_settings
- path_ex = ''
-
- if(initial_settings):
- global_exchange_folder = set_exchange_folder()
- initial_settings = False
-
- coat3D = bpy.context.scene.coat3D
-
- Export_folder = global_exchange_folder
- Blender_folder = os.path.join(Export_folder, 'Blender')
-
- BlenderFolder = Blender_folder
- ExportFolder = Export_folder
-
- Blender_folder += ('%sexport.txt' % (os.sep))
- Export_folder += ('%sexport.txt' % (os.sep))
-
-
- if os.path.isfile(Export_folder):
-
- print('BLENDER -> 3DC -> BLENDER WORKFLLOW')
- DeleteExtra3DC()
- workflow1(ExportFolder)
- removeFile(Export_folder)
- removeFile(Blender_folder)
-
-
-
- elif os.path.isfile(Blender_folder):
-
- print('3DC -> BLENDER WORKFLLOW')
- DeleteExtra3DC()
- workflow2(BlenderFolder)
- removeFile(Blender_folder)
-
-
-
-
- return 3.0
-
- at persistent
-def load_handler(dummy):
- bpy.app.timers.register(every_3_seconds)
-
-
def removeFile(exportfile):
if (os.path.isfile(exportfile)):
os.remove(exportfile)
@@ -155,19 +104,44 @@ def set_exchange_folder():
if(os.path.isdir(exchange)):
bpy.coat3D['status'] = 1
+
if(platform == 'win32'):
+
exchange_path = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender' + os.sep + 'Exchange_folder.txt'
applink_folder = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender'
if(not(os.path.isdir(applink_folder))):
os.makedirs(applink_folder)
+
else:
+
exchange_path = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender' + os.sep + 'Exchange_folder.txt'
applink_folder = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender'
if(not(os.path.isdir(applink_folder))):
os.makedirs(applink_folder)
- file = open(exchange_path, "w")
- file.write("%s"%(coat3D.exchangedir))
- file.close()
+
+ if(os.path.isfile(exchange_path) == False):
+
+ file = open(exchange_path, "w")
+ file.write("%s"%(exchange_path))
+ file.close()
+
+ else:
+
+ exchangeline = open(exchange_path)
+ for line in exchangeline:
+ source = line
+ break
+ exchangeline.close()
+
+ if(source != coat3D.exchangedir and coat3D.exchangedir != '' and coat3D.exchangedir.rfind('Exchange') >= 0):
+
+ file = open(exchange_path, "w")
+ file.write("%s"%(coat3D.exchangedir))
+ file.close()
+ exchange = coat3D.exchangedir
+
+ else:
+ exchange = source
else:
if(platform == 'win32'):
@@ -300,7 +274,6 @@ def updatemesh(objekti, proxy, texturelist):
vertex_map_copy.data[loop_index].color = proxy.data.vertex_colors[0].data[loop_index].color
# UV -Sets
-
udim_textures = False
if(texturelist != []):
if(texturelist[0][0].startswith('100')):
@@ -311,7 +284,7 @@ def updatemesh(objekti, proxy, texturelist):
uv_count = len(proxy.data.uv_layers)
index = 0
- while(index < uv_count):
+ while(index < uv_count and len(proxy.data.polygons) == len(objekti.data.polygons)):
for poly in proxy.data.polygons:
for indi in poly.loop_indices:
if(proxy.data.uv_layers[index].data[indi].uv[0] != 0 and proxy.data.uv_layers[index].data[indi].uv[1] != 0):
@@ -319,11 +292,10 @@ def updatemesh(objekti, proxy, texturelist):
if(udim_textures):
udim = proxy.data.uv_layers[index].name
udim_index = int(udim[2:]) - 1
-
+
objekti.data.uv_layers[0].data[indi].uv[0] = proxy.data.uv_layers[index].data[indi].uv[0]
objekti.data.uv_layers[0].data[indi].uv[1] = proxy.data.uv_layers[index].data[indi].uv[1]
- if(udim_textures):
- objekti.data.uv_layers[0].data[indi].uv[0] += udim_index
+
index = index + 1
# Mesh Copy
@@ -333,6 +305,54 @@ def updatemesh(objekti, proxy, texturelist):
for ind, v in enumerate(objekti.data.vertices):
v.co = proxy.data.vertices[ind].co
+class SCENE_OT_getback(bpy.types.Operator):
+ bl_idname = "getback.pilgway_3d_coat"
+ bl_label = "Export your custom property"
+ bl_description = "Export your custom property"
+ bl_options = {'UNDO'}
+
+ def invoke(self, context, event):
+
+ global global_exchange_folder
+ global initial_settings
+ path_ex = ''
+
+ if(initial_settings):
+ global_exchange_folder = set_exchange_folder()
+ initial_settings = False
+
+ Export_folder = global_exchange_folder
+ Blender_folder = os.path.join(Export_folder, 'Blender')
+
+ BlenderFolder = Blender_folder
+ ExportFolder = Export_folder
+
+ Blender_folder += ('%sexport.txt' % (os.sep))
+ Export_folder += ('%sexport.txt' % (os.sep))
+
+ if (bpy.app.background == False):
+ if os.path.isfile(Export_folder):
+
+ print('BLENDER -> 3DC -> BLENDER WORKFLLOW')
+ DeleteExtra3DC()
+ workflow1(ExportFolder)
+ removeFile(Export_folder)
+ removeFile(Blender_folder)
+
+
+
+ elif os.path.isfile(Blender_folder):
+
+ print('3DC -> BLENDER WORKFLLOW')
+ DeleteExtra3DC()
+ workflow2(BlenderFolder)
+ removeFile(Blender_folder)
+
+
+
+ return {'FINISHED'}
+
+
class SCENE_OT_folder(bpy.types.Operator):
bl_idname = "update_exchange_folder.pilgway_3d_coat"
bl_label = "Export your custom property"
@@ -760,11 +780,11 @@ class SCENE_OT_export(bpy.types.Operator):
if(coat3D.type == 'autopo'):
coat3D.bring_retopo = True
coat3D.bring_retopo_path = checkname
- bpy.ops.export_scene.fbx(filepath=checkname, use_selection=True, use_mesh_modifiers=coat3D.exportmod, axis_forward='-Z', axis_up='Y')
+ bpy.ops.export_scene.fbx(filepath=checkname, global_scale = 0.01, use_selection=True, use_mesh_modifiers=coat3D.exportmod, axis_forward='-Z', axis_up='Y')
elif (coat3D.type == 'vox'):
coat3D.bring_retopo = False
- bpy.ops.export_scene.fbx(filepath=coa.applink_address, global_scale=1, use_selection=True,
+ bpy.ops.export_scene.fbx(filepath=coa.applink_address, global_scale = 0.01, use_selection=True,
use_mesh_modifiers=coat3D.exportmod, axis_forward='-Z', axis_up='Y')
else:
@@ -803,11 +823,12 @@ class SCENE_OT_export(bpy.types.Operator):
if(node.name.startswith('3DC_') == True):
material.material.node_tree.nodes.remove(node)
-
+
for ind, mat_list in enumerate(mod_mat_list):
- if(mat_list == objekti.name):
+ if(mat_list == '__' + objekti.name):
for ind, mat in enumerate(mod_mat_list[mat_list]):
objekti.material_slots[mod_mat_list[mat_list][ind][0]].material = mod_mat_list[mat_list][ind][1]
+
bpy.context.scene.render.engine = active_render
return {'FINISHED'}
@@ -906,10 +927,14 @@ def new_ref_function(new_applink_address, nimi):
refmesh.coat3D.applink_name = ''
refmesh.coat3D.applink_address = ''
refmesh.coat3D.type = ''
+ copymesh.scale = (1,1,1)
+ copymesh.coat3D.applink_scale = (1,1,1)
+ copymesh.location = (0,0,0)
+ copymesh.rotation_euler = (0,0,0)
def blender_3DC_blender(texturelist):
-
+
coat3D = bpy.context.scene.coat3D
old_materials = bpy.data.materials.keys()
@@ -965,7 +990,6 @@ def blender_3DC_blender(texturelist):
for oname in object_list:
objekti = bpy.data.objects[oname]
-
if(objekti.coat3D.applink_mesh == True):
path3b_n = coat3D.exchangedir
@@ -1034,7 +1058,7 @@ def blender_3DC_blender(texturelist):
if objekti.coat3D.applink_firsttime == True and objekti.coat3D.type == 'vox':
objekti.select_set(True)
- objekti.scale = (1, 1, 1)
+ objekti.scale = (0.01, 0.01, 0.01)
objekti.rotation_euler[0] = 1.5708
objekti.rotation_euler[2] = 1.5708
bpy.ops.object.transforms_to_deltas(mode='ROT')
@@ -1062,8 +1086,7 @@ def blender_3DC_blender(texturelist):
#delete_materials_from_end(keep_materials_count, obj_proxy)
- for index, material in enumerate(objekti.material_slots):
- obj_proxy.material_slots[index-1].material = material.material
+
updatemesh(objekti,obj_proxy, texturelist)
bpy.context.view_layer.objects.active = objekti
@@ -1247,6 +1270,7 @@ def blender_3DC(texturel
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list