[Bf-extensions-cvs] [bbd5fd92] master: Better uvmap painting support + redesing of code
Kalle-Samuli Riihikoski
noreply at git.blender.org
Sun Mar 29 18:57:30 CEST 2020
Commit: bbd5fd92a3d95389d6489d78cc062539a6f1e0e4
Author: Kalle-Samuli Riihikoski
Date: Sun Mar 29 19:57:23 2020 +0300
Branches: master
https://developer.blender.org/rBAbbd5fd92a3d95389d6489d78cc062539a6f1e0e4
Better uvmap painting support + redesing of code
===================================================================
M io_coat3D/__init__.py
M io_coat3D/tex.py
===================================================================
diff --git a/io_coat3D/__init__.py b/io_coat3D/__init__.py
index 7275e158..189f28d1 100644
--- a/io_coat3D/__init__.py
+++ b/io_coat3D/__init__.py
@@ -19,12 +19,13 @@
bl_info = {
"name": "3D-Coat Applink",
"author": "Kalle-Samuli Riihikoski (haikalle)",
- "version": (5, 0, 00),
+ "version": (4, 9, 34),
"blender": (2, 80, 0),
"location": "Scene > 3D-Coat Applink",
"description": "Transfer data between 3D-Coat/Blender",
"warning": "",
"doc_url": "{BLENDER_MANUAL_URL}/addons/import_export/coat3D.html",
+
"category": "Import-Export",
}
@@ -33,16 +34,21 @@ if "bpy" in locals():
importlib.reload(tex)
else:
from . import tex
+from bpy.app.handlers import persistent
from io_coat3D import tex
+#from io_coat3D import texVR
+
import os
import ntpath
import re
import shutil
import pathlib
+
import time
import bpy
+
import subprocess
from bpy.types import PropertyGroup
from bpy.props import (
@@ -57,8 +63,66 @@ bpy.coat3D = dict()
bpy.coat3D['active_coat'] = ''
bpy.coat3D['status'] = 0
-run_background_update = False
+initial_settings = True
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)
+
def folder_size(path):
@@ -493,15 +557,7 @@ class SCENE_OT_export(bpy.types.Operator):
def invoke(self, context, event):
bpy.ops.export_applink.pilgway_3d_coat()
- global run_background_update
- if run_background_update:
- if bpy.app.timers.is_registered(run_import_periodically):
- bpy.app.timers.unregister(run_import_periodically)
- run_background_update = False
- else:
- if not bpy.app.timers.is_registered(run_import_periodically):
- bpy.app.timers.register(run_import_periodically, persistent=True)
- run_background_update = True
+
return {'FINISHED'}
def execute(self, context):
@@ -756,575 +812,575 @@ class SCENE_OT_export(bpy.types.Operator):
bpy.context.scene.render.engine = active_render
return {'FINISHED'}
-class SCENE_OT_import(bpy.types.Operator):
- bl_idname = "import_applink.pilgway_3d_coat"
- bl_label = "import your custom property"
- bl_description = "import your custom property"
- bl_options = {'UNDO'}
- def invoke(self, context, event):
- bpy.ops.import_applink.pilgway_3d_coat()
- global run_background_update
- if run_background_update:
- if bpy.app.timers.is_registered(run_import_periodically):
- bpy.app.timers.unregister(run_import_periodically)
- run_background_update = False
+def DeleteExtra3DC():
- else:
- if not bpy.app.timers.is_registered(run_import_periodically):
- bpy.app.timers.register(run_import_periodically, persistent=True)
- run_background_update = True
+ for node_group in bpy.data.node_groups:
+ if(node_group.users == 0):
+ bpy.data.node_groups.remove(node_group)
- return {'FINISHED'}
+ for mesh in bpy.data.meshes:
+ if(mesh.users == 0 and mesh.coat3D.name == '3DC'):
+ bpy.data.meshes.remove(mesh)
- def execute(self, context):
+ for material in bpy.data.materials:
+ img_list = []
+ if (material.users == 1 and material.coat3D.name == '3DC'):
+ if material.use_nodes == True:
+ for node in material.node_tree.nodes:
+ if node.type == 'TEX_IMAGE' and node.name.startswith('3DC'):
+ img_list.append(node.image)
+ if img_list != []:
+ for del_img in img_list:
+ bpy.data.images.remove(del_img)
+
+ bpy.data.materials.remove(material)
+
+ image_del_list = []
+ for image in bpy.data.images:
+ if (image.name.startswith('3DC')):
+ if image.users == 0:
+ image_del_list.append(image.name)
+
+ if (image_del_list != []):
+ for image in image_del_list:
+ bpy.data.images.remove(bpy.data.images[image])
- global run_background_update
- run_background_update = True
+def new_ref_function(new_applink_address, nimi):
- for node_group in bpy.data.node_groups:
- if(node_group.users == 0):
- bpy.data.node_groups.remove(node_group)
+ create_collection = True
+ for collection in bpy.data.collections:
+ if collection.name == 'Applink_Objects':
+ create_collection = False
- for mesh in bpy.data.meshes:
- if(mesh.users == 0 and mesh.coat3D.name == '3DC'):
- bpy.data.meshes.remove(mesh)
+ if create_collection:
+ bpy.data.collections.new('Applink_Objects')
- for material in bpy.data.materials:
- img_list = []
- if (material.users == 1 and material.coat3D.name == '3DC'):
- if material.use_nodes == True:
- for node in material.node_tree.nodes:
- if node.type == 'TEX_IMAGE' and node.name.startswith('3DC'):
- img_list.append(node.image)
- if img_list != []:
- for del_img in img_list:
- bpy.data.images.remove(del_img)
+ coll_items = bpy.context.scene.collection.children.items()
- bpy.data.materials.remove(material)
+ add_applink_collection = True
+ for coll in coll_items:
+ if coll[0] == 'Applink_Objects':
+ add_applink_collection = False
- image_del_list = []
- for image in bpy.data.images:
- if (image.name.startswith('3DC')):
- if image.users == 0:
- image_del_list.append(image.name)
+ if add_applink_collection:
+ bpy.context.scene.collection.children.link(bpy.data.collections['Applink_Objects'])
- if (image_del_list != []):
- for image in image_del_list:
- bpy.data.images.remove(bpy.data.images[image])
+ bpy.context.view_layer.active_layer_collection = bpy.context.view_layer.layer_collection.children['Applink_Objects']
- coat3D = bpy.context.scene.coat3D
- coat = bpy.coat3D
- coat3D.exchangedir = set_exchange_folder()
+ old_objects = bpy.data.objects.keys()
+ object_list = []
- texturelist = make_texture_list(coat3D.exchangedir)
- for texturepath in texturelist:
- for image in bpy.data.images:
- if(image.filepath == texturepath[3] and image.users == 0):
- bpy.data.images.remove(image)
+ bpy.ops.import_scene.fbx(filepath=new_applink_address, global_scale = 0.01,axis_forward='X', axis_up='Y',use_custom_normals=False)
+ new_objects = bpy.data.objects.keys()
+ diff_objects = [i for i in new_objects if i not in old_objects]
+ texturelist = []
- kokeilu = coat3D.exchangedir
- Blender_folder = ("%s%sBlender"%(kokeilu,os.sep))
- Blender_export = Blender_folder
- path3b_now = coat3D.exchangedir
- path3b_now += ('last_saved_3b_file.txt')
- Blender_export += ('%sexport.txt'%(os.sep))
- new_applink_address = 'False'
- new_object = False
- new_ref_object = False
-
- exportfile3 = coat3D.exchangedir
- exportfile3 += ('%sexport.txt' % (os.sep))
- if(os.path.isfile(Blender_export)):
- obj_pathh = open(Blender_export)
- new_object = True
- for line in obj_pathh:
- new_applink_address = line
- break
- obj_pathh.close()
+ for diff_object in diff_objects:
- for scene_objects in bpy.context.collection.all_objects:
- if(scene_objects.type == 'MESH'):
- if(scene_objects.coat3D.applink_address == new_applink_address):
- new_object = False
+ refmesh = bpy.data.objects[nimi]
+ copymesh = bpy.data.objects[nimi].copy()
+ copymesh.data = bpy.data.objects[diff_object].data
+ copymesh.coat3D.applink_name = bpy.data.objects[diff_object].data.name
+ copymesh.coat3D.applink_address = refmesh.coat3D.applink_address
+ ne_name = bpy.data.objects[diff_object].data.name
- elif(os.path.isfile(exportfile3)):
- obj_pathh = open(exportfile3)
+ copymesh.coat3D.type = 'ppp'
+ copymesh.coat3D.retopo = True
- for line in obj_pathh:
- new_applink_address = line
- break
- obj_pathh.close()
+ bpy.data.collections['Applink_Objects'].objects.link(copymesh)
- for scene_objects in bpy.context.collection.all_objects:
- if(scene_objects.type == 'MESH'):
- if(scene_objects.coat3D.applink_address == new_applink_address and scene_objects.coat3D.type == 'ref'):
- scene_objects.coat3D.type == ''
-
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list