A single vertex can have multiple colors at the same time, because it can belong to multiple faces (with different colors). The vertex colors are also stored inper face loops and not in vertices themselves.:
There is no way to set color to single face-loop element in UI, you surely
Vertex colors can set vertex color to vertex (which will propagate to all the associated face-loops vertices) by drawing over itbe viewed in Vertex Paint mode. This results in the color being interpolated over all the surrounding facesIn this mode individual vertices can also be edited with brushes:
But you can limit theThe drawing onlycan be constrained to selected faces, but not individualselected vertices. Blender doesn't allow this from the UI like other software you mentioned (Max).
With thisHere is a script that when run in Text editor will add panel to properties (N) so you can also achieve non-smoothassign vertex colors (here some vector displacement visualized on faces)to vertices in edit-mode:
The viewing of vertex colors is still best in vertex paint mode, having this in panel would clutter it.
Code:
import bpy
import bmesh
class VertexColEditPanel(bpy.types.Panel):
bl_label = "Vertex Colors"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
@classmethod
def poll(self, context):
ob = context.active_object
try:
return ob and ob.type == 'MESH' and ob.mode == 'EDIT'
except (AttributeError, KeyError, TypeError):
return False
def draw(self, context):
layout = self.layout
bm = bmesh.from_edit_mesh(context.active_object.data)
if bm.select_mode != {'VERT'}:
layout.label("Vertex select only", icon = 'INFO')
return
selected = [vert.index for vert in bm.verts if vert.select]
if not selected:
layout.label("Nothing selected", icon = 'INFO')
else:
layout.template_list("MESH_UL_uvmaps_vcols", "vcols", context.active_object.data, "vertex_colors", context.active_object.data.vertex_colors, "active_index", rows=1)
row = layout.row(align=True)
row.prop(context.scene, 'color_picker', text="")
row.operator("vertex_col.apply")
class ApplyVertCol(bpy.types.Operator):
bl_idname = "vertex_col.apply"
bl_label = "Assign"
bl_description = "Assign color to selected vertices for selected vertex color layer"
def execute(self, context):
me = context.active_object.data
bm = bmesh.from_edit_mesh(me)
selected = [vert.index for vert in bm.verts if vert.select]
bpy.ops.object.mode_set(mode='EDIT', toggle=True)
for face in me.polygons:
for vert_idx, loop_idx in zip(face.vertices, face.loop_indices):
if vert_idx in selected:
me.vertex_colors[me.vertex_colors.active_index].data[loop_idx].color = context.scene.color_picker
bpy.ops.object.mode_set(mode='EDIT', toggle=True)
return{'FINISHED'}
bpy.utils.register_module(__name__)
bpy.types.Scene.color_picker = bpy.props.FloatVectorProperty(subtype='COLOR_GAMMA', default=(1,1,1), min=0.0, max=1.0, description="Color Picker")