[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