From 1b95d391dccbe52f9f1355748b71d89701f7ae69 Mon Sep 17 00:00:00 2001
From: Clemens Barth <barth@root-1.de>
Date: Fri, 14 Jan 2022 22:46:15 +0100
Subject: [PATCH] The addon is updated for Eevee/Cycles - part 1: the atoms get
 now a useful color by using nodes (material properties). The color used in
 the viewport shading ('solid mode') has been removed since it doesn't make
 sense anymore. Otherwise one always has to manually choose 'using nodes' in
 the material properties.

---
 io_mesh_atomic/pdb_import.py | 13 ++++++++++++-
 io_mesh_atomic/xyz_import.py |  4 +++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/io_mesh_atomic/pdb_import.py b/io_mesh_atomic/pdb_import.py
index dc687c602..18d9c2501 100644
--- a/io_mesh_atomic/pdb_import.py
+++ b/io_mesh_atomic/pdb_import.py
@@ -769,6 +769,9 @@ def draw_sticks_dupliverts(all_atoms,
 
     if use_sticks_color == False:
         stick_material = bpy.data.materials.new(ELEMENTS[-1].name)
+        stick_material.use_nodes = True
+        mat_P_BSDF = stick_material.node_tree.nodes['Principled BSDF']
+        mat_P_BSDF.inputs['Base Color'].default_value = ELEMENTS[-1].color
         stick_material.diffuse_color = ELEMENTS[-1].color
 
     # Sort the sticks and put them into a new list such that ...
@@ -1057,6 +1060,9 @@ def draw_sticks_skin(all_atoms,
     new_stick_mesh.modifiers[1].render_levels = sticks_subdiv_render
 
     stick_material = bpy.data.materials.new(ELEMENTS[-1].name)
+    stick_material.use_nodes = True
+    mat_P_BSDF = stick_material.node_tree.nodes['Principled BSDF']
+    mat_P_BSDF.inputs['Base Color'].default_value = ELEMENTS[-1].color
     stick_material.diffuse_color = ELEMENTS[-1].color
     new_stick_mesh.active_material = stick_material
 
@@ -1112,6 +1118,9 @@ def draw_sticks_normal(all_atoms,
                        coll_molecule):
 
     stick_material = bpy.data.materials.new(ELEMENTS[-1].name)
+    stick_material.use_nodes = True
+    mat_P_BSDF = stick_material.node_tree.nodes['Principled BSDF']
+    mat_P_BSDF.inputs['Base Color'].default_value = ELEMENTS[-1].color
     stick_material.diffuse_color = ELEMENTS[-1].color
 
     up_axis = Vector([0.0, 0.0, 1.0])
@@ -1336,8 +1345,10 @@ def import_pdb(Ball_type,
     # (e.g. hydrogen)
     for atom_type in atom_all_types_list:
         material = bpy.data.materials.new(atom_type[1])
+        material.use_nodes = True
+        mat_P_BSDF = material.node_tree.nodes['Principled BSDF']
+        mat_P_BSDF.inputs['Base Color'].default_value = atom_type[2]
         material.name = atom_type[0]
-        material.diffuse_color = atom_type[2]
         atom_material_list.append(material)
 
     # Now, we go through all atoms and give them a material. For all atoms ...
diff --git a/io_mesh_atomic/xyz_import.py b/io_mesh_atomic/xyz_import.py
index 270997f44..c54ef8ef8 100644
--- a/io_mesh_atomic/xyz_import.py
+++ b/io_mesh_atomic/xyz_import.py
@@ -487,8 +487,10 @@ def import_xyz(Ball_type,
         # Take the first atom
         atom = atoms_of_one_type[0]
         material = bpy.data.materials.new(atom.name)
+        material.use_nodes = True
+        mat_P_BSDF = material.node_tree.nodes['Principled BSDF']
+        mat_P_BSDF.inputs['Base Color'].default_value = atom.color
         material.name = atom.name
-        material.diffuse_color = atom.color
         atom_material_list.append(material)
 
     # Now, we go through all atoms and give them a material. For all atoms ...
-- 
GitLab